From 4bcaf6c786bb1a5fe36c7350f3c03917009f5196 Mon Sep 17 00:00:00 2001 From: yassinedorbozgithub Date: Fri, 4 Oct 2024 14:02:35 +0100 Subject: [PATCH] fix(frontend): instable blocks type --- .../visual-editor/form/TextMessageForm.tsx | 17 ++++------ .../form/inputs/triggers/PatternsInput.tsx | 17 ++++------ .../visual-editor/form/utils/inputControls.ts | 34 +++++++++++++++++++ 3 files changed, 48 insertions(+), 20 deletions(-) create mode 100644 frontend/src/components/visual-editor/form/utils/inputControls.ts diff --git a/frontend/src/components/visual-editor/form/TextMessageForm.tsx b/frontend/src/components/visual-editor/form/TextMessageForm.tsx index b9b6eb4c..4b0ce80c 100644 --- a/frontend/src/components/visual-editor/form/TextMessageForm.tsx +++ b/frontend/src/components/visual-editor/form/TextMessageForm.tsx @@ -17,6 +17,7 @@ import { IBlockAttributes } from "@/types/block.types"; import { useBlock } from "./BlockFormProvider"; import { FormSectionTitle } from "./FormSectionTitle"; import ReplacementTokens from "./inputs/ReplacementTokens"; +import { getInputControls } from "./utils/inputControls"; const TextMessageForm = () => { const block = useBlock(); @@ -26,15 +27,6 @@ const TextMessageForm = () => { register, formState: { errors }, } = useFormContext(); - const getInputProps = (index: number) => { - return { - ...register(`message.${index}`, { - required: t("message.message_is_required"), - }), - error: !!errors?.message?.[index], - helperText: errors?.message?.[index]?.message, - }; - }; return ( @@ -50,7 +42,12 @@ const TextMessageForm = () => { = ({ value, onChange }) => { register, formState: { errors }, } = useFormContext(); - const getInputProps = (index: number) => { - return { - ...register(`message.${index}`, { - required: t("message.text_is_required"), - }), - error: !!errors?.message?.[index], - helperText: errors?.message?.[index]?.message, - }; - }; const addInput = () => { setPatterns([...patterns, createValueWithId("")]); }; @@ -87,7 +79,12 @@ const PatternsInput: FC = ({ value, onChange }) => { idx={idx} value={value} onChange={updateInput(idx)} - getInputProps={getInputProps} + getInputProps={getInputControls( + "label", + errors, + register, + t("message.text_is_required"), + )} /> )) diff --git a/frontend/src/components/visual-editor/form/utils/inputControls.ts b/frontend/src/components/visual-editor/form/utils/inputControls.ts new file mode 100644 index 00000000..ec16cc1b --- /dev/null +++ b/frontend/src/components/visual-editor/form/utils/inputControls.ts @@ -0,0 +1,34 @@ +/* + * Copyright © 2024 Hexastack. All rights reserved. + * + * Licensed under the GNU Affero General Public License v3.0 (AGPLv3) with the following additional terms: + * 1. The name "Hexabot" is a trademark of Hexastack. You may not use this name in derivative works without express written permission. + * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). + */ + +import { + Path, + FieldErrors, + FieldValues, + UseFormRegister, +} from "react-hook-form"; + +export const getInputControls = + ( + field: string, + errors: FieldErrors, + register: UseFormRegister, + requiredMessage?: string, + ) => + (index: number) => ({ + ...register( + `${field}.${index}` as Path, + requiredMessage + ? { + required: requiredMessage, + } + : {}, + ), + error: !!errors?.[field]?.[index], + helperText: errors?.[field]?.[index]?.message, + });