UNPKG

use-form-fields

Version:

[Demo](https://vlad88vlad.github.io/use-form-fields)

90 lines (89 loc) 2.8 kB
import React from 'react'; export declare type ReactOnChangeType = React.ChangeEvent<HTMLInputElement> | React.ChangeEvent<HTMLTextAreaElement> | React.ChangeEvent<HTMLSelectElement>; export declare type validFuncType = (_e: any) => string | null; export declare type onChangeType = (_e: ReactOnChangeType) => void; export declare type onChangeHandlerType = (_e: string) => void; export declare type toValidType = (_e: string) => string | null; export declare type valueType = string | number | boolean; export declare type valueCallbackTypeArg = { prevValue: valueType; }; export declare type valueCallbackType = (_value: valueCallbackTypeArg) => valueType; declare type radioOptionType = { option: any; }; declare type fieldBase = { error?: string; immediatelyValidate?: boolean; required?: boolean; toValid?: () => void; validations?: validFuncType[]; minLen?: number; maxLen?: number; fieldProps?: object; [key: string]: unknown; }; declare type customFieldType = fieldBase & { type: 'custom'; value: any; checked?: never; }; declare type inputFieldType = fieldBase & { type?: 'text' | 'password' | 'email' | 'range' | 'color' | 'search' | 'date' | 'datetime' | 'datetime-local' | 'tel' | 'time' | 'url' | 'month' | 'week'; value?: string | number; checked?: never; }; declare type numberFieldType = fieldBase & { type: 'number'; value?: number; checked?: never; }; declare type radioFieldType = fieldBase & { type: 'radio'; value: string | number; checked?: boolean; options: radioOptionType[]; }; declare type checkboxFieldType = fieldBase & { type: 'checkbox'; checked: boolean; value?: never; }; export declare type getFormFieldsType = { fields: formSchemaType; onChange: onChangeHandlerType; toValid: toValidType; setValue: (_value: any) => void; setError: (_errorMessage: any) => void; }; export declare type formSchemaType = { [key: string]: checkboxFieldType | radioFieldType | inputFieldType | customFieldType | numberFieldType; }; export declare type formField = { value: any; fieldProps: { value: any; name: string; required?: boolean; onChange: onChangeType; }; error?: string; setValue: (_value: any) => void; setError: (_errorMessage: any) => void; toValid?: () => void; radioOptions?: any[]; }; export declare type formFields = { [key: string]: formField; }; export declare type toJSONType = <T = { [key: string]: any; }>() => T; export declare type useFormType = { form: { fields: formFields; toJSON: toJSONType; toValidate: () => boolean; }; }; export {};