UNPKG

houseform

Version:

Simple to use React forms, where your validation and UI code live together in harmony.

47 lines (46 loc) 1.84 kB
import type { ZodTypeAny } from "zod"; import { FormInstance } from "../form/types"; type HintFunction<T, F> = ZodTypeAny | ((val: T, form: FormInstance<F>) => Promise<boolean>); type ValidationFunction<T, F> = ZodTypeAny | ((val: T, form: FormInstance<F>) => Promise<boolean>); type TransformFunction<T, F> = ZodTypeAny | ((val: T, form: FormInstance<F>) => any); export interface FieldInstanceBaseProps<T = any, F = any> { name: string; onChangeValidate?: ValidationFunction<T, F>; onSubmitValidate?: ValidationFunction<T, F>; onSubmitTransform?: TransformFunction<T, F>; onChangeHint?: HintFunction<T, F>; onSubmitHint?: HintFunction<T, F>; listenTo?: string[]; } export interface FieldInstanceProps<T = any, F = any> extends FieldInstanceBaseProps<T, F> { onBlurValidate?: ValidationFunction<T, F>; onBlurHint?: HintFunction<T, F>; onMountValidate?: ValidationFunction<T, F>; onMountHint?: HintFunction<T, F>; initialValue?: T; resetWithValue?: T; memoChild?: any[]; preserveValue?: boolean; } export interface FieldInstance<T = any, F = any> { value: T; setValue: (val: T | ((prevState: T) => T)) => void; onBlur: () => void; props: FieldInstanceProps<T, F>; _normalizedDotName: string; _setIsValidating: (val: boolean) => void; setErrors: (error: string[]) => void; errors: string[]; setHints: (hint: string[]) => void; hints: string[]; isValid: boolean; setIsTouched: (val: boolean) => void; isTouched: boolean; setIsDirty: (val: boolean) => void; isDirty: boolean; isValidating: boolean; isSubmitted: boolean; validate: (validationType: "onChangeValidate" | "onBlurValidate" | "onMountValidate") => void; checkHint: (hintType: "onChangeHint" | "onBlurHint" | "onMountHint") => void; } export {};