UNPKG

@ewb/reach-react

Version:
31 lines (30 loc) 1.26 kB
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>;