rc-simple-hook-form
Version:
## Overview
230 lines (229 loc) • 12.9 kB
TypeScript
import { useForm as useFormHook } from "./hooks/useForm";
import FormController from "./component/Controller";
import { InputType as Input, ValidationFields as ValFields, EventElement as Element } from "./types/package";
export declare const useForm: <T extends Record<string, any>>(param?: import("./types/package").UseFormParam<T>) => {
formState: {
values: Record<string, any>;
active: Record<string, boolean>;
touched: Record<string, boolean>;
errors: Record<string, string[]>;
invalid: boolean;
isEmpty: boolean;
fieldPristine: Record<string, boolean>;
formPristine: boolean;
};
control: {
getFormState: () => {
values: Record<string, any>;
active: Record<string, boolean>;
touched: Record<string, boolean>;
errors: Record<string, string[]>;
invalid: boolean;
fieldPristine: Record<string, boolean>;
formPristine: boolean;
};
register: (name: keyof T, type: Input, extra?: import("./types/package").RegisterExtraProps) => {
ref: (e: null | Element) => void;
onChange: (e: import("react").ChangeEvent<Element>) => void;
onBlur: (e: React.FocusEvent<Element, globalThis.Element>) => void;
onFocus: (e: React.FocusEvent<Element, globalThis.Element>) => void;
disabled: true;
checked: any;
value: string | undefined;
multiple?: undefined;
name: keyof T;
type: "number" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "month" | "password" | "radio" | "range" | "search" | "tel" | "text" | "time" | "url" | "week" | "textarea" | "select-one" | "select-multiple";
} | {
ref: (e: null | Element) => void;
onChange: (e: import("react").ChangeEvent<Element>) => void;
onBlur: (e: React.FocusEvent<Element, globalThis.Element>) => void;
onFocus: (e: React.FocusEvent<Element, globalThis.Element>) => void;
disabled?: undefined;
checked: any;
value: string | undefined;
multiple?: undefined;
name: keyof T;
type: "number" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "month" | "password" | "radio" | "range" | "search" | "tel" | "text" | "time" | "url" | "week" | "textarea" | "select-one" | "select-multiple";
} | {
ref: (e: null | Element) => void;
onChange: (e: import("react").ChangeEvent<Element>) => void;
onBlur: (e: React.FocusEvent<Element, globalThis.Element>) => void;
onFocus: (e: React.FocusEvent<Element, globalThis.Element>) => void;
disabled: true;
multiple: boolean;
checked?: undefined;
value?: undefined;
name: keyof T;
type: "number" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "month" | "password" | "radio" | "range" | "search" | "tel" | "text" | "time" | "url" | "week" | "textarea" | "select-one" | "select-multiple";
} | {
ref: (e: null | Element) => void;
onChange: (e: import("react").ChangeEvent<Element>) => void;
onBlur: (e: React.FocusEvent<Element, globalThis.Element>) => void;
onFocus: (e: React.FocusEvent<Element, globalThis.Element>) => void;
disabled?: undefined;
multiple: boolean;
checked?: undefined;
value?: undefined;
name: keyof T;
type: "number" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "month" | "password" | "radio" | "range" | "search" | "tel" | "text" | "time" | "url" | "week" | "textarea" | "select-one" | "select-multiple";
} | {
ref: (e: null | Element) => void;
onChange: (e: import("react").ChangeEvent<Element>) => void;
onBlur: (e: React.FocusEvent<Element, globalThis.Element>) => void;
onFocus: (e: React.FocusEvent<Element, globalThis.Element>) => void;
disabled: true;
checked?: undefined;
value?: undefined;
multiple?: undefined;
name: keyof T;
type: "number" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "month" | "password" | "radio" | "range" | "search" | "tel" | "text" | "time" | "url" | "week" | "textarea" | "select-one" | "select-multiple";
} | {
ref: (e: null | Element) => void;
onChange: (e: import("react").ChangeEvent<Element>) => void;
onBlur: (e: React.FocusEvent<Element, globalThis.Element>) => void;
onFocus: (e: React.FocusEvent<Element, globalThis.Element>) => void;
disabled?: undefined;
checked?: undefined;
value?: undefined;
multiple?: undefined;
name: keyof T;
type: "number" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "month" | "password" | "radio" | "range" | "search" | "tel" | "text" | "time" | "url" | "week" | "textarea" | "select-one" | "select-multiple";
} | {
ref: (e: null | Element) => void;
onChange: (e: import("react").ChangeEvent<Element>) => void;
onBlur: (e: React.FocusEvent<Element, globalThis.Element>) => void;
onFocus: (e: React.FocusEvent<Element, globalThis.Element>) => void;
disabled: true;
value: any;
checked?: undefined;
multiple?: undefined;
name: keyof T;
type: "number" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "month" | "password" | "radio" | "range" | "search" | "tel" | "text" | "time" | "url" | "week" | "textarea" | "select-one" | "select-multiple";
} | {
ref: (e: null | Element) => void;
onChange: (e: import("react").ChangeEvent<Element>) => void;
onBlur: (e: React.FocusEvent<Element, globalThis.Element>) => void;
onFocus: (e: React.FocusEvent<Element, globalThis.Element>) => void;
disabled?: undefined;
value: any;
checked?: undefined;
multiple?: undefined;
name: keyof T;
type: "number" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "month" | "password" | "radio" | "range" | "search" | "tel" | "text" | "time" | "url" | "week" | "textarea" | "select-one" | "select-multiple";
};
resetForm: () => void;
resetField: (name: keyof T) => void;
setField: (name: string, value: any, options?: {
shouldSetTouched?: boolean;
shouldCheckPristine?: boolean;
multipleValues?: boolean;
validations?: ValFields;
}) => void;
};
useInitializeFormState: (initialState: T, deps: any[]) => void;
handleSubmit: (submitCallback: (arg: T) => void) => (e: React.FormEvent<HTMLFormElement>) => void;
register: (name: keyof T, type: Input, extra?: import("./types/package").RegisterExtraProps) => {
ref: (e: null | Element) => void;
onChange: (e: import("react").ChangeEvent<Element>) => void;
onBlur: (e: React.FocusEvent<Element, globalThis.Element>) => void;
onFocus: (e: React.FocusEvent<Element, globalThis.Element>) => void;
disabled: true;
checked: any;
value: string | undefined;
multiple?: undefined;
name: keyof T;
type: "number" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "month" | "password" | "radio" | "range" | "search" | "tel" | "text" | "time" | "url" | "week" | "textarea" | "select-one" | "select-multiple";
} | {
ref: (e: null | Element) => void;
onChange: (e: import("react").ChangeEvent<Element>) => void;
onBlur: (e: React.FocusEvent<Element, globalThis.Element>) => void;
onFocus: (e: React.FocusEvent<Element, globalThis.Element>) => void;
disabled?: undefined;
checked: any;
value: string | undefined;
multiple?: undefined;
name: keyof T;
type: "number" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "month" | "password" | "radio" | "range" | "search" | "tel" | "text" | "time" | "url" | "week" | "textarea" | "select-one" | "select-multiple";
} | {
ref: (e: null | Element) => void;
onChange: (e: import("react").ChangeEvent<Element>) => void;
onBlur: (e: React.FocusEvent<Element, globalThis.Element>) => void;
onFocus: (e: React.FocusEvent<Element, globalThis.Element>) => void;
disabled: true;
multiple: boolean;
checked?: undefined;
value?: undefined;
name: keyof T;
type: "number" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "month" | "password" | "radio" | "range" | "search" | "tel" | "text" | "time" | "url" | "week" | "textarea" | "select-one" | "select-multiple";
} | {
ref: (e: null | Element) => void;
onChange: (e: import("react").ChangeEvent<Element>) => void;
onBlur: (e: React.FocusEvent<Element, globalThis.Element>) => void;
onFocus: (e: React.FocusEvent<Element, globalThis.Element>) => void;
disabled?: undefined;
multiple: boolean;
checked?: undefined;
value?: undefined;
name: keyof T;
type: "number" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "month" | "password" | "radio" | "range" | "search" | "tel" | "text" | "time" | "url" | "week" | "textarea" | "select-one" | "select-multiple";
} | {
ref: (e: null | Element) => void;
onChange: (e: import("react").ChangeEvent<Element>) => void;
onBlur: (e: React.FocusEvent<Element, globalThis.Element>) => void;
onFocus: (e: React.FocusEvent<Element, globalThis.Element>) => void;
disabled: true;
checked?: undefined;
value?: undefined;
multiple?: undefined;
name: keyof T;
type: "number" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "month" | "password" | "radio" | "range" | "search" | "tel" | "text" | "time" | "url" | "week" | "textarea" | "select-one" | "select-multiple";
} | {
ref: (e: null | Element) => void;
onChange: (e: import("react").ChangeEvent<Element>) => void;
onBlur: (e: React.FocusEvent<Element, globalThis.Element>) => void;
onFocus: (e: React.FocusEvent<Element, globalThis.Element>) => void;
disabled?: undefined;
checked?: undefined;
value?: undefined;
multiple?: undefined;
name: keyof T;
type: "number" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "month" | "password" | "radio" | "range" | "search" | "tel" | "text" | "time" | "url" | "week" | "textarea" | "select-one" | "select-multiple";
} | {
ref: (e: null | Element) => void;
onChange: (e: import("react").ChangeEvent<Element>) => void;
onBlur: (e: React.FocusEvent<Element, globalThis.Element>) => void;
onFocus: (e: React.FocusEvent<Element, globalThis.Element>) => void;
disabled: true;
value: any;
checked?: undefined;
multiple?: undefined;
name: keyof T;
type: "number" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "month" | "password" | "radio" | "range" | "search" | "tel" | "text" | "time" | "url" | "week" | "textarea" | "select-one" | "select-multiple";
} | {
ref: (e: null | Element) => void;
onChange: (e: import("react").ChangeEvent<Element>) => void;
onBlur: (e: React.FocusEvent<Element, globalThis.Element>) => void;
onFocus: (e: React.FocusEvent<Element, globalThis.Element>) => void;
disabled?: undefined;
value: any;
checked?: undefined;
multiple?: undefined;
name: keyof T;
type: "number" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "month" | "password" | "radio" | "range" | "search" | "tel" | "text" | "time" | "url" | "week" | "textarea" | "select-one" | "select-multiple";
};
resetForm: () => void;
resetField: (name: keyof T) => void;
setField: (name: string, value: any, options?: {
shouldSetTouched?: boolean;
shouldCheckPristine?: boolean;
multipleValues?: boolean;
validations?: ValFields;
}) => void;
};
export declare const Controller: typeof FormController;
export type UseFormInputType = Input;
export type UseFormControl = ReturnType<typeof useFormHook>["control"];
export type UseFormController = Parameters<typeof FormController>[0];
export type UseFormValidationField = ValFields;
export type UseFormState = ReturnType<typeof useFormHook>["formState"];
export type UseFormElement = Element;