import clsx from "clsx"; import type { CSSProperties } from "react"; import type { FormBuilderOptions, FormOptions } from "../../../interfaces/index.js"; import { getComponent } from "../../../registries/components"; import { FormBuilder as DefaultFormBuilder } from "./FormBuilder"; import { FormEditCTAs as DefaultFormEditCTAs } from "./FormEditCtas"; import { FormParameters as DefaultFormParameters } from "./FormParameters"; import { FormBuilderEvents } from "./useFormBuilder"; import { useFormEdit, UseFormEditHookProps } from "./useFormEdit"; export interface FormEditProps extends UseFormEditHookProps, FormBuilderEvents { options?: FormBuilderOptions & FormOptions; layout?: "html5" | "choicesjs" | "react"; className?: string; style?: CSSProperties; } export function FormEdit({ form: initialForm, typeChoices, displayChoices, enableTags, onSubmit: initialOnSubmit, onCopy: initialOnCopy, className, style, ...props }: FormEditProps) { const { form, isValid, setChange, hasRedo, hasChanged, hasUndo, redo, undo, reset, onSubmit, onCopy } = useFormEdit({ form: initialForm, typeChoices, displayChoices, enableTags, onSubmit: initialOnSubmit, onCopy: initialOnCopy }); const FormParameters = getComponent("FormParameters"); const FormBuilder = getComponent("FormBuilder"); const FormEditCTAs = getComponent("FormEditCTAs"); return (
{ setChange("components", components); }} />
); }