@ewb/reach-react
Version:
React Resource and Fetch stuff
31 lines (30 loc) • 1.26 kB
TypeScript
import { IUseCrudActions, IUseCrudProps, IUseCrudRet, IUseCrudSaveFn, IUseCrudSetDataFn, IUseCrudSetFn, IUseCrudState } from './useCrud';
export declare type IUseFieldSchema<T extends object, P extends {}> = {
[K in keyof T]?: IUseFieldValueIn<T[K]> & P;
};
export interface IUseFieldState<T extends object, E> extends Omit<IUseCrudState<T, E>, 'data'> {
data: T;
}
export declare type IUseFieldValueIn<V> = {
defaultValue: V;
};
export interface IUseFieldValueRet<V, K> extends IUseFieldValueIn<V> {
id: string;
edited: boolean;
value: V;
meta?: any;
key: K;
}
export declare type IUseFieldRet<T extends object, E, P extends {}, RET = T> = {
state: IUseFieldState<T, E> & {
schema: IUseFieldSchema<T, P>;
idKey: keyof T;
};
getField: <K extends keyof T>(key: K) => IUseFieldValueRet<T[K], K> & P;
setField: IUseCrudSetFn<T>;
save: IUseCrudSaveFn<RET>;
setData: IUseCrudSetDataFn<T>;
actions: IUseCrudActions;
setState: IUseCrudRet<T, E, RET>['setState'];
};
export declare function useFields<T extends object, E, P extends {}, RET = T>(path: string, data: Partial<T>, schema: IUseFieldSchema<T, P>, props: IUseCrudProps<T>): IUseFieldRet<T, E, P, RET>;