UNPKG

react-tiniest-form

Version:
34 lines (33 loc) 2.07 kB
import { ChangeEvent, FormEvent, RefCallback } from 'react'; import { ValueOf } from '../../types/@common/utility'; import type { FormFields, Store, Validation, InputValue, Errors } from '../../utils/formStore/createFormStore'; interface UseFormOptions<DefaultValues extends FormFields> { defaultValues?: DefaultValues; } type UseFormReturn<DefaultValues extends FormFields = FormFields> = ReturnType<typeof useForm<DefaultValues>>; declare const useForm: <DefaultValues extends FormFields>(options?: UseFormOptions<DefaultValues> | undefined) => { store: Store<DefaultValues>; errors: Errors<DefaultValues>; setError: (name: keyof DefaultValues, info?: ValueOf<Errors<DefaultValues>> | undefined) => void; register: (name: keyof DefaultValues, options?: { value?: InputValue; validations?: Validation[] | undefined; onChange?(e: ChangeEvent<HTMLInputElement | HTMLSelectElement>): void; onBlur?(e: ChangeEvent<HTMLInputElement | HTMLSelectElement>): void; } | undefined) => { value?: string | undefined; name: keyof DefaultValues; onChange: (e: ChangeEvent<HTMLInputElement | HTMLSelectElement>) => void; onBlur: (e: ChangeEvent<HTMLInputElement | HTMLSelectElement>) => void; ref: RefCallback<HTMLInputElement | HTMLSelectElement>; }; watch: <FieldNames extends (keyof DefaultValues)[]>(fieldsNames: FieldNames) => { [Name in FieldNames[number]]: string; }; handleSubmit: (onValid?: ((value: keyof DefaultValues extends infer T extends keyof DefaultValues ? { [Name_1 in T]: string; } : never, e: FormEvent<HTMLFormElement>) => void) | undefined, onInvalid?: ((errors: Errors<DefaultValues>, e: FormEvent<HTMLFormElement>) => void) | undefined) => (e: FormEvent<HTMLFormElement>) => void; getFieldValue: (name: keyof DefaultValues) => string; getFieldState: (name: keyof DefaultValues) => { isValid: boolean; ref: HTMLInputElement | HTMLSelectElement | null; } | undefined; }; export { useForm }; export type { UseFormReturn };