@refinedev/react-hook-form 4.1.6 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/iife/index.js +6 -6
- package/dist/iife/index.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/useForm/index.d.ts +5 -5
- package/dist/useForm/index.d.ts.map +1 -1
- package/dist/useModalForm/index.d.ts +3 -3
- package/dist/useModalForm/index.d.ts.map +1 -1
- package/dist/useStepsForm/index.d.ts +3 -3
- package/dist/useStepsForm/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/useForm/index.ts +20 -7
- package/src/useModalForm/index.ts +21 -5
- package/src/useStepsForm/index.ts +22 -5
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var ne=Object.create;var
|
|
1
|
+
var ne=Object.create;var H=Object.defineProperty;var ie=Object.getOwnPropertyDescriptor;var le=Object.getOwnPropertyNames;var de=Object.getPrototypeOf,Te=Object.prototype.hasOwnProperty;var ce=(t,a)=>{for(var o in a)H(t,o,{get:a[o],enumerable:!0})},_=(t,a,o,f)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of le(a))!Te.call(t,s)&&s!==o&&H(t,s,{get:()=>a[s],enumerable:!(f=ie(a,s))||f.enumerable});return t};var ue=(t,a,o)=>(o=t!=null?ne(de(t)):{},_(a||!t||!t.__esModule?H(o,"default",{value:t,enumerable:!0}):o,t)),me=t=>_(H({},"__esModule",{value:!0}),t);var pe={};ce(pe,{useForm:()=>y,useModalForm:()=>q,useStepsForm:()=>L});module.exports=me(pe);var w=require("react"),I=require("react-hook-form"),g=require("@refinedev/core"),y=({refineCoreProps:t,warnWhenUnsavedChanges:a,...o}={})=>{let{warnWhenUnsavedChanges:f,setWarnWhen:s}=(0,g.useWarnAboutChange)(),R=a!=null?a:f,V=(0,g.useForm)({...t}),{queryResult:n,onFinish:e,formLoading:C}=V,i=(0,I.useForm)({...o}),{watch:l,reset:p,getValues:D,handleSubmit:r}=i;(0,w.useEffect)(()=>{var d;if(typeof(n==null?void 0:n.data)<"u"){let b={},S=Object.keys(D());Object.entries(((d=n==null?void 0:n.data)==null?void 0:d.data)||{}).forEach(([x,u])=>{S.includes(x)&&(b[x]=u)}),p(b)}},[n==null?void 0:n.data]),(0,w.useEffect)(()=>{let d=l((b,{type:S})=>{S==="change"&&m(b)});return()=>d.unsubscribe()},[l]);let m=d=>(R&&s(!0),d),E=(d,b)=>async S=>(s(!1),await r(d,b)(S));return{...i,handleSubmit:E,refineCore:V,saveButtonProps:{disabled:C,onClick:d=>{E(e,()=>!1)(d)}}}};var v=require("react");var L=({stepsProps:t,...a}={})=>{let{defaultStep:o=0,isBackValidate:f=!1}=t!=null?t:{},[s,R]=(0,v.useState)(o),V=y({...a}),{trigger:n,getValues:e,reset:C,formState:{dirtyFields:i},refineCore:{queryResult:l}}=V;(0,v.useEffect)(()=>{var r;if(l!=null&&l.data){let m={},E=Object.keys(e());Object.entries((r=l==null?void 0:l.data)==null?void 0:r.data).forEach(([F,d])=>{E.includes(F)&&(i[F]?m[F]=e(F):m[F]=d)}),C(m,{keepDirty:!0,keepDirtyValues:!0})}},[l==null?void 0:l.data,s]);let p=r=>{let m=r;r<0&&(m=0),R(m)};return{...V,steps:{currentStep:s,gotoStep:async r=>{if(r===s)return;if(r<s&&!f){p(r);return}await n()&&p(r)}}}};var M=require("react"),c=require("@refinedev/core");var k=ue(require("react")),q=({modalProps:t,refineCoreProps:a,syncWithLocation:o,...f}={})=>{var A,Q,G,N,Y,z,J;let s=k.default.useRef(!1),R=(0,c.useTranslate)(),{resource:V,action:n}=a!=null?a:{},{resource:e,action:C}=(0,c.useResource)(V),i=(0,c.useParsed)(),l=(0,c.useGo)(),p=(A=n!=null?n:C)!=null?A:"",D=typeof o=="object"&&o.syncId,r=typeof o=="object"&&"key"in o?o.key:e&&p&&o?`modal-${(Q=e==null?void 0:e.identifier)!=null?Q:e==null?void 0:e.name}-${p}`:void 0,{defaultVisible:m=!1,autoSubmitClose:E=!0,autoResetForm:F=!0}=t!=null?t:{},d=y({refineCoreProps:a,...f}),{reset:b,refineCore:{onFinish:S,id:x,setId:u},saveButtonProps:ee,handleSubmit:te}=d,{visible:B,show:U,close:$}=(0,c.useModal)({defaultVisible:m});k.default.useEffect(()=>{var T,j,P,X;if(s.current===!1&&r){let h=(j=(T=i==null?void 0:i.params)==null?void 0:T[r])==null?void 0:j.open;if(typeof h=="boolean"?h&&U():typeof h=="string"&&h==="true"&&U(),D){let Z=(X=(P=i==null?void 0:i.params)==null?void 0:P[r])==null?void 0:X.id;Z&&(u==null||u(Z))}s.current=!0}},[r,i,D,u]),k.default.useEffect(()=>{var T;s.current===!0&&(B&&r?l({query:{[r]:{...(T=i==null?void 0:i.params)==null?void 0:T[r],open:!0,...D&&x&&{id:x}}},options:{keepQuery:!0},type:"replace"}):r&&!B&&l({query:{[r]:void 0},options:{keepQuery:!0},type:"replace"}))},[x,B,U,r,D]);let O=async T=>{await S(T),E&&$(),F&&b()},{warnWhen:K,setWarnWhen:re}=(0,c.useWarnAboutChange)(),ae=(0,M.useCallback)(()=>{if(K)if(window.confirm(R("warnWhenUnsavedChanges","Are you sure you want to leave? You have unsaved changes.")))re(!1);else return;u==null||u(void 0),$()},[K]),oe=(0,M.useCallback)(T=>{typeof T<"u"&&(u==null||u(T)),(!(p==="edit"||p==="clone")||(typeof T<"u"||typeof x<"u"))&&U()},[x]),se=R(`${e==null?void 0:e.name}.titles.${n}`,void 0,`${(0,c.userFriendlyResourceName)(`${n} ${(J=(z=(Y=(G=e==null?void 0:e.meta)==null?void 0:G.label)!=null?Y:(N=e==null?void 0:e.options)==null?void 0:N.label)!=null?z:e==null?void 0:e.label)!=null?J:e==null?void 0:e.name}`,"singular")}`);return{modal:{submit:O,close:ae,show:oe,visible:B,title:se},...d,saveButtonProps:{...ee,onClick:T=>te(O)(T)}}};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/useForm/index.ts","../src/useStepsForm/index.ts","../src/useModalForm/index.ts"],"sourcesContent":["export { useForm, UseFormProps, UseFormReturnType } from \"./useForm\";\nexport {\n useStepsForm,\n UseStepsFormProps,\n UseStepsFormReturnType,\n} from \"./useStepsForm\";\nexport {\n useModalForm,\n UseModalFormProps,\n UseModalFormReturnType,\n} from \"./useModalForm\";\n","import React, { useEffect } from \"react\";\nimport {\n useForm as useHookForm,\n UseFormProps as UseHookFormProps,\n UseFormReturn,\n FieldValues,\n UseFormHandleSubmit,\n SubmitHandler,\n SubmitErrorHandler,\n} from \"react-hook-form\";\nimport {\n BaseRecord,\n HttpError,\n useForm as useFormCore,\n useWarnAboutChange,\n UseFormProps as UseFormCoreProps,\n UseFormReturnType as UseFormReturnTypeCore,\n} from \"@refinedev/core\";\n\nexport type UseFormReturnType<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n> = UseFormReturn<TVariables, TContext> & {\n refineCore: UseFormReturnTypeCore<TData, TError, TVariables>;\n saveButtonProps: {\n disabled: boolean;\n onClick: (e: React.BaseSyntheticEvent) => void;\n };\n};\n\nexport type UseFormProps<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n> = {\n /**\n * Configuration object for the core of the [useForm](/docs/api-reference/core/hooks/useForm/)\n * @type [`UseFormCoreProps<TData, TError, TVariables>`](/docs/api-reference/core/hooks/useForm/#properties)\n */\n refineCoreProps?: UseFormCoreProps<TData, TError, TVariables>;\n /**\n * When you have unsaved changes and try to leave the current page, **refine** shows a confirmation modal box.\n * @default `false*`\n */\n warnWhenUnsavedChanges?: boolean;\n} & UseHookFormProps<TVariables, TContext>;\n\nexport const useForm = <\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n>({\n refineCoreProps,\n warnWhenUnsavedChanges: warnWhenUnsavedChangesProp,\n ...rest\n}: UseFormProps<TData, TError, TVariables, TContext> = {}): UseFormReturnType<\n TData,\n TError,\n TVariables,\n TContext\n> => {\n const {\n warnWhenUnsavedChanges: warnWhenUnsavedChangesRefine,\n setWarnWhen,\n } = useWarnAboutChange();\n const warnWhenUnsavedChanges =\n warnWhenUnsavedChangesProp ?? warnWhenUnsavedChangesRefine;\n\n const useFormCoreResult = useFormCore<TData, TError, TVariables>({\n ...refineCoreProps,\n });\n\n const { queryResult, onFinish, formLoading } = useFormCoreResult;\n\n const useHookFormResult = useHookForm<TVariables, TContext>({\n ...rest,\n });\n\n const {\n watch,\n reset,\n getValues,\n handleSubmit: handleSubmitReactHookForm,\n } = useHookFormResult;\n\n useEffect(() => {\n if (typeof queryResult?.data !== \"undefined\") {\n const fields: any = {};\n const registeredFields = Object.keys(getValues());\n Object.entries(queryResult?.data?.data || {}).forEach(\n ([key, value]) => {\n if (registeredFields.includes(key)) {\n fields[key] = value;\n }\n },\n );\n\n reset(fields as any);\n }\n }, [queryResult?.data]);\n\n useEffect(() => {\n const subscription = watch((values: any, { type }: { type?: any }) => {\n if (type === \"change\") {\n onValuesChange(values);\n }\n });\n return () => subscription.unsubscribe();\n }, [watch]);\n\n const onValuesChange = (changeValues: Record<string, any>) => {\n if (warnWhenUnsavedChanges) {\n setWarnWhen(true);\n }\n return changeValues;\n };\n\n const handleSubmit: UseFormHandleSubmit<TVariables> =\n (onValid, onInvalid) => async (e) => {\n setWarnWhen(false);\n return await handleSubmitReactHookForm(onValid, onInvalid)(e);\n };\n\n const saveButtonProps = {\n disabled: formLoading,\n onClick: (e: React.BaseSyntheticEvent) => {\n handleSubmit(onFinish, () => false)(e);\n },\n };\n\n return {\n ...useHookFormResult,\n handleSubmit,\n refineCore: useFormCoreResult,\n saveButtonProps,\n };\n};\n","import { useEffect, useState } from \"react\";\nimport { FieldValues } from \"react-hook-form\";\nimport { BaseRecord, HttpError } from \"@refinedev/core\";\n\nimport { useForm, UseFormProps, UseFormReturnType } from \"../useForm\";\n\nexport type UseStepsFormReturnType<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n> = UseFormReturnType<TData, TError, TVariables, TContext> & {\n steps: {\n currentStep: number;\n gotoStep: (step: number) => void;\n };\n};\n\nexport type UseStepsFormProps<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n> = UseFormProps<TData, TError, TVariables, TContext> & {\n /**\n * @description Configuration object for the steps.\n * `defaultStep`: Allows you to set the initial step.\n * \n * `isBackValidate`: Whether to validation the current step when going back.\n * @type `{\n defaultStep?: number;\n isBackValidate?: boolean;\n }`\n * @default `defaultStep = 0` `isBackValidate = false`\n */\n stepsProps?: {\n defaultStep?: number;\n isBackValidate?: boolean;\n };\n};\n\nexport const useStepsForm = <\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n>({\n stepsProps,\n ...rest\n}: UseStepsFormProps<\n TData,\n TError,\n TVariables,\n TContext\n> = {}): UseStepsFormReturnType<TData, TError, TVariables, TContext> => {\n const { defaultStep = 0, isBackValidate = false } = stepsProps ?? {};\n const [current, setCurrent] = useState(defaultStep);\n\n const useHookFormResult = useForm({\n ...rest,\n });\n const {\n trigger,\n getValues,\n reset,\n formState: { dirtyFields },\n refineCore: { queryResult },\n } = useHookFormResult;\n\n useEffect(() => {\n if (queryResult?.data) {\n const fields: any = {};\n const registeredFields = Object.keys(getValues());\n Object.entries(queryResult?.data?.data).forEach(([key, value]) => {\n if (registeredFields.includes(key)) {\n if (dirtyFields[key]) {\n fields[key] = getValues(key as any);\n } else {\n fields[key] = value;\n }\n }\n });\n\n reset(fields as any, {\n keepDirty: true,\n keepDirtyValues: true,\n });\n }\n }, [queryResult?.data, current]);\n\n const go = (step: number) => {\n let targetStep = step;\n\n if (step < 0) {\n targetStep = 0;\n }\n\n setCurrent(targetStep);\n };\n\n const gotoStep = async (step: number) => {\n if (step === current) {\n return;\n }\n\n if (step < current && !isBackValidate) {\n go(step);\n return;\n }\n\n const isValid = await trigger();\n if (isValid) {\n go(step);\n }\n };\n\n return {\n ...useHookFormResult,\n steps: {\n currentStep: current,\n gotoStep,\n },\n };\n};\n","import { useCallback } from \"react\";\nimport {\n BaseKey,\n BaseRecord,\n FormWithSyncWithLocationParams,\n HttpError,\n useGo,\n useModal,\n useParsed,\n useResource,\n userFriendlyResourceName,\n useTranslate,\n useWarnAboutChange,\n} from \"@refinedev/core\";\nimport { FieldValues } from \"react-hook-form\";\n\nimport { useForm, UseFormProps, UseFormReturnType } from \"../useForm\";\nimport React from \"react\";\n\nexport type UseModalFormReturnType<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n> = UseFormReturnType<TData, TError, TVariables, TContext> & {\n modal: {\n submit: (values: TVariables) => void;\n close: () => void;\n show: (id?: BaseKey) => void;\n visible: boolean;\n title: string;\n };\n};\n\nexport type UseModalFormProps<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n> = UseFormProps<TData, TError, TVariables, TContext> & {\n /**\n * @description Configuration object for the modal.\n * `defaultVisible`: Initial visibility state of the modal.\n * \n * `autoSubmitClose`: Whether the form should be submitted when the modal is closed.\n * \n * `autoResetForm`: Whether the form should be reset when the form is submitted.\n * @type `{\n defaultVisible?: boolean;\n autoSubmitClose?: boolean;\n autoResetForm?: boolean;\n }`\n * @default `defaultVisible = false` `autoSubmitClose = true` `autoResetForm = true`\n */\n modalProps?: {\n defaultVisible?: boolean;\n autoSubmitClose?: boolean;\n autoResetForm?: boolean;\n };\n} & FormWithSyncWithLocationParams;\n\nexport const useModalForm = <\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n>({\n modalProps,\n refineCoreProps,\n syncWithLocation,\n ...rest\n}: UseModalFormProps<\n TData,\n TError,\n TVariables,\n TContext\n> = {}): UseModalFormReturnType<TData, TError, TVariables, TContext> => {\n const initiallySynced = React.useRef(false);\n\n const translate = useTranslate();\n\n const { resource: resourceProp, action: actionProp } =\n refineCoreProps ?? {};\n\n const { resource, action: actionFromParams } = useResource(resourceProp);\n\n const parsed = useParsed();\n const go = useGo();\n\n const action = actionProp ?? actionFromParams ?? \"\";\n\n const syncingId =\n typeof syncWithLocation === \"object\" && syncWithLocation.syncId;\n\n const syncWithLocationKey =\n typeof syncWithLocation === \"object\" && \"key\" in syncWithLocation\n ? syncWithLocation.key\n : resource && action && syncWithLocation\n ? `modal-${resource?.identifier ?? resource?.name}-${action}`\n : undefined;\n\n const {\n defaultVisible = false,\n autoSubmitClose = true,\n autoResetForm = true,\n } = modalProps ?? {};\n\n const useHookFormResult = useForm<TData, TError, TVariables, TContext>({\n refineCoreProps,\n ...rest,\n });\n\n const {\n reset,\n refineCore: { onFinish, id, setId },\n saveButtonProps,\n handleSubmit,\n } = useHookFormResult;\n\n const { visible, show, close } = useModal({\n defaultVisible,\n });\n\n React.useEffect(() => {\n if (initiallySynced.current === false && syncWithLocationKey) {\n const openStatus = parsed?.params?.[syncWithLocationKey]?.open;\n if (typeof openStatus === \"boolean\") {\n if (openStatus) {\n show();\n }\n } else if (typeof openStatus === \"string\") {\n if (openStatus === \"true\") {\n show();\n }\n }\n\n if (syncingId) {\n const idFromParams = parsed?.params?.[syncWithLocationKey]?.id;\n if (idFromParams) {\n setId?.(idFromParams);\n }\n }\n\n initiallySynced.current = true;\n }\n }, [syncWithLocationKey, parsed, syncingId, setId]);\n\n React.useEffect(() => {\n if (initiallySynced.current === true) {\n if (visible && syncWithLocationKey) {\n go({\n query: {\n [syncWithLocationKey]: {\n ...parsed?.params?.[syncWithLocationKey],\n open: true,\n ...(syncingId && id && { id }),\n },\n },\n options: { keepQuery: true },\n type: \"replace\",\n });\n } else if (syncWithLocationKey && !visible) {\n go({\n query: {\n [syncWithLocationKey]: undefined,\n },\n options: { keepQuery: true },\n type: \"replace\",\n });\n }\n }\n }, [id, visible, show, syncWithLocationKey, syncingId]);\n\n const submit = async (values: TVariables) => {\n await onFinish(values);\n\n if (autoSubmitClose) {\n close();\n }\n\n if (autoResetForm) {\n reset();\n }\n };\n\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n const handleClose = useCallback(() => {\n if (warnWhen) {\n const warnWhenConfirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (warnWhenConfirm) {\n setWarnWhen(false);\n } else {\n return;\n }\n }\n\n setId?.(undefined);\n close();\n }, [warnWhen]);\n\n const handleShow = useCallback(\n (showId?: BaseKey) => {\n if (typeof showId !== \"undefined\") {\n setId?.(showId);\n }\n const needsIdToOpen = action === \"edit\" || action === \"clone\";\n const hasId =\n typeof showId !== \"undefined\" || typeof id !== \"undefined\";\n if (needsIdToOpen ? hasId : true) {\n show();\n }\n },\n [id],\n );\n\n const title = translate(\n `${resource?.name}.titles.${actionProp}`,\n undefined,\n `${userFriendlyResourceName(\n `${actionProp} ${\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n resource?.name\n }`,\n \"singular\",\n )}`,\n );\n\n return {\n modal: {\n submit,\n close: handleClose,\n show: handleShow,\n visible,\n title,\n },\n ...useHookFormResult,\n saveButtonProps: {\n ...saveButtonProps,\n onClick: (e) => handleSubmit(submit)(e),\n },\n };\n};\n"],"mappings":"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","names":["src_exports","__export","useForm","useModalForm","useStepsForm","__toCommonJS","import_react","import_react_hook_form","import_core","useForm","refineCoreProps","warnWhenUnsavedChangesProp","rest","warnWhenUnsavedChangesRefine","setWarnWhen","warnWhenUnsavedChanges","useFormCoreResult","useFormCore","queryResult","onFinish","formLoading","useHookFormResult","useHookForm","watch","reset","getValues","handleSubmitReactHookForm","_a","fields","registeredFields","key","value","subscription","values","type","onValuesChange","changeValues","handleSubmit","onValid","onInvalid","e","import_react","useStepsForm","stepsProps","rest","defaultStep","isBackValidate","current","setCurrent","useHookFormResult","useForm","trigger","getValues","reset","dirtyFields","queryResult","_a","fields","registeredFields","key","value","go","step","targetStep","import_react","import_core","import_react","useModalForm","modalProps","refineCoreProps","syncWithLocation","rest","_a","_b","_c","_d","_e","_f","_g","initiallySynced","React","translate","resourceProp","actionProp","resource","actionFromParams","parsed","go","action","syncingId","syncWithLocationKey","defaultVisible","autoSubmitClose","autoResetForm","useHookFormResult","useForm","reset","onFinish","id","setId","saveButtonProps","handleSubmit","visible","show","close","openStatus","idFromParams","submit","values","warnWhen","setWarnWhen","handleClose","handleShow","showId","title","e"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/useForm/index.ts","../src/useStepsForm/index.ts","../src/useModalForm/index.ts"],"sourcesContent":["export { useForm, UseFormProps, UseFormReturnType } from \"./useForm\";\nexport {\n useStepsForm,\n UseStepsFormProps,\n UseStepsFormReturnType,\n} from \"./useStepsForm\";\nexport {\n useModalForm,\n UseModalFormProps,\n UseModalFormReturnType,\n} from \"./useModalForm\";\n","import React, { useEffect } from \"react\";\nimport {\n useForm as useHookForm,\n UseFormProps as UseHookFormProps,\n UseFormReturn,\n FieldValues,\n UseFormHandleSubmit,\n} from \"react-hook-form\";\nimport {\n BaseRecord,\n HttpError,\n useForm as useFormCore,\n useWarnAboutChange,\n UseFormProps as UseFormCoreProps,\n UseFormReturnType as UseFormReturnTypeCore,\n} from \"@refinedev/core\";\n\nexport type UseFormReturnType<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TSelectData extends BaseRecord = TData,\n> = UseFormReturn<TVariables, TContext> & {\n refineCore: UseFormReturnTypeCore<TData, TError, TVariables, TSelectData>;\n saveButtonProps: {\n disabled: boolean;\n onClick: (e: React.BaseSyntheticEvent) => void;\n };\n};\n\nexport type UseFormProps<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TSelectData extends BaseRecord = TData,\n> = {\n /**\n * Configuration object for the core of the [useForm](/docs/api-reference/core/hooks/useForm/)\n * @type [`UseFormCoreProps<TData, TError, TVariables>`](/docs/api-reference/core/hooks/useForm/#properties)\n */\n refineCoreProps?: UseFormCoreProps<TData, TError, TVariables, TSelectData>;\n /**\n * When you have unsaved changes and try to leave the current page, **refine** shows a confirmation modal box.\n * @default `false*`\n */\n warnWhenUnsavedChanges?: boolean;\n} & UseHookFormProps<TVariables, TContext>;\n\nexport const useForm = <\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TSelectData extends BaseRecord = TData,\n>({\n refineCoreProps,\n warnWhenUnsavedChanges: warnWhenUnsavedChangesProp,\n ...rest\n}: UseFormProps<\n TData,\n TError,\n TVariables,\n TContext,\n TSelectData\n> = {}): UseFormReturnType<\n TData,\n TError,\n TVariables,\n TContext,\n TSelectData\n> => {\n const {\n warnWhenUnsavedChanges: warnWhenUnsavedChangesRefine,\n setWarnWhen,\n } = useWarnAboutChange();\n const warnWhenUnsavedChanges =\n warnWhenUnsavedChangesProp ?? warnWhenUnsavedChangesRefine;\n\n const useFormCoreResult = useFormCore<\n TData,\n TError,\n TVariables,\n TSelectData\n >({\n ...refineCoreProps,\n });\n\n const { queryResult, onFinish, formLoading } = useFormCoreResult;\n\n const useHookFormResult = useHookForm<TVariables, TContext>({\n ...rest,\n });\n\n const {\n watch,\n reset,\n getValues,\n handleSubmit: handleSubmitReactHookForm,\n } = useHookFormResult;\n\n useEffect(() => {\n if (typeof queryResult?.data !== \"undefined\") {\n const fields: any = {};\n const registeredFields = Object.keys(getValues());\n Object.entries(queryResult?.data?.data || {}).forEach(\n ([key, value]) => {\n if (registeredFields.includes(key)) {\n fields[key] = value;\n }\n },\n );\n\n reset(fields as any);\n }\n }, [queryResult?.data]);\n\n useEffect(() => {\n const subscription = watch((values: any, { type }: { type?: any }) => {\n if (type === \"change\") {\n onValuesChange(values);\n }\n });\n return () => subscription.unsubscribe();\n }, [watch]);\n\n const onValuesChange = (changeValues: Record<string, any>) => {\n if (warnWhenUnsavedChanges) {\n setWarnWhen(true);\n }\n return changeValues;\n };\n\n const handleSubmit: UseFormHandleSubmit<TVariables> =\n (onValid, onInvalid) => async (e) => {\n setWarnWhen(false);\n return await handleSubmitReactHookForm(onValid, onInvalid)(e);\n };\n\n const saveButtonProps = {\n disabled: formLoading,\n onClick: (e: React.BaseSyntheticEvent) => {\n handleSubmit(onFinish, () => false)(e);\n },\n };\n\n return {\n ...useHookFormResult,\n handleSubmit,\n refineCore: useFormCoreResult,\n saveButtonProps,\n };\n};\n","import { useEffect, useState } from \"react\";\nimport { FieldValues } from \"react-hook-form\";\nimport { BaseRecord, HttpError } from \"@refinedev/core\";\n\nimport { useForm, UseFormProps, UseFormReturnType } from \"../useForm\";\n\nexport type UseStepsFormReturnType<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TSelectData extends BaseRecord = TData,\n> = UseFormReturnType<TData, TError, TVariables, TContext, TSelectData> & {\n steps: {\n currentStep: number;\n gotoStep: (step: number) => void;\n };\n};\n\nexport type UseStepsFormProps<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TSelectData extends BaseRecord = TData,\n> = UseFormProps<TData, TError, TVariables, TContext, TSelectData> & {\n /**\n * @description Configuration object for the steps.\n * `defaultStep`: Allows you to set the initial step.\n * \n * `isBackValidate`: Whether to validation the current step when going back.\n * @type `{\n defaultStep?: number;\n isBackValidate?: boolean;\n }`\n * @default `defaultStep = 0` `isBackValidate = false`\n */\n stepsProps?: {\n defaultStep?: number;\n isBackValidate?: boolean;\n };\n};\n\nexport const useStepsForm = <\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TSelectData extends BaseRecord = TData,\n>({\n stepsProps,\n ...rest\n}: UseStepsFormProps<\n TData,\n TError,\n TVariables,\n TContext,\n TSelectData\n> = {}): UseStepsFormReturnType<\n TData,\n TError,\n TVariables,\n TContext,\n TSelectData\n> => {\n const { defaultStep = 0, isBackValidate = false } = stepsProps ?? {};\n const [current, setCurrent] = useState(defaultStep);\n\n const useHookFormResult = useForm<\n TData,\n TError,\n TVariables,\n TContext,\n TSelectData\n >({\n ...rest,\n });\n\n const {\n trigger,\n getValues,\n reset,\n formState: { dirtyFields },\n refineCore: { queryResult },\n } = useHookFormResult;\n\n useEffect(() => {\n if (queryResult?.data) {\n const fields: any = {};\n const registeredFields = Object.keys(getValues());\n Object.entries(queryResult?.data?.data).forEach(([key, value]) => {\n if (registeredFields.includes(key)) {\n if (dirtyFields[key]) {\n fields[key] = getValues(key as any);\n } else {\n fields[key] = value;\n }\n }\n });\n\n reset(fields as any, {\n keepDirty: true,\n keepDirtyValues: true,\n });\n }\n }, [queryResult?.data, current]);\n\n const go = (step: number) => {\n let targetStep = step;\n\n if (step < 0) {\n targetStep = 0;\n }\n\n setCurrent(targetStep);\n };\n\n const gotoStep = async (step: number) => {\n if (step === current) {\n return;\n }\n\n if (step < current && !isBackValidate) {\n go(step);\n return;\n }\n\n const isValid = await trigger();\n if (isValid) {\n go(step);\n }\n };\n\n return {\n ...useHookFormResult,\n steps: {\n currentStep: current,\n gotoStep,\n },\n };\n};\n","import { useCallback } from \"react\";\nimport {\n BaseKey,\n BaseRecord,\n FormWithSyncWithLocationParams,\n HttpError,\n useGo,\n useModal,\n useParsed,\n useResource,\n userFriendlyResourceName,\n useTranslate,\n useWarnAboutChange,\n} from \"@refinedev/core\";\nimport { FieldValues } from \"react-hook-form\";\n\nimport { useForm, UseFormProps, UseFormReturnType } from \"../useForm\";\nimport React from \"react\";\n\nexport type UseModalFormReturnType<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TSelectData extends BaseRecord = TData,\n> = UseFormReturnType<TData, TError, TVariables, TContext, TSelectData> & {\n modal: {\n submit: (values: TVariables) => void;\n close: () => void;\n show: (id?: BaseKey) => void;\n visible: boolean;\n title: string;\n };\n};\n\nexport type UseModalFormProps<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TSelectData extends BaseRecord = TData,\n> = UseFormProps<TData, TError, TVariables, TContext, TSelectData> & {\n /**\n * @description Configuration object for the modal.\n * `defaultVisible`: Initial visibility state of the modal.\n * \n * `autoSubmitClose`: Whether the form should be submitted when the modal is closed.\n * \n * `autoResetForm`: Whether the form should be reset when the form is submitted.\n * @type `{\n defaultVisible?: boolean;\n autoSubmitClose?: boolean;\n autoResetForm?: boolean;\n }`\n * @default `defaultVisible = false` `autoSubmitClose = true` `autoResetForm = true`\n */\n modalProps?: {\n defaultVisible?: boolean;\n autoSubmitClose?: boolean;\n autoResetForm?: boolean;\n };\n} & FormWithSyncWithLocationParams;\n\nexport const useModalForm = <\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TSelectData extends BaseRecord = TData,\n>({\n modalProps,\n refineCoreProps,\n syncWithLocation,\n ...rest\n}: UseModalFormProps<\n TData,\n TError,\n TVariables,\n TContext,\n TSelectData\n> = {}): UseModalFormReturnType<\n TData,\n TError,\n TVariables,\n TContext,\n TSelectData\n> => {\n const initiallySynced = React.useRef(false);\n\n const translate = useTranslate();\n\n const { resource: resourceProp, action: actionProp } =\n refineCoreProps ?? {};\n\n const { resource, action: actionFromParams } = useResource(resourceProp);\n\n const parsed = useParsed();\n const go = useGo();\n\n const action = actionProp ?? actionFromParams ?? \"\";\n\n const syncingId =\n typeof syncWithLocation === \"object\" && syncWithLocation.syncId;\n\n const syncWithLocationKey =\n typeof syncWithLocation === \"object\" && \"key\" in syncWithLocation\n ? syncWithLocation.key\n : resource && action && syncWithLocation\n ? `modal-${resource?.identifier ?? resource?.name}-${action}`\n : undefined;\n\n const {\n defaultVisible = false,\n autoSubmitClose = true,\n autoResetForm = true,\n } = modalProps ?? {};\n\n const useHookFormResult = useForm<\n TData,\n TError,\n TVariables,\n TContext,\n TSelectData\n >({\n refineCoreProps,\n ...rest,\n });\n\n const {\n reset,\n refineCore: { onFinish, id, setId },\n saveButtonProps,\n handleSubmit,\n } = useHookFormResult;\n\n const { visible, show, close } = useModal({\n defaultVisible,\n });\n\n React.useEffect(() => {\n if (initiallySynced.current === false && syncWithLocationKey) {\n const openStatus = parsed?.params?.[syncWithLocationKey]?.open;\n if (typeof openStatus === \"boolean\") {\n if (openStatus) {\n show();\n }\n } else if (typeof openStatus === \"string\") {\n if (openStatus === \"true\") {\n show();\n }\n }\n\n if (syncingId) {\n const idFromParams = parsed?.params?.[syncWithLocationKey]?.id;\n if (idFromParams) {\n setId?.(idFromParams);\n }\n }\n\n initiallySynced.current = true;\n }\n }, [syncWithLocationKey, parsed, syncingId, setId]);\n\n React.useEffect(() => {\n if (initiallySynced.current === true) {\n if (visible && syncWithLocationKey) {\n go({\n query: {\n [syncWithLocationKey]: {\n ...parsed?.params?.[syncWithLocationKey],\n open: true,\n ...(syncingId && id && { id }),\n },\n },\n options: { keepQuery: true },\n type: \"replace\",\n });\n } else if (syncWithLocationKey && !visible) {\n go({\n query: {\n [syncWithLocationKey]: undefined,\n },\n options: { keepQuery: true },\n type: \"replace\",\n });\n }\n }\n }, [id, visible, show, syncWithLocationKey, syncingId]);\n\n const submit = async (values: TVariables) => {\n await onFinish(values);\n\n if (autoSubmitClose) {\n close();\n }\n\n if (autoResetForm) {\n reset();\n }\n };\n\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n const handleClose = useCallback(() => {\n if (warnWhen) {\n const warnWhenConfirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (warnWhenConfirm) {\n setWarnWhen(false);\n } else {\n return;\n }\n }\n\n setId?.(undefined);\n close();\n }, [warnWhen]);\n\n const handleShow = useCallback(\n (showId?: BaseKey) => {\n if (typeof showId !== \"undefined\") {\n setId?.(showId);\n }\n const needsIdToOpen = action === \"edit\" || action === \"clone\";\n const hasId =\n typeof showId !== \"undefined\" || typeof id !== \"undefined\";\n if (needsIdToOpen ? hasId : true) {\n show();\n }\n },\n [id],\n );\n\n const title = translate(\n `${resource?.name}.titles.${actionProp}`,\n undefined,\n `${userFriendlyResourceName(\n `${actionProp} ${\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n resource?.name\n }`,\n \"singular\",\n )}`,\n );\n\n return {\n modal: {\n submit,\n close: handleClose,\n show: handleShow,\n visible,\n title,\n },\n ...useHookFormResult,\n saveButtonProps: {\n ...saveButtonProps,\n onClick: (e) => handleSubmit(submit)(e),\n },\n };\n};\n"],"mappings":"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","names":["src_exports","__export","useForm","useModalForm","useStepsForm","__toCommonJS","import_react","import_react_hook_form","import_core","useForm","refineCoreProps","warnWhenUnsavedChangesProp","rest","warnWhenUnsavedChangesRefine","setWarnWhen","warnWhenUnsavedChanges","useFormCoreResult","useFormCore","queryResult","onFinish","formLoading","useHookFormResult","useHookForm","watch","reset","getValues","handleSubmitReactHookForm","_a","fields","registeredFields","key","value","subscription","values","type","onValuesChange","changeValues","handleSubmit","onValid","onInvalid","e","import_react","useStepsForm","stepsProps","rest","defaultStep","isBackValidate","current","setCurrent","useHookFormResult","useForm","trigger","getValues","reset","dirtyFields","queryResult","_a","fields","registeredFields","key","value","go","step","targetStep","import_react","import_core","import_react","useModalForm","modalProps","refineCoreProps","syncWithLocation","rest","_a","_b","_c","_d","_e","_f","_g","initiallySynced","React","translate","resourceProp","actionProp","resource","actionFromParams","parsed","go","action","syncingId","syncWithLocationKey","defaultVisible","autoSubmitClose","autoResetForm","useHookFormResult","useForm","reset","onFinish","id","setId","saveButtonProps","handleSubmit","visible","show","close","openStatus","idFromParams","submit","values","warnWhen","setWarnWhen","handleClose","handleShow","showId","title","e"]}
|
package/dist/useForm/index.d.ts
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { UseFormProps as UseHookFormProps, UseFormReturn, FieldValues } from "react-hook-form";
|
|
3
3
|
import { BaseRecord, HttpError, UseFormProps as UseFormCoreProps, UseFormReturnType as UseFormReturnTypeCore } from "@refinedev/core";
|
|
4
|
-
export declare type UseFormReturnType<TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}> = UseFormReturn<TVariables, TContext> & {
|
|
5
|
-
refineCore: UseFormReturnTypeCore<TData, TError, TVariables>;
|
|
4
|
+
export declare type UseFormReturnType<TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}, TSelectData extends BaseRecord = TData> = UseFormReturn<TVariables, TContext> & {
|
|
5
|
+
refineCore: UseFormReturnTypeCore<TData, TError, TVariables, TSelectData>;
|
|
6
6
|
saveButtonProps: {
|
|
7
7
|
disabled: boolean;
|
|
8
8
|
onClick: (e: React.BaseSyntheticEvent) => void;
|
|
9
9
|
};
|
|
10
10
|
};
|
|
11
|
-
export declare type UseFormProps<TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}> = {
|
|
11
|
+
export declare type UseFormProps<TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}, TSelectData extends BaseRecord = TData> = {
|
|
12
12
|
/**
|
|
13
13
|
* Configuration object for the core of the [useForm](/docs/api-reference/core/hooks/useForm/)
|
|
14
14
|
* @type [`UseFormCoreProps<TData, TError, TVariables>`](/docs/api-reference/core/hooks/useForm/#properties)
|
|
15
15
|
*/
|
|
16
|
-
refineCoreProps?: UseFormCoreProps<TData, TError, TVariables>;
|
|
16
|
+
refineCoreProps?: UseFormCoreProps<TData, TError, TVariables, TSelectData>;
|
|
17
17
|
/**
|
|
18
18
|
* When you have unsaved changes and try to leave the current page, **refine** shows a confirmation modal box.
|
|
19
19
|
* @default `false*`
|
|
20
20
|
*/
|
|
21
21
|
warnWhenUnsavedChanges?: boolean;
|
|
22
22
|
} & UseHookFormProps<TVariables, TContext>;
|
|
23
|
-
export declare const useForm: <TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}>({ refineCoreProps, warnWhenUnsavedChanges: warnWhenUnsavedChangesProp, ...rest }?: UseFormProps<TData, TError, TVariables, TContext>) => UseFormReturnType<TData, TError, TVariables, TContext>;
|
|
23
|
+
export declare const useForm: <TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}, TSelectData extends BaseRecord = TData>({ refineCoreProps, warnWhenUnsavedChanges: warnWhenUnsavedChangesProp, ...rest }?: UseFormProps<TData, TError, TVariables, TContext, TSelectData>) => UseFormReturnType<TData, TError, TVariables, TContext, TSelectData>;
|
|
24
24
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAEH,YAAY,IAAI,gBAAgB,EAChC,aAAa,EACb,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAEH,YAAY,IAAI,gBAAgB,EAChC,aAAa,EACb,WAAW,EAEd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,UAAU,EACV,SAAS,EAGT,YAAY,IAAI,gBAAgB,EAChC,iBAAiB,IAAI,qBAAqB,EAC7C,MAAM,iBAAiB,CAAC;AAEzB,oBAAY,iBAAiB,CACzB,KAAK,SAAS,UAAU,GAAG,UAAU,EACrC,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,WAAW,SAAS,UAAU,GAAG,KAAK,IACtC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG;IACtC,UAAU,EAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAC1E,eAAe,EAAE;QACb,QAAQ,EAAE,OAAO,CAAC;QAClB,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;KAClD,CAAC;CACL,CAAC;AAEF,oBAAY,YAAY,CACpB,KAAK,SAAS,UAAU,GAAG,UAAU,EACrC,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,WAAW,SAAS,UAAU,GAAG,KAAK,IACtC;IACA;;;OAGG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAC3E;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CACpC,GAAG,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAE3C,eAAO,MAAM,OAAO,6ZAuGnB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BaseKey, BaseRecord, FormWithSyncWithLocationParams, HttpError } from "@refinedev/core";
|
|
2
2
|
import { FieldValues } from "react-hook-form";
|
|
3
3
|
import { UseFormProps, UseFormReturnType } from "../useForm";
|
|
4
|
-
export declare type UseModalFormReturnType<TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}> = UseFormReturnType<TData, TError, TVariables, TContext> & {
|
|
4
|
+
export declare type UseModalFormReturnType<TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}, TSelectData extends BaseRecord = TData> = UseFormReturnType<TData, TError, TVariables, TContext, TSelectData> & {
|
|
5
5
|
modal: {
|
|
6
6
|
submit: (values: TVariables) => void;
|
|
7
7
|
close: () => void;
|
|
@@ -10,7 +10,7 @@ export declare type UseModalFormReturnType<TData extends BaseRecord = BaseRecord
|
|
|
10
10
|
title: string;
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
|
-
export declare type UseModalFormProps<TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}> = UseFormProps<TData, TError, TVariables, TContext> & {
|
|
13
|
+
export declare type UseModalFormProps<TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}, TSelectData extends BaseRecord = TData> = UseFormProps<TData, TError, TVariables, TContext, TSelectData> & {
|
|
14
14
|
/**
|
|
15
15
|
* @description Configuration object for the modal.
|
|
16
16
|
* `defaultVisible`: Initial visibility state of the modal.
|
|
@@ -31,5 +31,5 @@ export declare type UseModalFormProps<TData extends BaseRecord = BaseRecord, TEr
|
|
|
31
31
|
autoResetForm?: boolean;
|
|
32
32
|
};
|
|
33
33
|
} & FormWithSyncWithLocationParams;
|
|
34
|
-
export declare const useModalForm: <TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}>({ modalProps, refineCoreProps, syncWithLocation, ...rest }?: UseModalFormProps<TData, TError, TVariables, TContext>) => UseModalFormReturnType<TData, TError, TVariables, TContext>;
|
|
34
|
+
export declare const useModalForm: <TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}, TSelectData extends BaseRecord = TData>({ modalProps, refineCoreProps, syncWithLocation, ...rest }?: UseModalFormProps<TData, TError, TVariables, TContext, TSelectData>) => UseModalFormReturnType<TData, TError, TVariables, TContext, TSelectData>;
|
|
35
35
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useModalForm/index.ts"],"names":[],"mappings":"AACA,OAAO,EACH,OAAO,EACP,UAAU,EACV,8BAA8B,EAC9B,SAAS,EAQZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAW,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGtE,oBAAY,sBAAsB,CAC9B,KAAK,SAAS,UAAU,GAAG,UAAU,EACrC,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useModalForm/index.ts"],"names":[],"mappings":"AACA,OAAO,EACH,OAAO,EACP,UAAU,EACV,8BAA8B,EAC9B,SAAS,EAQZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAW,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGtE,oBAAY,sBAAsB,CAC9B,KAAK,SAAS,UAAU,GAAG,UAAU,EACrC,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,WAAW,SAAS,UAAU,GAAG,KAAK,IACtC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG;IACtE,KAAK,EAAE;QACH,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;QACrC,KAAK,EAAE,MAAM,IAAI,CAAC;QAClB,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;QAC7B,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;CACL,CAAC;AAEF,oBAAY,iBAAiB,CACzB,KAAK,SAAS,UAAU,GAAG,UAAU,EACrC,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,WAAW,SAAS,UAAU,GAAG,KAAK,IACtC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG;IACjE;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,EAAE;QACT,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;CACL,GAAG,8BAA8B,CAAC;AAEnC,eAAO,MAAM,YAAY,iZA0MxB,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { FieldValues } from "react-hook-form";
|
|
2
2
|
import { BaseRecord, HttpError } from "@refinedev/core";
|
|
3
3
|
import { UseFormProps, UseFormReturnType } from "../useForm";
|
|
4
|
-
export declare type UseStepsFormReturnType<TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}> = UseFormReturnType<TData, TError, TVariables, TContext> & {
|
|
4
|
+
export declare type UseStepsFormReturnType<TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}, TSelectData extends BaseRecord = TData> = UseFormReturnType<TData, TError, TVariables, TContext, TSelectData> & {
|
|
5
5
|
steps: {
|
|
6
6
|
currentStep: number;
|
|
7
7
|
gotoStep: (step: number) => void;
|
|
8
8
|
};
|
|
9
9
|
};
|
|
10
|
-
export declare type UseStepsFormProps<TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}> = UseFormProps<TData, TError, TVariables, TContext> & {
|
|
10
|
+
export declare type UseStepsFormProps<TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}, TSelectData extends BaseRecord = TData> = UseFormProps<TData, TError, TVariables, TContext, TSelectData> & {
|
|
11
11
|
/**
|
|
12
12
|
* @description Configuration object for the steps.
|
|
13
13
|
* `defaultStep`: Allows you to set the initial step.
|
|
@@ -24,5 +24,5 @@ export declare type UseStepsFormProps<TData extends BaseRecord = BaseRecord, TEr
|
|
|
24
24
|
isBackValidate?: boolean;
|
|
25
25
|
};
|
|
26
26
|
};
|
|
27
|
-
export declare const useStepsForm: <TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}>({ stepsProps, ...rest }?: UseStepsFormProps<TData, TError, TVariables, TContext>) => UseStepsFormReturnType<TData, TError, TVariables, TContext>;
|
|
27
|
+
export declare const useStepsForm: <TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}, TSelectData extends BaseRecord = TData>({ stepsProps, ...rest }?: UseStepsFormProps<TData, TError, TVariables, TContext, TSelectData>) => UseStepsFormReturnType<TData, TError, TVariables, TContext, TSelectData>;
|
|
28
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useStepsForm/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAW,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtE,oBAAY,sBAAsB,CAC9B,KAAK,SAAS,UAAU,GAAG,UAAU,EACrC,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useStepsForm/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAW,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtE,oBAAY,sBAAsB,CAC9B,KAAK,SAAS,UAAU,GAAG,UAAU,EACrC,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,WAAW,SAAS,UAAU,GAAG,KAAK,IACtC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG;IACtE,KAAK,EAAE;QACH,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;KACpC,CAAC;CACL,CAAC;AAEF,oBAAY,iBAAiB,CACzB,KAAK,SAAS,UAAU,GAAG,UAAU,EACrC,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,WAAW,SAAS,UAAU,GAAG,KAAK,IACtC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG;IACjE;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE;QACT,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;CACL,CAAC;AAEF,eAAO,MAAM,YAAY,8WAiGxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "4.
|
|
2
|
+
"version": "4.2.0",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"@types/react-dom": "^17.0.0 || ^18.0.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@refinedev/core": "^4.
|
|
33
|
+
"@refinedev/core": "^4.8.0",
|
|
34
34
|
"@esbuild-plugins/node-resolve": "^0.1.4",
|
|
35
35
|
"@types/jest": "^29.2.4",
|
|
36
36
|
"jest": "^29.3.1",
|
package/src/useForm/index.ts
CHANGED
|
@@ -5,8 +5,6 @@ import {
|
|
|
5
5
|
UseFormReturn,
|
|
6
6
|
FieldValues,
|
|
7
7
|
UseFormHandleSubmit,
|
|
8
|
-
SubmitHandler,
|
|
9
|
-
SubmitErrorHandler,
|
|
10
8
|
} from "react-hook-form";
|
|
11
9
|
import {
|
|
12
10
|
BaseRecord,
|
|
@@ -22,8 +20,9 @@ export type UseFormReturnType<
|
|
|
22
20
|
TError extends HttpError = HttpError,
|
|
23
21
|
TVariables extends FieldValues = FieldValues,
|
|
24
22
|
TContext extends object = {},
|
|
23
|
+
TSelectData extends BaseRecord = TData,
|
|
25
24
|
> = UseFormReturn<TVariables, TContext> & {
|
|
26
|
-
refineCore: UseFormReturnTypeCore<TData, TError, TVariables>;
|
|
25
|
+
refineCore: UseFormReturnTypeCore<TData, TError, TVariables, TSelectData>;
|
|
27
26
|
saveButtonProps: {
|
|
28
27
|
disabled: boolean;
|
|
29
28
|
onClick: (e: React.BaseSyntheticEvent) => void;
|
|
@@ -35,12 +34,13 @@ export type UseFormProps<
|
|
|
35
34
|
TError extends HttpError = HttpError,
|
|
36
35
|
TVariables extends FieldValues = FieldValues,
|
|
37
36
|
TContext extends object = {},
|
|
37
|
+
TSelectData extends BaseRecord = TData,
|
|
38
38
|
> = {
|
|
39
39
|
/**
|
|
40
40
|
* Configuration object for the core of the [useForm](/docs/api-reference/core/hooks/useForm/)
|
|
41
41
|
* @type [`UseFormCoreProps<TData, TError, TVariables>`](/docs/api-reference/core/hooks/useForm/#properties)
|
|
42
42
|
*/
|
|
43
|
-
refineCoreProps?: UseFormCoreProps<TData, TError, TVariables>;
|
|
43
|
+
refineCoreProps?: UseFormCoreProps<TData, TError, TVariables, TSelectData>;
|
|
44
44
|
/**
|
|
45
45
|
* When you have unsaved changes and try to leave the current page, **refine** shows a confirmation modal box.
|
|
46
46
|
* @default `false*`
|
|
@@ -53,15 +53,23 @@ export const useForm = <
|
|
|
53
53
|
TError extends HttpError = HttpError,
|
|
54
54
|
TVariables extends FieldValues = FieldValues,
|
|
55
55
|
TContext extends object = {},
|
|
56
|
+
TSelectData extends BaseRecord = TData,
|
|
56
57
|
>({
|
|
57
58
|
refineCoreProps,
|
|
58
59
|
warnWhenUnsavedChanges: warnWhenUnsavedChangesProp,
|
|
59
60
|
...rest
|
|
60
|
-
}: UseFormProps<
|
|
61
|
+
}: UseFormProps<
|
|
61
62
|
TData,
|
|
62
63
|
TError,
|
|
63
64
|
TVariables,
|
|
64
|
-
TContext
|
|
65
|
+
TContext,
|
|
66
|
+
TSelectData
|
|
67
|
+
> = {}): UseFormReturnType<
|
|
68
|
+
TData,
|
|
69
|
+
TError,
|
|
70
|
+
TVariables,
|
|
71
|
+
TContext,
|
|
72
|
+
TSelectData
|
|
65
73
|
> => {
|
|
66
74
|
const {
|
|
67
75
|
warnWhenUnsavedChanges: warnWhenUnsavedChangesRefine,
|
|
@@ -70,7 +78,12 @@ export const useForm = <
|
|
|
70
78
|
const warnWhenUnsavedChanges =
|
|
71
79
|
warnWhenUnsavedChangesProp ?? warnWhenUnsavedChangesRefine;
|
|
72
80
|
|
|
73
|
-
const useFormCoreResult = useFormCore<
|
|
81
|
+
const useFormCoreResult = useFormCore<
|
|
82
|
+
TData,
|
|
83
|
+
TError,
|
|
84
|
+
TVariables,
|
|
85
|
+
TSelectData
|
|
86
|
+
>({
|
|
74
87
|
...refineCoreProps,
|
|
75
88
|
});
|
|
76
89
|
|
|
@@ -22,7 +22,8 @@ export type UseModalFormReturnType<
|
|
|
22
22
|
TError extends HttpError = HttpError,
|
|
23
23
|
TVariables extends FieldValues = FieldValues,
|
|
24
24
|
TContext extends object = {},
|
|
25
|
-
|
|
25
|
+
TSelectData extends BaseRecord = TData,
|
|
26
|
+
> = UseFormReturnType<TData, TError, TVariables, TContext, TSelectData> & {
|
|
26
27
|
modal: {
|
|
27
28
|
submit: (values: TVariables) => void;
|
|
28
29
|
close: () => void;
|
|
@@ -37,7 +38,8 @@ export type UseModalFormProps<
|
|
|
37
38
|
TError extends HttpError = HttpError,
|
|
38
39
|
TVariables extends FieldValues = FieldValues,
|
|
39
40
|
TContext extends object = {},
|
|
40
|
-
|
|
41
|
+
TSelectData extends BaseRecord = TData,
|
|
42
|
+
> = UseFormProps<TData, TError, TVariables, TContext, TSelectData> & {
|
|
41
43
|
/**
|
|
42
44
|
* @description Configuration object for the modal.
|
|
43
45
|
* `defaultVisible`: Initial visibility state of the modal.
|
|
@@ -64,6 +66,7 @@ export const useModalForm = <
|
|
|
64
66
|
TError extends HttpError = HttpError,
|
|
65
67
|
TVariables extends FieldValues = FieldValues,
|
|
66
68
|
TContext extends object = {},
|
|
69
|
+
TSelectData extends BaseRecord = TData,
|
|
67
70
|
>({
|
|
68
71
|
modalProps,
|
|
69
72
|
refineCoreProps,
|
|
@@ -73,8 +76,15 @@ export const useModalForm = <
|
|
|
73
76
|
TData,
|
|
74
77
|
TError,
|
|
75
78
|
TVariables,
|
|
76
|
-
TContext
|
|
77
|
-
|
|
79
|
+
TContext,
|
|
80
|
+
TSelectData
|
|
81
|
+
> = {}): UseModalFormReturnType<
|
|
82
|
+
TData,
|
|
83
|
+
TError,
|
|
84
|
+
TVariables,
|
|
85
|
+
TContext,
|
|
86
|
+
TSelectData
|
|
87
|
+
> => {
|
|
78
88
|
const initiallySynced = React.useRef(false);
|
|
79
89
|
|
|
80
90
|
const translate = useTranslate();
|
|
@@ -105,7 +115,13 @@ export const useModalForm = <
|
|
|
105
115
|
autoResetForm = true,
|
|
106
116
|
} = modalProps ?? {};
|
|
107
117
|
|
|
108
|
-
const useHookFormResult = useForm<
|
|
118
|
+
const useHookFormResult = useForm<
|
|
119
|
+
TData,
|
|
120
|
+
TError,
|
|
121
|
+
TVariables,
|
|
122
|
+
TContext,
|
|
123
|
+
TSelectData
|
|
124
|
+
>({
|
|
109
125
|
refineCoreProps,
|
|
110
126
|
...rest,
|
|
111
127
|
});
|
|
@@ -9,7 +9,8 @@ export type UseStepsFormReturnType<
|
|
|
9
9
|
TError extends HttpError = HttpError,
|
|
10
10
|
TVariables extends FieldValues = FieldValues,
|
|
11
11
|
TContext extends object = {},
|
|
12
|
-
|
|
12
|
+
TSelectData extends BaseRecord = TData,
|
|
13
|
+
> = UseFormReturnType<TData, TError, TVariables, TContext, TSelectData> & {
|
|
13
14
|
steps: {
|
|
14
15
|
currentStep: number;
|
|
15
16
|
gotoStep: (step: number) => void;
|
|
@@ -21,7 +22,8 @@ export type UseStepsFormProps<
|
|
|
21
22
|
TError extends HttpError = HttpError,
|
|
22
23
|
TVariables extends FieldValues = FieldValues,
|
|
23
24
|
TContext extends object = {},
|
|
24
|
-
|
|
25
|
+
TSelectData extends BaseRecord = TData,
|
|
26
|
+
> = UseFormProps<TData, TError, TVariables, TContext, TSelectData> & {
|
|
25
27
|
/**
|
|
26
28
|
* @description Configuration object for the steps.
|
|
27
29
|
* `defaultStep`: Allows you to set the initial step.
|
|
@@ -44,6 +46,7 @@ export const useStepsForm = <
|
|
|
44
46
|
TError extends HttpError = HttpError,
|
|
45
47
|
TVariables extends FieldValues = FieldValues,
|
|
46
48
|
TContext extends object = {},
|
|
49
|
+
TSelectData extends BaseRecord = TData,
|
|
47
50
|
>({
|
|
48
51
|
stepsProps,
|
|
49
52
|
...rest
|
|
@@ -51,14 +54,28 @@ export const useStepsForm = <
|
|
|
51
54
|
TData,
|
|
52
55
|
TError,
|
|
53
56
|
TVariables,
|
|
54
|
-
TContext
|
|
55
|
-
|
|
57
|
+
TContext,
|
|
58
|
+
TSelectData
|
|
59
|
+
> = {}): UseStepsFormReturnType<
|
|
60
|
+
TData,
|
|
61
|
+
TError,
|
|
62
|
+
TVariables,
|
|
63
|
+
TContext,
|
|
64
|
+
TSelectData
|
|
65
|
+
> => {
|
|
56
66
|
const { defaultStep = 0, isBackValidate = false } = stepsProps ?? {};
|
|
57
67
|
const [current, setCurrent] = useState(defaultStep);
|
|
58
68
|
|
|
59
|
-
const useHookFormResult = useForm
|
|
69
|
+
const useHookFormResult = useForm<
|
|
70
|
+
TData,
|
|
71
|
+
TError,
|
|
72
|
+
TVariables,
|
|
73
|
+
TContext,
|
|
74
|
+
TSelectData
|
|
75
|
+
>({
|
|
60
76
|
...rest,
|
|
61
77
|
});
|
|
78
|
+
|
|
62
79
|
const {
|
|
63
80
|
trigger,
|
|
64
81
|
getValues,
|