state-management-utilities
Version:
State management utilities
198 lines (197 loc) • 10 kB
TypeScript
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 {};