UNPKG

react-hook-formify

Version:

A smart wrapper around react-hook-form + zustand

68 lines (60 loc) 2.83 kB
import React, { ReactNode, Ref, ComponentType } from 'react'; import { UseFormWatch, FieldValues, UseFormGetValues, UseFormGetFieldState, UseFormSetError, UseFormClearErrors, UseFormSetValue, UseFormTrigger, FormState, UseFormResetField, UseFormReset, UseFormHandleSubmit, UseFormUnregister, Control, UseFormRegister, UseFormSetFocus, UseFromSubscribe, FieldErrorsImpl, DeepRequired, GlobalError, UseFormReturn } from 'react-hook-form'; import * as react_jsx_runtime from 'react/jsx-runtime'; import * as zustand from 'zustand'; interface FormFieldConfigs { name: string; min?: number; max?: number; value?: any; when?:any, matches?:any, required?: boolean; type?: string | function; onSubmitValue?: (value: any) => any; } interface FormProps { name?: string; children?: | ReactNode | ((props: { watch: UseFormWatch<FieldValues>; getValues: UseFormGetValues<FieldValues>; getFieldState: UseFormGetFieldState<FieldValues>; setError: UseFormSetError<FieldValues>; clearErrors: UseFormClearErrors<FieldValues>; setValue: UseFormSetValue<FieldValues>; trigger: UseFormTrigger<FieldValues>; formState: FormState<FieldValues>; resetField: UseFormResetField<FieldValues>; reset: UseFormReset<FieldValues>; handleSubmit: UseFormHandleSubmit<FieldValues, FieldValues>; unregister: UseFormUnregister<FieldValues>; control: Control<FieldValues, any, FieldValues>; register: UseFormRegister<FieldValues>; setFocus: UseFormSetFocus<FieldValues>; subscribe: UseFromSubscribe<FieldValues>; isLoading: boolean; values: FieldValues; errors: Partial<FieldErrorsImpl<DeepRequired<FieldValues>>> & { root?: Record<string, GlobalError> & GlobalError; }; }) => React.ReactNode); onSubmit?: (args: { values: { [p: string]: any }; methods: UseFormReturn<FieldValues, any, FieldValues>; }) => void; isLoading?: boolean; enableStore?: boolean; fields?: FormFieldConfigs[]; ref?: Ref<HTMLFormElement>; } declare const FormComponent: React.ForwardRefExoticComponent<Omit<FormProps, "ref"> & React.RefAttributes<unknown>>; interface FieldProps { name: string; component: ComponentType<any>; [key: string]: any; } declare const FieldComponent: ({ name, component, ...rest }: FieldProps) => react_jsx_runtime.JSX.Element; declare const useFormStore: zustand.UseBoundStore<zustand.StoreApi<unknown>>; export { FieldComponent as Field, type FieldProps, FormComponent as Form, type FormFieldConfigs, type FormProps, useFormStore };