rc-simple-hook-form
Version:
## Overview
222 lines (221 loc) • 12.1 kB
TypeScript
import React, { ChangeEvent } from "react";
import { EventElement, InputType, RegisterExtraProps, UseFormParam, ValidationFields } from "../types/package";
export declare const useForm: <T extends Record<string, any>>(param?: 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: InputType, extra?: RegisterExtraProps) => {
ref: (e: null | EventElement) => void;
onChange: (e: ChangeEvent<EventElement>) => void;
onBlur: (e: React.FocusEvent<EventElement, Element>) => void;
onFocus: (e: React.FocusEvent<EventElement, 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 | EventElement) => void;
onChange: (e: ChangeEvent<EventElement>) => void;
onBlur: (e: React.FocusEvent<EventElement, Element>) => void;
onFocus: (e: React.FocusEvent<EventElement, 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 | EventElement) => void;
onChange: (e: ChangeEvent<EventElement>) => void;
onBlur: (e: React.FocusEvent<EventElement, Element>) => void;
onFocus: (e: React.FocusEvent<EventElement, 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 | EventElement) => void;
onChange: (e: ChangeEvent<EventElement>) => void;
onBlur: (e: React.FocusEvent<EventElement, Element>) => void;
onFocus: (e: React.FocusEvent<EventElement, 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 | EventElement) => void;
onChange: (e: ChangeEvent<EventElement>) => void;
onBlur: (e: React.FocusEvent<EventElement, Element>) => void;
onFocus: (e: React.FocusEvent<EventElement, 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 | EventElement) => void;
onChange: (e: ChangeEvent<EventElement>) => void;
onBlur: (e: React.FocusEvent<EventElement, Element>) => void;
onFocus: (e: React.FocusEvent<EventElement, 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 | EventElement) => void;
onChange: (e: ChangeEvent<EventElement>) => void;
onBlur: (e: React.FocusEvent<EventElement, Element>) => void;
onFocus: (e: React.FocusEvent<EventElement, 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 | EventElement) => void;
onChange: (e: ChangeEvent<EventElement>) => void;
onBlur: (e: React.FocusEvent<EventElement, Element>) => void;
onFocus: (e: React.FocusEvent<EventElement, 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?: ValidationFields;
}) => void;
};
useInitializeFormState: (initialState: T, deps: any[]) => void;
handleSubmit: (submitCallback: (arg: T) => void) => (e: React.FormEvent<HTMLFormElement>) => void;
register: (name: keyof T, type: InputType, extra?: RegisterExtraProps) => {
ref: (e: null | EventElement) => void;
onChange: (e: ChangeEvent<EventElement>) => void;
onBlur: (e: React.FocusEvent<EventElement, Element>) => void;
onFocus: (e: React.FocusEvent<EventElement, 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 | EventElement) => void;
onChange: (e: ChangeEvent<EventElement>) => void;
onBlur: (e: React.FocusEvent<EventElement, Element>) => void;
onFocus: (e: React.FocusEvent<EventElement, 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 | EventElement) => void;
onChange: (e: ChangeEvent<EventElement>) => void;
onBlur: (e: React.FocusEvent<EventElement, Element>) => void;
onFocus: (e: React.FocusEvent<EventElement, 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 | EventElement) => void;
onChange: (e: ChangeEvent<EventElement>) => void;
onBlur: (e: React.FocusEvent<EventElement, Element>) => void;
onFocus: (e: React.FocusEvent<EventElement, 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 | EventElement) => void;
onChange: (e: ChangeEvent<EventElement>) => void;
onBlur: (e: React.FocusEvent<EventElement, Element>) => void;
onFocus: (e: React.FocusEvent<EventElement, 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 | EventElement) => void;
onChange: (e: ChangeEvent<EventElement>) => void;
onBlur: (e: React.FocusEvent<EventElement, Element>) => void;
onFocus: (e: React.FocusEvent<EventElement, 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 | EventElement) => void;
onChange: (e: ChangeEvent<EventElement>) => void;
onBlur: (e: React.FocusEvent<EventElement, Element>) => void;
onFocus: (e: React.FocusEvent<EventElement, 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 | EventElement) => void;
onChange: (e: ChangeEvent<EventElement>) => void;
onBlur: (e: React.FocusEvent<EventElement, Element>) => void;
onFocus: (e: React.FocusEvent<EventElement, 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?: ValidationFields;
}) => void;
};