From 236c0bad19a33ad61ee35641a1972ec26fa16f1c Mon Sep 17 00:00:00 2001 From: yassinedorbozgithub Date: Wed, 11 Jun 2025 11:00:49 +0100 Subject: [PATCH] fix: apply feedback --- .../content-types/ContentTypeForm.tsx | 26 +++++++----------- .../content-types/components/FieldInput.tsx | 27 ++++++++++++------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/frontend/src/components/content-types/ContentTypeForm.tsx b/frontend/src/components/content-types/ContentTypeForm.tsx index 260438fd..ffee9df7 100644 --- a/frontend/src/components/content-types/ContentTypeForm.tsx +++ b/frontend/src/components/content-types/ContentTypeForm.tsx @@ -24,7 +24,6 @@ import { IContentType, IContentTypeAttributes, } from "@/types/content-type.types"; -import { slugify } from "@/utils/string"; import { FieldInput } from "./components/FieldInput"; import { FIELDS_FORM_DEFAULT_VALUES } from "./constants"; @@ -44,10 +43,12 @@ export const ContentTypeForm: FC> = ({ formState: { errors }, handleSubmit, } = useForm({ - defaultValues: contentType || { - name: "", - fields: FIELDS_FORM_DEFAULT_VALUES, - }, + defaultValues: contentType + ? { name: contentType.name, fields: contentType.fields } + : { + name: "", + fields: FIELDS_FORM_DEFAULT_VALUES, + }, }); const { append, fields, remove } = useFieldArray({ name: "fields", @@ -119,19 +120,10 @@ export const ContentTypeForm: FC> = ({ > { - const fieldName = contentType?.fields?.find( - ({ name }) => name === field.name, - )?.name; - - if (!fieldName) { - setValue(`fields.${idx}.name`, value ? slugify(value) : ""); - } - }} - onRemove={() => { - remove(idx); - }} + setValue={setValue} /> ))} diff --git a/frontend/src/components/content-types/components/FieldInput.tsx b/frontend/src/components/content-types/components/FieldInput.tsx index 0294971a..fb929add 100644 --- a/frontend/src/components/content-types/components/FieldInput.tsx +++ b/frontend/src/components/content-types/components/FieldInput.tsx @@ -9,23 +9,28 @@ import DeleteOutlineIcon from "@mui/icons-material/DeleteOutline"; import { MenuItem } from "@mui/material"; import { useMemo } from "react"; -import { Control, Controller } from "react-hook-form"; +import { Control, Controller, UseFormSetValue } from "react-hook-form"; import { IconButton } from "@/app-components/buttons/IconButton"; import { Input } from "@/app-components/inputs/Input"; import { useTranslate } from "@/hooks/useTranslate"; import { ContentFieldType, IContentType } from "@/types/content-type.types"; +import { slugify } from "@/utils/string"; import { READ_ONLY_FIELDS } from "../constants"; export const FieldInput = ({ idx, - ...props + name, + remove, + control, + setValue, }: { idx: number; + name: string; + remove: (index?: number | number[]) => void; control: Control; - onRemove?: () => void; - onLabelChange?: (value: string) => void; + setValue: UseFormSetValue; }) => { const { t } = useTranslate(); const isDisabled = useMemo(() => idx < READ_ONLY_FIELDS.length, [idx]); @@ -36,13 +41,13 @@ export const FieldInput = ({ variant="text" color="error" size="medium" - onClick={() => props.onRemove?.()} + onClick={() => remove(idx)} disabled={isDisabled} > ( @@ -53,7 +58,11 @@ export const FieldInput = ({ error={!!fieldState.error} helperText={fieldState.error?.message} onChange={(e) => { - props?.onLabelChange?.(e.target.value); + const value = e.target.value; + + if (!name) { + setValue(`fields.${idx}.name`, value ? slugify(value) : ""); + } field.onChange(e); }} /> @@ -64,11 +73,11 @@ export const FieldInput = ({ render={({ field }) => ( )} - control={props.control} + control={control} /> (