UNPKG

@andydowell/use-form-state

Version:

A React hook for managing form state and validation

52 lines (51 loc) 1.64 kB
declare type ValidationParams<Value, Data> = { [key: string]: { validator: (value: Value, formState: FormState<Data>) => boolean; message?: string; }; }; declare type FormFieldParams<Data> = { [Key in keyof Data]: { defaultValue: Data[Key]; required?: { message: string; }; validation?: ValidationParams<Data[Key], Data>; label?: string; helperText?: string; }; }; declare type FormStateOptions = { errorUpdateDelayInSeconds?: number; }; declare type FormState<Data> = { [Key in keyof Data]: FormFieldState<Data[Key]>; }; declare type FormFieldState<Value = any> = { label: string; value: Value; isValid: boolean; isInteracted: boolean; isRequired: boolean; helperText?: string; error?: { type?: string; message?: string; }; }; declare const useFormState: <Data>(formFieldParams: FormFieldParams<Data>, options?: FormStateOptions) => { state: FormState<Data>; set: <Key extends keyof Data>(key: Key, value: Data[Key], setInteracted?: boolean) => void; update: <Key_1 extends keyof Data>(data: Partial<Data>, setInteracted?: boolean) => void; checkIfAllValid: (options?: { updateErrorType?: boolean | undefined; } | undefined) => boolean; extractStateValue: <F extends "object" | "formdata">({ format }: { format: F; }) => { object: Data; formdata: FormData; }[F]; reset: () => void; }; export { useFormState, FormFieldParams, FormState, FormFieldState, FormStateOptions };