UNPKG

state-management-utilities

Version:
248 lines (247 loc) 11.8 kB
import { Hydrated } from "../center"; import { TypeStateManagerConfigs } from "../state-manager"; import { ReactStateManager } from "./state-manager"; import { ReactStoreManager } from "./store"; export declare class ReactFormManager<DataType extends Record<string, any>, ErrorType = string[] | undefined | null, Meta = Record<string, any>> { protected _config: ReactFormManagerConfig<DataType, ErrorType, Meta>; protected readonly _KEYS: (keyof Required<DataType>)[]; protected _fields: { [Key in keyof Required<DataType>]: Entities<DataType[Key], ErrorType>; }; get fields(): Readonly<{ [Key in keyof Required<DataType>]: Entities<DataType[Key], ErrorType>; }>; 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 _falsyValues: { [Key in keyof Required<DataType>]: false; }; protected readonly _data: ReactStoreManager<DataType>; get data(): { [Key in keyof Required<DataType>]: ReactStateManager<DataType[Key]>; }; protected readonly _errors: ReactStoreManager<{ [Key in keyof DataType]?: ErrorType; }>; get errors(): { [Key_1 in keyof Required<{ [Key in keyof DataType]?: ErrorType | undefined; }>]: ReactStateManager<{ [Key in keyof DataType]?: ErrorType | undefined; }[Key_1]>; }; protected readonly _touched: ReactStoreManager<{ [Key in keyof DataType]?: boolean; }>; get touched(): { [Key_1 in keyof Required<{ [Key in keyof DataType]?: boolean | undefined; }>]: ReactStateManager<{ [Key in keyof DataType]?: boolean | undefined; }[Key_1]>; }; protected readonly _modified: ReactStoreManager<{ [Key in keyof DataType]?: boolean; }>; get modified(): { [Key_1 in keyof Required<{ [Key in keyof DataType]?: boolean | undefined; }>]: ReactStateManager<{ [Key in keyof DataType]?: boolean | undefined; }[Key_1]>; }; get value(): { data: DataType; errors: { [Key in keyof DataType]: ErrorType | undefined; }; touched: { [Key in keyof DataType]: boolean | undefined; }; modified: { [Key in keyof DataType]: boolean | undefined; }; }; set value(newValues: { data?: Partial<DataType>; errors?: { [Key in keyof DataType]?: ErrorType | undefined; }; touched?: { [Key in keyof DataType]?: boolean | undefined; }; modified?: { [Key in keyof DataType]?: boolean | undefined; }; }); update(updater: { data?: Partial<DataType>; errors?: { [Key in keyof DataType]?: ErrorType | undefined; }; touched?: { [Key in keyof DataType]?: boolean | undefined; }; modified?: { [Key in keyof DataType]?: boolean | undefined; }; } | ((prev: { data: DataType; errors: { [Key in keyof DataType]: ErrorType | undefined; }; touched: { [Key in keyof DataType]: boolean | undefined; }; modified: { [Key in keyof DataType]: boolean | undefined; }; }) => { data?: Partial<DataType>; errors?: { [Key in keyof DataType]?: ErrorType | undefined; }; touched?: { [Key in keyof DataType]?: boolean | undefined; }; modified?: { [Key in keyof DataType]?: boolean | undefined; }; })): this; 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; setAllAsUntouched(): void; setAllAsModified(): void; setAllAsUnmodified(): 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 | undefined; }; touched?: { [Key in keyof DataType]?: boolean | undefined; }; modified?: { [Key in keyof DataType]?: boolean | undefined; }; }): { update: (record: Hydrated["data"]) => void; value: { data: DataType; errors?: { [Key in keyof DataType]?: ErrorType | undefined; }; touched?: { [Key in keyof DataType]?: boolean | undefined; }; modified?: { [Key in keyof DataType]?: boolean | undefined; }; }; }; fulfill(): Promise<any>; constructor(initialValues: { [Key in keyof Required<DataType>]: DataType[Key]; }, _config?: ReactFormManagerConfig<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?: ReactFormManagerConfig<DataType, ErrorType, Meta>): ReactFormManager<DataType, ErrorType, Meta>; declare class Entities<DataType, ErrorType> { readonly data: ReactStateManager<DataType>; readonly error: ReactStateManager<ErrorType | undefined>; readonly modified: ReactStateManager<boolean | undefined>; readonly touched: ReactStateManager<boolean | undefined>; constructor(data: ReactStateManager<DataType>, error: ReactStateManager<ErrorType | undefined>, modified: ReactStateManager<boolean | undefined>, touched: ReactStateManager<boolean | undefined>); get values(): EntitiesType<DataType, ErrorType>; set values(values: EntitiesType<DataType, ErrorType>); update(updater: (prev: EntitiesType<DataType, ErrorType>) => EntitiesType<DataType, ErrorType>): this; } type EntitiesType<DataType, ErrorType> = { data: DataType; error: ErrorType | undefined; modified: boolean | undefined; touched: boolean | undefined; }; export type ReactFormManagerConfig<DataType extends Record<string, any>, ErrorType = string[] | undefined | null, Meta = Record<string, any>> = { uid: string; getValidator?: (fieldName: keyof DataType, form: ReactFormManager<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 {};