Skip to main content

FormBuilder

The main builder component. Combines a drag-and-drop canvas, toolbox, and editor sidebar.

<FormBuilder
ref={builderRef}
config={config}
form={{ component: FormWrapper }}
initialData={savedForm}
onChange={(structure) => {}}
onSubmit={(formData) => {}}
/>

Props

PropTypeDescription
configConfigComponent registry (required)
refRef<FormBuilderHandle>Imperative handle
formFormConfigCustom form wrapper for preview mode
initialDataSerializedFormItem[]Pre-populate the canvas
onChange(data: SerializedFormItem[]) => voidFires on drag, edit, or delete
onSubmit(data: Record<string, unknown>) => voidFires when default form is submitted

Imperative handle

interface FormBuilderHandle {
getFormItems(): SerializedFormItem[]
reset(): void
}
const ref = useRef<FormBuilderHandle>(null)
// ...
ref.current?.getFormItems() // current form structure
ref.current?.reset() // clear all items

Serialization

import { serializeFormItems, deserializeFormItems } from 'fjorm'

// Export
const json: SerializedFormItem[] = serializeFormItems(formItems)

// Rehydrate
const formItems: FormItem[] = deserializeFormItems(json, config)