diff --git a/src/Former/Former.types.ts b/src/Former/Former.types.ts index 50421f6..1131d8a 100644 --- a/src/Former/Former.types.ts +++ b/src/Former/Former.types.ts @@ -7,9 +7,11 @@ import type { import type React from 'react'; import type { FieldValues, UseFormProps, UseFormReturn } from 'react-hook-form'; +import type { FormRequestType } from '../Gridler/utils/types'; + export type FormerAPICallType = ( mode: 'mutate' | 'read', - request: RequestType, + request: FormRequestType, value?: T, key?: number | string ) => Promise; @@ -43,7 +45,7 @@ export interface FormerProps { onOpen?: (data?: T) => void; opened?: boolean; primeData?: T; - request: RequestType; + request: FormRequestType; uniqueKeyField?: string; useFormProps?: UseFormProps; values?: T; @@ -81,7 +83,7 @@ export interface FormerState { reset: (e?: React.BaseSyntheticEvent | undefined) => Promise; save: (e?: React.BaseSyntheticEvent | undefined) => Promise; scrollAreaProps?: ScrollAreaAutosizeProps; - setRequest: (request: RequestType) => void; + setRequest: (request: FormRequestType) => void; setState: >( key: K, value: Partial>[K] @@ -95,5 +97,3 @@ export interface FormerState { export type FormStateAndProps = FormerProps & Partial>; - -export type RequestType = 'delete' | 'insert' | 'select' | 'update' | 'view'; diff --git a/src/Former/use-former-state.tsx b/src/Former/use-former-state.tsx index c7f1321..175a3a7 100644 --- a/src/Former/use-former-state.tsx +++ b/src/Former/use-former-state.tsx @@ -12,7 +12,7 @@ export type UseFormerStateProps = Pick< export const useFormerState = ( options?: Partial> ) => { - const [state, setState] = useState>>({ + const [state, setState] = useState>({ onChange: options?.onChange, onClose: options?.onClose ?? (() => setState((cv) => ({ ...cv, opened: false }))), opened: options?.opened ?? false, @@ -28,8 +28,11 @@ export const useFormerState = ( const { onChange, onClose, opened, ...formerProps } = state; return { - former: { ...formerProps, onChange, onClose, opened }, - formerWrapper: { onClose, opened }, + former: { ...formerProps, onChange }, + formerWrapper: { onClose, opened } as { + onClose: Required>['onClose']; + opened: UseFormerStateProps['opened']; + }, open: (request: UseFormerStateProps['request'], data: UseFormerStateProps['values']) => { setState((cv) => ({ ...cv, opened: true, primeData: data, request, values: data })); }, diff --git a/src/Gridler/utils/types.ts b/src/Gridler/utils/types.ts index 772ec7a..b594b32 100644 --- a/src/Gridler/utils/types.ts +++ b/src/Gridler/utils/types.ts @@ -1,9 +1,9 @@ -export type APIType = 'gorest' |'gorest2'| 'resolvespec'; +export type APIType = 'gorest' | 'gorest2' | 'resolvespec'; export const APITypes: Record = { - GoRest: 'gorest', + GoRest: 'gorest', GoRest2: 'gorest2', - ResolveSpec: 'resolvespec' + ResolveSpec: 'resolvespec', } as const; export interface APIOptions { @@ -15,4 +15,4 @@ export interface APIOptions { url?: string; } -export type FormRequestType = 'change' | 'delete' | 'insert' | 'select' ; +export type FormRequestType = 'change' | 'delete' | 'insert' | 'select' | 'update' | 'view';