@jsvision/forms / FormDialogOptions
Interface: FormDialogOptions<S, I>
Defined in: form-dialog.ts:37
Options for formDialog.
Type Parameters
S
S extends z.ZodObject<z.ZodRawShape>
the Zod object schema type.
I
I
the raw initial value shape (keys constrained to the schema).
Properties
asyncDebounceMs?
optionalasyncDebounceMs?:number
Defined in: form-dialog.ts:45
Debounce, in milliseconds, before an async validator runs after a change. Defaults to 300.
asyncValidators?
optionalasyncValidators?: { [K in string | number | symbol]?: AsyncValidator<I[K]> }
Defined in: form-dialog.ts:43
Opt-in per-field async validators; each force-runs as part of the OK submit gate.
body
body: (
form) =>View
Defined in: form-dialog.ts:49
Build the dialog body — bind widgets to form.field(name).value. Runs once, when the dialog opens.
Parameters
form
Form<S, I>
Returns
View
height
height:
number
Defined in: form-dialog.ts:60
Dialog height in cells. Required (a placement rect is applied only when both width and height are given).
initial
initial:
I
Defined in: form-dialog.ts:41
The raw initial editing values (e.g. a coerced-number field is initialised as a string).
okText?
optionalokText?:string
Defined in: form-dialog.ts:56
OK button label (tilde-marked hotkey, e.g. '~S~ave'). Defaults to '~O~K'.
onSubmit?
optionalonSubmit?: (values) =>void|Promise<void>
Defined in: form-dialog.ts:54
Optional save callback run inside the submit gate with the coerced values. If it rejects, the dialog stays open and OK re-enables; surface the failure through your own body UI (none is minted).
Parameters
values
output<S>
Returns
void | Promise<void>
schema
schema:
S
Defined in: form-dialog.ts:39
A Zod object schema (a non-string field edited as text must use z.coerce.*).
title?
optionaltitle?:string
Defined in: form-dialog.ts:47
Title centered in the dialog's top border.
width
width:
number
Defined in: form-dialog.ts:58
Dialog width in cells. Required — the body is opaque, so the dialog cannot size itself.