export type InitialErrors<V extends Validator> =
| ValidationError<PossibleError<V>>[]
| Iterable<readonly [Id, FieldError<PossibleError<V>>[]]>;
const UI_OPTIONS_REGISTRY_KEY = "uiOptionsRegistry";
export type UiOptionsRegistryOption = keyof UiOptionsRegistry extends never
[UI_OPTIONS_REGISTRY_KEY]?: UiOptionsRegistry;
[UI_OPTIONS_REGISTRY_KEY]: UiOptionsRegistry;
export interface FormOptions<T, V extends Validator>
extends UiOptionsRegistryOption {
translation: Translation;
resolver: (ctx: FormInternalContext<V>) => ResolveFieldType;
extraUiOptions?: ExtraUiOptions;
fieldsValidationMode?: FieldsValidationMode;
* @default DEFAULT_ID_PREFIX
* @default DEFAULT_ID_SEPARATOR
* @default DEFAULT_ID_PSEUDO_SEPARATOR
idPseudoSeparator?: string;
initialValue?: Partial<T>;
initialErrors?: InitialErrors<V>;
submissionCombinator?: ActionsCombinator<
FormValidationResult<AnyFormValueValidatorError<V>>,
submissionDelayedMs?: number;
submissionTimeoutMs?: number;
fieldsValidationDebounceMs?: number;
fieldsValidationCombinator?: ActionsCombinator<
FieldError<AnyFieldValueValidatorError<V>>[],
fieldsValidationDelayedMs?: number;
fieldsValidationTimeoutMs?: number;
* The function to get the form data snapshot
* The snapshot is used to validate the form and passed to
* `onSubmit` and `onSubmitError` handlers.
* @default (ctx) => $state.snapshot(ctx.value)
getSnapshot?: (ctx: FormInternalContext<V>) => FormValue;
* Will be called when the form is submitted and form data
* Note that we rely on `validator.validateFormData` to check that the
* `formData is T`. So make sure you provide a `T` type that
* matches the validator check result.
onSubmit?: (value: T, e: SubmitEvent) => void;
* Will be called when the form is submitted and form data
errors: FieldErrorsMap<AnyFormValueValidatorError<V>>,
* Form submission error handler
* Will be called when the submission fails by a different reasons:
* - submission is cancelled
* - error during validation
onSubmissionFailure?: (state: FailedAction<unknown>, e: SubmitEvent) => void;
* Field validation error handler
onFieldsValidationFailure?: (
state: FailedAction<unknown>,
* Will be called when the form is reset.
onReset?: (e: Event) => void;
schedulerYield?: SchedulerYield;