UNPKG

state-management-utilities

Version:
198 lines (197 loc) 10 kB
import { Hydrated } from "../center"; import { StateManager, TypeStateManagerConfigs } from "../state-manager"; import { ReactStateManagerStore } from "./store"; export declare class ReactStateManagerForm<DataType extends Record<string, any>, ErrorType = string[] | undefined | null, Meta = Record<string, any>> { protected _config: ReactStateManagerFormConfig<DataType, ErrorType, Meta>; protected readonly _KEYS: (keyof Required<DataType>)[]; fields: { [Key in keyof Required<DataType>]: { data: StateManager<DataType[Key]>; error: StateManager<ErrorType | undefined>; touched: StateManager<boolean | undefined>; modified: StateManager<boolean | undefined>; getValues: () => { data: Readonly<DataType[Key]>; error: ErrorType | undefined; touched: Readonly<boolean | undefined>; modified: Readonly<boolean | undefined>; }; }; }; get KEYS(): (keyof Required<DataType>)[]; get meta(): Meta; get hooks(): Readonly<{ useField: <Key extends keyof DataType>(name: Key) => { value: DataType[Key]; setValue: (newValue: DataType[Key]) => void; error: { [Key_1 in keyof DataType]?: ErrorType | undefined; }[Key]; setError: (newState: { [Key_1 in keyof DataType]?: ErrorType | undefined; }[Key]) => void; touched: { [Key_2 in keyof DataType]?: boolean | undefined; }[Key]; setTouched: (newState: { [Key_2 in keyof DataType]?: boolean | undefined; }[Key]) => void; modified: { [Key_3 in keyof DataType]?: boolean | undefined; }[Key]; setModified: (newState: { [Key_3 in keyof DataType]?: boolean | undefined; }[Key]) => void; setAsTouched: () => void; setAsModified: () => void; _setValue: (newState: DataType[Key]) => void; }; useData: () => [state: DataType, setState: (newValue: DataType) => void]; useErrors: () => [state: { [Key in keyof DataType]?: ErrorType | undefined; }, setState: (newValue: { [Key in keyof DataType]?: ErrorType | undefined; }) => void]; useTouched: () => [state: { [Key in keyof DataType]?: boolean | undefined; }, setState: (newValue: { [Key in keyof DataType]?: boolean | undefined; }) => void]; useModified: () => [state: { [Key in keyof DataType]?: boolean | undefined; }, setState: (newValue: { [Key in keyof DataType]?: boolean | undefined; }) => void]; useForm: () => { data: DataType; setData: (newValue: DataType) => void; errors: { [Key in keyof DataType]?: ErrorType | undefined; }; setErrors: (newValue: { [Key in keyof DataType]?: ErrorType | undefined; }) => void; touched: { [Key in keyof DataType]?: boolean | undefined; }; setTouched: (newValue: { [Key in keyof DataType]?: boolean | undefined; }) => void; modified: { [Key in keyof DataType]?: boolean | undefined; }; setModified: (newValue: { [Key in keyof DataType]?: boolean | undefined; }) => void; }; useIsModified: () => [isModified: boolean]; useIsTouched: () => [isTouched: boolean]; useHasErrors: () => [hasErrors: boolean]; }>; protected readonly _truthyValues: { [Key in keyof Required<DataType>]: true; }; protected readonly _data: ReactStateManagerStore<DataType>; get data(): { [Key in keyof Required<DataType>]: import("./state-manager").ReactStateManager<DataType[Key]>; }; protected readonly _errors: ReactStateManagerStore<{ [Key in keyof DataType]?: ErrorType; }>; get errors(): { [Key_1 in keyof Required<{ [Key in keyof DataType]?: ErrorType | undefined; }>]: import("./state-manager").ReactStateManager<{ [Key in keyof DataType]?: ErrorType | undefined; }[Key_1]>; }; protected readonly _touched: ReactStateManagerStore<{ [Key in keyof DataType]?: boolean; }>; get touched(): { [Key_1 in keyof Required<{ [Key in keyof DataType]?: boolean | undefined; }>]: import("./state-manager").ReactStateManager<{ [Key in keyof DataType]?: boolean | undefined; }[Key_1]>; }; protected readonly _modified: ReactStateManagerStore<{ [Key in keyof DataType]?: boolean; }>; get modified(): { [Key_1 in keyof Required<{ [Key in keyof DataType]?: boolean | undefined; }>]: import("./state-manager").ReactStateManager<{ [Key in keyof DataType]?: boolean | undefined; }[Key_1]>; }; get value(): { data?: DataType; errors?: { [Key in keyof DataType]?: ErrorType; }; touched?: { [Key in keyof DataType]?: boolean; }; modified?: { [Key in keyof DataType]?: boolean; }; }; set value(newValues: { data?: DataType; errors?: { [Key in keyof DataType]?: ErrorType; }; touched?: { [Key in keyof DataType]?: boolean; }; modified?: { [Key in keyof DataType]?: boolean; }; }); protected readonly _validators: { [Key in keyof Required<DataType>]: (value: any) => void; } | undefined; protected readonly _hooks: Readonly<{ useField: <Key extends keyof DataType>(name: Key) => { value: DataType[Key]; setValue: (newValue: DataType[Key]) => void; error: { [Key_1 in keyof DataType]?: ErrorType | undefined; }[Key]; setError: (newState: { [Key_1 in keyof DataType]?: ErrorType | undefined; }[Key]) => void; touched: { [Key_2 in keyof DataType]?: boolean | undefined; }[Key]; setTouched: (newState: { [Key_2 in keyof DataType]?: boolean | undefined; }[Key]) => void; modified: { [Key_3 in keyof DataType]?: boolean | undefined; }[Key]; setModified: (newState: { [Key_3 in keyof DataType]?: boolean | undefined; }[Key]) => void; setAsTouched: () => void; setAsModified: () => void; _setValue: (newState: DataType[Key]) => void; }; useData: () => [state: DataType, setState: (newValue: DataType) => void]; useErrors: () => [state: { [Key in keyof DataType]?: ErrorType | undefined; }, setState: (newValue: { [Key in keyof DataType]?: ErrorType | undefined; }) => void]; useTouched: () => [state: { [Key in keyof DataType]?: boolean | undefined; }, setState: (newValue: { [Key in keyof DataType]?: boolean | undefined; }) => void]; useModified: () => [state: { [Key in keyof DataType]?: boolean | undefined; }, setState: (newValue: { [Key in keyof DataType]?: boolean | undefined; }) => void]; useForm: () => { data: DataType; setData: (newValue: DataType) => void; errors: { [Key in keyof DataType]?: ErrorType | undefined; }; setErrors: (newValue: { [Key in keyof DataType]?: ErrorType | undefined; }) => void; touched: { [Key in keyof DataType]?: boolean | undefined; }; setTouched: (newValue: { [Key in keyof DataType]?: boolean | undefined; }) => void; modified: { [Key in keyof DataType]?: boolean | undefined; }; setModified: (newValue: { [Key in keyof DataType]?: boolean | undefined; }) => void; }; useIsModified: () => [isModified: boolean]; useIsTouched: () => [isTouched: boolean]; useHasErrors: () => [hasErrors: boolean]; }>; reset(resetValues?: { data?: Partial<DataType>; modified?: { [Key in keyof DataType]?: boolean; }; touched?: { [Key in keyof DataType]?: boolean; }; errors?: { [Key in keyof DataType]?: ErrorType; }; }): void; setAllAsTouched(): void; setAllAsModified(): void; getModifiedValues({ defaultFields, }?: { defaultFields: (keyof Required<DataType>)[]; }): Partial<DataType>; get hasErrors(): boolean; get isModified(): boolean; get isTouched(): boolean; hydrate(value: { data: DataType; errors: { [Key in keyof DataType]?: ErrorType; }; touched: { [Key in keyof DataType]?: boolean; }; modified: { [Key in keyof DataType]?: boolean; }; }): { update: (record: Hydrated["data"]) => void; value: { data: DataType; errors: { [Key in keyof DataType]?: ErrorType; }; touched: { [Key in keyof DataType]?: boolean; }; modified: { [Key in keyof DataType]?: boolean; }; }; }; fullFill(): Promise<any>; constructor(initialValues: { [Key in keyof Required<DataType>]: DataType[Key]; }, _config?: ReactStateManagerFormConfig<DataType, ErrorType, Meta>); } export declare function form<DataType extends Record<string, any>, ErrorType = string[] | undefined | null, Meta = Record<string, any>>(initialValues: { [Key in keyof Required<DataType>]: DataType[Key]; }, config?: ReactStateManagerFormConfig<DataType, ErrorType, Meta>): ReactStateManagerForm<DataType, ErrorType, Meta>; export type ReactStateManagerFormConfig<DataType extends Record<string, any>, ErrorType = string[] | undefined | null, Meta = Record<string, any>> = { uid: string; getValidator?: (fieldName: keyof DataType, form: ReactStateManagerForm<DataType, ErrorType>) => (value: any) => void; onReset?: () => void; hasError?: (error: ErrorType | undefined) => boolean; meta?: Meta; errors?: { [Key in keyof DataType]?: StateConfig<ErrorType | undefined>; }; touched?: { [Key in keyof DataType]?: StateConfig<boolean | undefined>; }; modified?: { [Key in keyof DataType]?: StateConfig<boolean | undefined>; }; data?: { [Key in keyof DataType]?: StateConfig<DataType[Key]>; }; }; type StateConfig<DataType> = Omit<TypeStateManagerConfigs<DataType>, "uid">; export {};