@refinedev/react-hook-form 4.10.1 → 5.0.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/index.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client"
2
- var le=Object.create;var M=Object.defineProperty;var ue=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var ce=Object.getPrototypeOf,me=Object.prototype.hasOwnProperty;var y=(e,t)=>M(e,"name",{value:t,configurable:!0});var Fe=(e,t)=>{for(var s in t)M(e,s,{get:t[s],enumerable:!0})},L=(e,t,s,D)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of pe(t))!me.call(e,n)&&n!==s&&M(e,n,{get:()=>t[n],enumerable:!(D=ue(t,n))||D.enumerable});return e};var K=(e,t,s)=>(s=e!=null?le(ce(e)):{},L(t||!e||!e.__esModule?M(s,"default",{value:e,enumerable:!0}):s,e)),Re=e=>L(M({},"__esModule",{value:!0}),e);var ye={};Fe(ye,{useForm:()=>C,useModalForm:()=>oe,useStepsForm:()=>ae});module.exports=Re(ye);var Y=require("react"),ee=K(require("lodash/get")),te=K(require("lodash/has")),re=require("react-hook-form"),E=require("@refinedev/core");var C=y(({refineCoreProps:e,warnWhenUnsavedChanges:t,disableServerSideValidation:s=!1,...D}={})=>{let{options:n}=(0,E.useRefineContext)(),H=(n==null?void 0:n.disableServerSideValidation)||s,g=(0,E.useTranslate)(),{warnWhenUnsavedChanges:Q,setWarnWhen:B}=(0,E.useWarnAboutChange)(),S=t??Q,d=(0,re.useForm)({...D}),{watch:F,setValue:x,getValues:p,handleSubmit:T,setError:b}=d,f=(0,E.useForm)({...e,onMutationError:(a,o,r)=>{var V,k;if(H){(V=e==null?void 0:e.onMutationError)==null||V.call(e,a,o,r);return}let R=a==null?void 0:a.errors;for(let h in R){if(!Object.keys((0,E.flattenObjectKeys)(o)).includes(h))continue;let m=R[h],U="";Array.isArray(m)&&(U=m.join(" ")),typeof m=="string"&&(U=m),typeof m=="boolean"&&m&&(U="Field is not valid."),typeof m=="object"&&"key"in m&&(U=g(m.key,m.message)),b(h,{message:U})}(k=e==null?void 0:e.onMutationError)==null||k.call(e,a,o,r)}}),{query:c,onFinish:i,formLoading:v,onFinishAutoSave:A}=f;(0,Y.useEffect)(()=>{var r;let a=(r=c==null?void 0:c.data)==null?void 0:r.data;if(!a)return;Object.keys((0,E.flattenObjectKeys)(p())).forEach(R=>{let V=(0,te.default)(a,R),k=(0,ee.default)(a,R);V&&x(R,k)})},[c==null?void 0:c.data,x,p]),(0,Y.useEffect)(()=>{let a=F((o,{type:r})=>{r==="change"&&N(o)});return()=>a.unsubscribe()},[F]);let N=y(a=>{var o,r;if(S&&B(!0),(o=e==null?void 0:e.autoSave)!=null&&o.enabled){B(!1);let R=((r=e.autoSave)==null?void 0:r.onFinish)??(V=>V);return A(R(a)).catch(V=>V)}return a},"onValuesChange"),j=y((a,o)=>async r=>(B(!1),T(a,o)(r)),"handleSubmit");return{...d,handleSubmit:j,refineCore:f,saveButtonProps:{disabled:v,onClick:a=>{j(o=>i(o).catch(()=>{}),()=>!1)(a)}}}},"useForm");var P=require("react"),se=K(require("lodash/get"));var ae=y(({stepsProps:e,...t}={})=>{let{defaultStep:s=0,isBackValidate:D=!1}=e??{},[n,H]=(0,P.useState)(s),g=C({...t}),{trigger:Q,getValues:B,setValue:S,formState:{dirtyFields:d},refineCore:{query:F}}=g;(0,P.useEffect)(()=>{var f;let T=(f=F==null?void 0:F.data)==null?void 0:f.data;if(!T)return;let b=Object.keys(B());console.log({dirtyFields:d,registeredFields:b,data:T}),Object.entries(T).forEach(([c,i])=>{let v=c;b.includes(v)&&((0,se.default)(d,v)||S(v,i))})},[F==null?void 0:F.data,n,S,B]);let x=y(T=>{let b=T;T<0&&(b=0),H(b)},"go");return{...g,steps:{currentStep:n,gotoStep:y(async T=>{if(T===n)return;if(T<n&&!D){x(T);return}await Q()&&x(T)},"gotoStep")}}},"useStepsForm");var z=require("react"),u=require("@refinedev/core");var $=K(require("react"));var oe=y(({modalProps:e,refineCoreProps:t,syncWithLocation:s,...D}={})=>{var X,Z;let n=(0,u.useInvalidate)(),[H,g]=$.default.useState(!1),Q=(0,u.useTranslate)(),{resource:B,action:S}=t??{},{resource:d,action:F,identifier:x}=(0,u.useResource)(B),p=(0,u.useParsed)(),T=(0,u.useGo)(),b=(0,u.useUserFriendlyName)(),f=S??F??"",c=!(typeof s=="object"&&(s==null?void 0:s.syncId)===!1),i=typeof s=="object"&&"key"in s?s.key:d&&f&&s?`modal-${x}-${f}`:void 0,{defaultVisible:v=!1,autoSubmitClose:A=!0,autoResetForm:N=!0}=e??{},j=C({refineCoreProps:{...t,meta:{...i?{[i]:void 0}:{},...t==null?void 0:t.meta}},...D}),{reset:J,refineCore:{onFinish:a,id:o,setId:r,autoSaveProps:R},saveButtonProps:V,handleSubmit:k}=j,{visible:h,show:w,close:m}=(0,u.useModal)({defaultVisible:v});$.default.useEffect(()=>{var l,W,G,_;if(H===!1&&i){let O=(W=(l=p==null?void 0:p.params)==null?void 0:l[i])==null?void 0:W.open;if(typeof O=="boolean"?O&&w():typeof O=="string"&&O==="true"&&w(),c){let q=(_=(G=p==null?void 0:p.params)==null?void 0:G[i])==null?void 0:_.id;q&&(r==null||r(q))}g(!0)}},[i,p,c,r]),$.default.useEffect(()=>{var l;H===!0&&(h&&i?T({query:{[i]:{...(l=p==null?void 0:p.params)==null?void 0:l[i],open:!0,...c&&o&&{id:o}}},options:{keepQuery:!0},type:"replace"}):i&&!h&&T({query:{[i]:void 0},options:{keepQuery:!0},type:"replace"}))},[o,h,w,i,c]);let U=y(async l=>{await a(l),A&&m(),N&&J()},"submit"),{warnWhen:I,setWarnWhen:ne}=(0,u.useWarnAboutChange)(),de=(0,z.useCallback)(()=>{var l;if(R.status==="success"&&((l=t==null?void 0:t.autoSave)!=null&&l.invalidateOnClose)&&n({id:o,invalidates:t.invalidates||["list","many","detail"],dataProviderName:t.dataProviderName,resource:x}),I)if(window.confirm(Q("warnWhenUnsavedChanges","Are you sure you want to leave? You have unsaved changes.")))ne(!1);else return;r==null||r(void 0),m()},[I,R.status]),Te=(0,z.useCallback)(l=>{typeof l<"u"&&(r==null||r(l)),(!(f==="edit"||f==="clone")||(typeof l<"u"||typeof o<"u"))&&w()},[o]),ie=Q(`${x}.titles.${S}`,void 0,`${b(`${S} ${((X=d==null?void 0:d.meta)==null?void 0:X.label)??((Z=d==null?void 0:d.options)==null?void 0:Z.label)??(d==null?void 0:d.label)??x}`,"singular")}`);return{modal:{submit:U,close:de,show:Te,visible:h,title:ie},...j,saveButtonProps:{...V,onClick:l=>k(U)(l)}}},"useModalForm");
2
+ var ue=Object.create;var w=Object.defineProperty;var le=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var ce=Object.getPrototypeOf,me=Object.prototype.hasOwnProperty;var y=(e,t)=>w(e,"name",{value:t,configurable:!0});var Fe=(e,t)=>{for(var r in t)w(e,r,{get:t[r],enumerable:!0})},L=(e,t,r,B)=>{if(t&&typeof t=="object"||typeof t=="function")for(let d of pe(t))!me.call(e,d)&&d!==r&&w(e,d,{get:()=>t[d],enumerable:!(B=le(t,d))||B.enumerable});return e};var P=(e,t,r)=>(r=e!=null?ue(ce(e)):{},L(t||!e||!e.__esModule?w(r,"default",{value:e,enumerable:!0}):r,e)),Re=e=>L(w({},"__esModule",{value:!0}),e);var ye={};Fe(ye,{useForm:()=>k,useModalForm:()=>oe,useStepsForm:()=>ae});module.exports=Re(ye);var z=require("react"),ee=P(require("lodash/get")),te=P(require("lodash/has")),re=require("react-hook-form"),E=require("@refinedev/core");var k=y(({refineCoreProps:e,warnWhenUnsavedChanges:t,disableServerSideValidation:r=!1,...B}={})=>{let{options:d}=(0,E.useRefineContext)(),v=(d==null?void 0:d.disableServerSideValidation)||r,H=(0,E.useTranslate)(),{warnWhenUnsavedChanges:g,setWarnWhen:b}=(0,E.useWarnAboutChange)(),f=t??g,V=(0,re.useForm)({...B}),{watch:c,setValue:S,getValues:m,handleSubmit:u,setError:D}=V,x=(0,E.useForm)({...e,onMutationError:(s,l,a)=>{var R,Q;if(v){(R=e==null?void 0:e.onMutationError)==null||R.call(e,s,l,a);return}let o=s==null?void 0:s.errors;for(let C in o){if(!Object.keys((0,E.flattenObjectKeys)(l)).includes(C))continue;let p=o[C],h="";Array.isArray(p)&&(h=p.join(" ")),typeof p=="string"&&(h=p),typeof p=="boolean"&&p&&(h="Field is not valid."),typeof p=="object"&&"key"in p&&(h=H(p.key,p.message)),D(C,{message:h})}(Q=e==null?void 0:e.onMutationError)==null||Q.call(e,s,l,a)}}),{query:F,onFinish:T,formLoading:U,onFinishAutoSave:A}=x;(0,z.useEffect)(()=>{var a;let s=(a=F==null?void 0:F.data)==null?void 0:a.data;if(!s)return;Object.keys((0,E.flattenObjectKeys)(m())).forEach(o=>{let R=(0,te.default)(s,o),Q=(0,ee.default)(s,o);R&&S(o,Q)})},[F==null?void 0:F.data,S,m]),(0,z.useEffect)(()=>{let s=c((l,{type:a})=>{a==="change"&&N(l)});return()=>s.unsubscribe()},[c]);let N=y(s=>{var l,a;if(f&&b(!0),(l=e==null?void 0:e.autoSave)!=null&&l.enabled){b(!1);let o=((a=e.autoSave)==null?void 0:a.onFinish)??(R=>R);return A(o(s)).catch(R=>R)}return s},"onValuesChange"),M=y((s,l)=>async a=>(b(!1),u(s,l)(a)),"handleSubmit");return{...V,handleSubmit:M,refineCore:x,saveButtonProps:{disabled:U,onClick:s=>{M(l=>T(l).catch(()=>{}),()=>!1)(s)}}}},"useForm");var K=require("react"),se=P(require("lodash/get"));var ae=y(({stepsProps:e,...t}={})=>{let{defaultStep:r=0,isBackValidate:B=!1}=e??{},[d,v]=(0,K.useState)(r),H=k({...t}),{trigger:g,getValues:b,setValue:f,formState:{dirtyFields:V},refineCore:{query:c}}=H;(0,K.useEffect)(()=>{var x;let u=(x=c==null?void 0:c.data)==null?void 0:x.data;if(!u)return;let D=Object.keys(b());Object.entries(u).forEach(([F,T])=>{let U=F;D.includes(U)&&((0,se.default)(V,U)||f(U,T))})},[c==null?void 0:c.data,d,f,b]);let S=y(u=>{let D=u;u<0&&(D=0),v(D)},"go");return{...H,steps:{currentStep:d,gotoStep:y(async u=>{if(u===d)return;if(u<d&&!B){S(u);return}await g()&&S(u)},"gotoStep")}}},"useStepsForm");var J=require("react"),n=require("@refinedev/core");var $=P(require("react"));var oe=y(({modalProps:e,refineCoreProps:t,syncWithLocation:r,...B}={})=>{var Z;let d=(0,n.useInvalidate)(),[v,H]=$.default.useState(!1),g=(0,n.useTranslate)(),{resource:b,action:f}=t??{},{resource:V,identifier:c}=(0,n.useResourceParams)({resource:b}),{action:S}=(0,n.useResourceParams)({resource:b,action:f}),m=(0,n.useParsed)(),u=(0,n.useGo)(),D=(0,n.useUserFriendlyName)(),x=f??S??"",F=!(typeof r=="object"&&(r==null?void 0:r.syncId)===!1),T=typeof r=="object"&&"key"in r?r.key:V&&x&&r?`modal-${c}-${x}`:void 0,{defaultVisible:U=!1,autoSubmitClose:A=!0,autoResetForm:N=!0,autoResetFormWhenClose:M=!0}=e??{},I=k({refineCoreProps:{...t,meta:{...T?{[T]:void 0}:{},...t==null?void 0:t.meta}},...B}),{reset:s,refineCore:{onFinish:l,id:a,setId:o,autoSaveProps:R},saveButtonProps:Q,handleSubmit:C}=I,{visible:j,show:p,close:h}=(0,n.useModal)({defaultVisible:U});$.default.useEffect(()=>{var i,W,Y,_;if(v===!1&&T){let O=(W=(i=m==null?void 0:m.params)==null?void 0:i[T])==null?void 0:W.open;if(typeof O=="boolean"?O&&p():typeof O=="string"&&O==="true"&&p(),F){let q=(_=(Y=m==null?void 0:m.params)==null?void 0:Y[T])==null?void 0:_.id;q&&(o==null||o(q))}H(!0)}},[T,m,F,o]),$.default.useEffect(()=>{var i;v===!0&&(j&&T?u({query:{[T]:{...(i=m==null?void 0:m.params)==null?void 0:i[T],open:!0,...F&&a&&{id:a}}},options:{keepQuery:!0},type:"replace"}):T&&!j&&u({query:{[T]:void 0},options:{keepQuery:!0},type:"replace"}))},[a,j,p,T,F]);let G=y(async i=>{await l(i),A&&h(),N&&s()},"submit"),{warnWhen:X,setWarnWhen:ne}=(0,n.useWarnAboutChange)(),de=(0,J.useCallback)(()=>{var i;if(R.status==="success"&&((i=t==null?void 0:t.autoSave)!=null&&i.invalidateOnClose)&&d({id:a,invalidates:t.invalidates||["list","many","detail"],dataProviderName:t.dataProviderName,resource:c}),X)if(window.confirm(g("warnWhenUnsavedChanges","Are you sure you want to leave? You have unsaved changes.")))ne(!1);else return;o==null||o(void 0),h(),M&&s()},[X,R.status]),Te=(0,J.useCallback)(i=>{typeof i<"u"&&(o==null||o(i)),(!(x==="edit"||x==="clone")||(typeof i<"u"||typeof a<"u"))&&p()},[a]),ie=g(`${c}.titles.${f}`,void 0,`${D(`${f} ${((Z=V==null?void 0:V.meta)==null?void 0:Z.label)??c}`,"singular")}`);return{modal:{submit:G,close:de,show:Te,visible:j,title:ie},...I,saveButtonProps:{...Q,onClick:i=>C(G)(i)}}},"useModalForm");
3
3
  //# sourceMappingURL=index.cjs.map
@@ -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/index.js\";\nexport {\n useStepsForm,\n UseStepsFormProps,\n UseStepsFormReturnType,\n} from \"./useStepsForm/index.js\";\nexport {\n useModalForm,\n UseModalFormProps,\n UseModalFormReturnType,\n} from \"./useModalForm/index.js\";\n","import React, { useEffect } from \"react\";\nimport get from \"lodash/get\";\nimport has from \"lodash/has\";\n\nimport {\n useForm as useHookForm,\n type UseFormProps as UseHookFormProps,\n type UseFormReturn,\n type FieldValues,\n type UseFormHandleSubmit,\n type Path,\n} from \"react-hook-form\";\nimport {\n type BaseRecord,\n type HttpError,\n useForm as useFormCore,\n useWarnAboutChange,\n type UseFormProps as UseFormCoreProps,\n type UseFormReturnType as UseFormReturnTypeCore,\n useTranslate,\n useRefineContext,\n flattenObjectKeys,\n} from \"@refinedev/core\";\n\nexport type UseFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturn<TVariables, TContext> & {\n refineCore: UseFormReturnTypeCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >;\n saveButtonProps: {\n disabled: boolean;\n onClick: (e: React.BaseSyntheticEvent) => void;\n };\n};\n\nexport type UseFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = {\n /**\n * Configuration object for the core of the [useForm](/docs/api-reference/core/hooks/useForm/)\n * @type [`UseFormCoreProps<TQueryFnData, TError, TVariables, TData, TResponse, TResponseError>`](/docs/api-reference/core/hooks/useForm/#properties)\n */\n refineCoreProps?: UseFormCoreProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >;\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 /**\n * Disables server-side validation\n * @default false\n * @see {@link https://refine.dev/docs/advanced-tutorials/forms/server-side-form-validation/}\n */\n disableServerSideValidation?: boolean;\n} & UseHookFormProps<TVariables, TContext>;\n\nexport const useForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n refineCoreProps,\n warnWhenUnsavedChanges: warnWhenUnsavedChangesProp,\n disableServerSideValidation: disableServerSideValidationProp = false,\n ...rest\n}: UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> = {}): UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> => {\n const { options } = useRefineContext();\n const disableServerSideValidation =\n options?.disableServerSideValidation || disableServerSideValidationProp;\n\n const translate = useTranslate();\n\n const { warnWhenUnsavedChanges: warnWhenUnsavedChangesRefine, setWarnWhen } =\n useWarnAboutChange();\n const warnWhenUnsavedChanges =\n warnWhenUnsavedChangesProp ?? warnWhenUnsavedChangesRefine;\n\n const useHookFormResult = useHookForm<TVariables, TContext>({\n ...rest,\n });\n\n const {\n watch,\n setValue,\n getValues,\n handleSubmit: handleSubmitReactHookForm,\n setError,\n } = useHookFormResult;\n\n const useFormCoreResult = useFormCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n ...refineCoreProps,\n onMutationError: (error, _variables, _context) => {\n if (disableServerSideValidation) {\n refineCoreProps?.onMutationError?.(error, _variables, _context);\n return;\n }\n\n const errors = error?.errors;\n\n for (const key in errors) {\n // when the key is not registered in the form, react-hook-form not working\n const isKeyInVariables = Object.keys(\n flattenObjectKeys(_variables),\n ).includes(key);\n\n if (!isKeyInVariables) {\n continue;\n }\n\n const fieldError = errors[key];\n\n let newError = \"\";\n\n if (Array.isArray(fieldError)) {\n newError = fieldError.join(\" \");\n }\n\n if (typeof fieldError === \"string\") {\n newError = fieldError;\n }\n\n if (typeof fieldError === \"boolean\" && fieldError) {\n newError = \"Field is not valid.\";\n }\n\n if (typeof fieldError === \"object\" && \"key\" in fieldError) {\n const translatedMessage = translate(\n fieldError.key,\n fieldError.message,\n );\n\n newError = translatedMessage;\n }\n\n setError(key as Path<TVariables>, {\n message: newError,\n });\n }\n\n refineCoreProps?.onMutationError?.(error, _variables, _context);\n },\n });\n\n const { query, onFinish, formLoading, onFinishAutoSave } = useFormCoreResult;\n\n useEffect(() => {\n const data = query?.data?.data;\n if (!data) return;\n\n /**\n * get registered fields from react-hook-form\n */\n const registeredFields = Object.keys(flattenObjectKeys(getValues()));\n\n /**\n * set values from query result as default values\n */\n registeredFields.forEach((path) => {\n const hasValue = has(data, path);\n const dataValue = get(data, path);\n\n /**\n * set value if the path exists in the query result even if the value is null\n */\n if (hasValue) {\n setValue(path as Path<TVariables>, dataValue);\n }\n });\n }, [query?.data, setValue, getValues]);\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: TVariables) => {\n if (warnWhenUnsavedChanges) {\n setWarnWhen(true);\n }\n\n if (refineCoreProps?.autoSave?.enabled) {\n setWarnWhen(false);\n\n const onFinishProps =\n refineCoreProps.autoSave?.onFinish ?? ((values: TVariables) => values);\n\n return onFinishAutoSave(onFinishProps(changeValues)).catch(\n (error) => error,\n );\n }\n\n return changeValues;\n };\n\n const handleSubmit: UseFormHandleSubmit<TVariables> =\n (onValid, onInvalid) => async (e) => {\n setWarnWhen(false);\n return handleSubmitReactHookForm(onValid, onInvalid)(e);\n };\n\n const saveButtonProps = {\n disabled: formLoading,\n onClick: (e: React.BaseSyntheticEvent) => {\n handleSubmit(\n (v) => onFinish(v).catch(() => {}),\n () => false,\n )(e);\n },\n };\n\n return {\n ...useHookFormResult,\n handleSubmit,\n refineCore: useFormCoreResult,\n saveButtonProps,\n };\n};\n","import { useEffect, useState } from \"react\";\nimport type { FieldValues, Path } from \"react-hook-form\";\nimport type { BaseRecord, HttpError } from \"@refinedev/core\";\nimport get from \"lodash/get\";\n\nimport { useForm, type UseFormProps, type UseFormReturnType } from \"../useForm\";\n\nexport type UseStepsFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> & {\n steps: {\n currentStep: number;\n gotoStep: (step: number) => void;\n };\n};\n\nexport type UseStepsFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> & {\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 TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n stepsProps,\n ...rest\n}: UseStepsFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> = {}): UseStepsFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> => {\n const { defaultStep = 0, isBackValidate = false } = stepsProps ?? {};\n const [current, setCurrent] = useState(defaultStep);\n\n const useHookFormResult = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n >({\n ...rest,\n });\n\n const {\n trigger,\n getValues,\n setValue,\n formState: { dirtyFields },\n refineCore: { query },\n } = useHookFormResult;\n\n useEffect(() => {\n const data = query?.data?.data;\n if (!data) return;\n\n const registeredFields = Object.keys(getValues());\n\n console.log({\n dirtyFields,\n registeredFields,\n data,\n });\n\n Object.entries(data).forEach(([key, value]) => {\n const name = key as Path<TVariables>;\n\n if (registeredFields.includes(name)) {\n if (!get(dirtyFields, name)) {\n setValue(name, value);\n }\n }\n });\n }, [query?.data, current, setValue, getValues]);\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 type BaseKey,\n type BaseRecord,\n type FormWithSyncWithLocationParams,\n type HttpError,\n useGo,\n useModal,\n useParsed,\n useResource,\n useUserFriendlyName,\n useTranslate,\n useWarnAboutChange,\n useInvalidate,\n} from \"@refinedev/core\";\nimport type { FieldValues } from \"react-hook-form\";\n\nimport { useForm, type UseFormProps, type UseFormReturnType } from \"../useForm\";\nimport React from \"react\";\n\nexport type UseModalFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> & {\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 TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> & {\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 TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n modalProps,\n refineCoreProps,\n syncWithLocation,\n ...rest\n}: UseModalFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> = {}): UseModalFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> => {\n const invalidate = useInvalidate();\n const [initiallySynced, setInitiallySynced] = React.useState(false);\n\n const translate = useTranslate();\n\n const { resource: resourceProp, action: actionProp } = refineCoreProps ?? {};\n\n const {\n resource,\n action: actionFromParams,\n identifier,\n } = useResource(resourceProp);\n\n const parsed = useParsed();\n const go = useGo();\n const getUserFriendlyName = useUserFriendlyName();\n\n const action = actionProp ?? actionFromParams ?? \"\";\n\n const syncingId = !(\n typeof syncWithLocation === \"object\" && syncWithLocation?.syncId === false\n );\n\n const syncWithLocationKey =\n typeof syncWithLocation === \"object\" && \"key\" in syncWithLocation\n ? syncWithLocation.key\n : resource && action && syncWithLocation\n ? `modal-${identifier}-${action}`\n : undefined;\n\n const {\n defaultVisible = false,\n autoSubmitClose = true,\n autoResetForm = true,\n } = modalProps ?? {};\n\n const useHookFormResult = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n >({\n refineCoreProps: {\n ...refineCoreProps,\n meta: {\n ...(syncWithLocationKey ? { [syncWithLocationKey]: undefined } : {}),\n ...refineCoreProps?.meta,\n },\n },\n ...rest,\n });\n\n const {\n reset,\n refineCore: { onFinish, id, setId, autoSaveProps },\n saveButtonProps,\n handleSubmit,\n } = useHookFormResult;\n\n const { visible, show, close } = useModal({\n defaultVisible,\n });\n\n React.useEffect(() => {\n if (initiallySynced === 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 setInitiallySynced(true);\n }\n }, [syncWithLocationKey, parsed, syncingId, setId]);\n\n React.useEffect(() => {\n if (initiallySynced === 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 (\n autoSaveProps.status === \"success\" &&\n refineCoreProps?.autoSave?.invalidateOnClose\n ) {\n invalidate({\n id,\n invalidates: refineCoreProps.invalidates || [\"list\", \"many\", \"detail\"],\n dataProviderName: refineCoreProps.dataProviderName,\n resource: identifier,\n });\n }\n\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, autoSaveProps.status]);\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 = typeof showId !== \"undefined\" || typeof id !== \"undefined\";\n if (needsIdToOpen ? hasId : true) {\n show();\n }\n },\n [id],\n );\n\n const title = translate(\n `${identifier}.titles.${actionProp}`,\n undefined,\n `${getUserFriendlyName(\n `${actionProp} ${\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier\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_get","import_has","import_react_hook_form","import_core","useForm","__name","refineCoreProps","warnWhenUnsavedChangesProp","disableServerSideValidationProp","rest","options","disableServerSideValidation","translate","warnWhenUnsavedChangesRefine","setWarnWhen","warnWhenUnsavedChanges","useHookFormResult","useHookForm","watch","setValue","getValues","handleSubmitReactHookForm","setError","useFormCoreResult","useFormCore","error","_variables","_context","_a","_b","errors","key","fieldError","newError","query","onFinish","formLoading","onFinishAutoSave","data","path","hasValue","has","dataValue","get","subscription","values","type","onValuesChange","changeValues","onFinishProps","handleSubmit","onValid","onInvalid","e","v","import_react","import_get","useStepsForm","__name","stepsProps","rest","defaultStep","isBackValidate","current","setCurrent","useHookFormResult","useForm","trigger","getValues","setValue","dirtyFields","query","_a","data","registeredFields","key","value","name","get","go","step","targetStep","import_react","import_core","import_react","useModalForm","__name","modalProps","refineCoreProps","syncWithLocation","rest","_a","_b","invalidate","initiallySynced","setInitiallySynced","React","translate","resourceProp","actionProp","resource","actionFromParams","identifier","parsed","go","getUserFriendlyName","action","syncingId","syncWithLocationKey","defaultVisible","autoSubmitClose","autoResetForm","useHookFormResult","useForm","reset","onFinish","id","setId","autoSaveProps","saveButtonProps","handleSubmit","visible","show","close","_c","_d","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/index.js\";\nexport {\n useStepsForm,\n UseStepsFormProps,\n UseStepsFormReturnType,\n} from \"./useStepsForm/index.js\";\nexport {\n useModalForm,\n UseModalFormProps,\n UseModalFormReturnType,\n} from \"./useModalForm/index.js\";\n","import React, { useEffect } from \"react\";\nimport get from \"lodash/get\";\nimport has from \"lodash/has\";\n\nimport {\n useForm as useHookForm,\n type UseFormProps as UseHookFormProps,\n type UseFormReturn,\n type FieldValues,\n type UseFormHandleSubmit,\n type Path,\n} from \"react-hook-form\";\nimport {\n type BaseRecord,\n type HttpError,\n useForm as useFormCore,\n useWarnAboutChange,\n type UseFormProps as UseFormCoreProps,\n type UseFormReturnType as UseFormReturnTypeCore,\n useTranslate,\n useRefineContext,\n flattenObjectKeys,\n} from \"@refinedev/core\";\n\nexport type UseFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturn<TVariables, TContext> & {\n refineCore: UseFormReturnTypeCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >;\n saveButtonProps: {\n disabled: boolean;\n onClick: (e: React.BaseSyntheticEvent) => void;\n };\n};\n\nexport type UseFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = {\n /**\n * Configuration object for the core of the [useForm](/docs/api-reference/core/hooks/useForm/)\n * @type [`UseFormCoreProps<TQueryFnData, TError, TVariables, TData, TResponse, TResponseError>`](/docs/api-reference/core/hooks/useForm/#properties)\n */\n refineCoreProps?: UseFormCoreProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >;\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 /**\n * Disables server-side validation\n * @default false\n * @see {@link https://refine.dev/docs/advanced-tutorials/forms/server-side-form-validation/}\n */\n disableServerSideValidation?: boolean;\n} & UseHookFormProps<TVariables, TContext>;\n\nexport const useForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n refineCoreProps,\n warnWhenUnsavedChanges: warnWhenUnsavedChangesProp,\n disableServerSideValidation: disableServerSideValidationProp = false,\n ...rest\n}: UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> = {}): UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> => {\n const { options } = useRefineContext();\n const disableServerSideValidation =\n options?.disableServerSideValidation || disableServerSideValidationProp;\n\n const translate = useTranslate();\n\n const { warnWhenUnsavedChanges: warnWhenUnsavedChangesRefine, setWarnWhen } =\n useWarnAboutChange();\n const warnWhenUnsavedChanges =\n warnWhenUnsavedChangesProp ?? warnWhenUnsavedChangesRefine;\n\n const useHookFormResult = useHookForm<TVariables, TContext>({\n ...rest,\n });\n\n const {\n watch,\n setValue,\n getValues,\n handleSubmit: handleSubmitReactHookForm,\n setError,\n } = useHookFormResult;\n\n const useFormCoreResult = useFormCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n ...refineCoreProps,\n onMutationError: (error, _variables, _context) => {\n if (disableServerSideValidation) {\n refineCoreProps?.onMutationError?.(error, _variables, _context);\n return;\n }\n\n const errors = error?.errors;\n\n for (const key in errors) {\n // when the key is not registered in the form, react-hook-form not working\n const isKeyInVariables = Object.keys(\n flattenObjectKeys(_variables),\n ).includes(key);\n\n if (!isKeyInVariables) {\n continue;\n }\n\n const fieldError = errors[key];\n\n let newError = \"\";\n\n if (Array.isArray(fieldError)) {\n newError = fieldError.join(\" \");\n }\n\n if (typeof fieldError === \"string\") {\n newError = fieldError;\n }\n\n if (typeof fieldError === \"boolean\" && fieldError) {\n newError = \"Field is not valid.\";\n }\n\n if (typeof fieldError === \"object\" && \"key\" in fieldError) {\n const translatedMessage = translate(\n fieldError.key,\n fieldError.message,\n );\n\n newError = translatedMessage;\n }\n\n setError(key as Path<TVariables>, {\n message: newError,\n });\n }\n\n refineCoreProps?.onMutationError?.(error, _variables, _context);\n },\n });\n\n const { query, onFinish, formLoading, onFinishAutoSave } = useFormCoreResult;\n\n useEffect(() => {\n const data = query?.data?.data;\n if (!data) return;\n\n /**\n * get registered fields from react-hook-form\n */\n const registeredFields = Object.keys(flattenObjectKeys(getValues()));\n\n /**\n * set values from query result as default values\n */\n registeredFields.forEach((path) => {\n const hasValue = has(data, path);\n const dataValue = get(data, path);\n\n /**\n * set value if the path exists in the query result even if the value is null\n */\n if (hasValue) {\n setValue(path as Path<TVariables>, dataValue);\n }\n });\n }, [query?.data, setValue, getValues]);\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: TVariables) => {\n if (warnWhenUnsavedChanges) {\n setWarnWhen(true);\n }\n\n if (refineCoreProps?.autoSave?.enabled) {\n setWarnWhen(false);\n\n const onFinishProps =\n refineCoreProps.autoSave?.onFinish ?? ((values: TVariables) => values);\n\n return onFinishAutoSave(onFinishProps(changeValues)).catch(\n (error) => error,\n );\n }\n\n return changeValues;\n };\n\n const handleSubmit: UseFormHandleSubmit<TVariables> =\n (onValid, onInvalid) => async (e) => {\n setWarnWhen(false);\n return handleSubmitReactHookForm(onValid, onInvalid)(e);\n };\n\n const saveButtonProps = {\n disabled: formLoading,\n onClick: (e: React.BaseSyntheticEvent) => {\n handleSubmit(\n (v) => onFinish(v).catch(() => {}),\n () => false,\n )(e);\n },\n };\n\n return {\n ...useHookFormResult,\n handleSubmit,\n refineCore: useFormCoreResult,\n saveButtonProps,\n };\n};\n","import { useEffect, useState } from \"react\";\nimport type { FieldValues, Path } from \"react-hook-form\";\nimport type { BaseRecord, HttpError } from \"@refinedev/core\";\nimport get from \"lodash/get\";\n\nimport { useForm, type UseFormProps, type UseFormReturnType } from \"../useForm\";\n\nexport type UseStepsFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> & {\n steps: {\n currentStep: number;\n gotoStep: (step: number) => void;\n };\n};\n\nexport type UseStepsFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> & {\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 TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n stepsProps,\n ...rest\n}: UseStepsFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> = {}): UseStepsFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> => {\n const { defaultStep = 0, isBackValidate = false } = stepsProps ?? {};\n const [current, setCurrent] = useState(defaultStep);\n\n const useHookFormResult = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n >({\n ...rest,\n });\n\n const {\n trigger,\n getValues,\n setValue,\n formState: { dirtyFields },\n refineCore: { query },\n } = useHookFormResult;\n\n useEffect(() => {\n const data = query?.data?.data;\n if (!data) return;\n\n const registeredFields = Object.keys(getValues());\n\n Object.entries(data).forEach(([key, value]) => {\n const name = key as Path<TVariables>;\n\n if (registeredFields.includes(name)) {\n if (!get(dirtyFields, name)) {\n setValue(name, value);\n }\n }\n });\n }, [query?.data, current, setValue, getValues]);\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 type BaseKey,\n type BaseRecord,\n type FormWithSyncWithLocationParams,\n type HttpError,\n useGo,\n useModal,\n useParsed,\n useUserFriendlyName,\n useTranslate,\n useWarnAboutChange,\n useInvalidate,\n useResourceParams,\n} from \"@refinedev/core\";\nimport type { FieldValues } from \"react-hook-form\";\n\nimport { useForm, type UseFormProps, type UseFormReturnType } from \"../useForm\";\nimport React from \"react\";\n\nexport type UseModalFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> & {\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 TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> & {\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 * \n * `autoResetFormWhenClose`: Whether the form should be reset to defaultValues when the modal is closed.\n * @type `{\n defaultVisible?: boolean;\n autoSubmitClose?: boolean;\n autoResetForm?: boolean;\n autoResetFormWhenClose?: boolean;\n }`\n * @default `defaultVisible = false` `autoSubmitClose = true` `autoResetForm = true` `autoResetFormWhenClose = true`\n */\n modalProps?: {\n defaultVisible?: boolean;\n autoSubmitClose?: boolean;\n autoResetForm?: boolean;\n autoResetFormWhenClose?: boolean;\n };\n} & FormWithSyncWithLocationParams;\n\nexport const useModalForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n modalProps,\n refineCoreProps,\n syncWithLocation,\n ...rest\n}: UseModalFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> = {}): UseModalFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> => {\n const invalidate = useInvalidate();\n const [initiallySynced, setInitiallySynced] = React.useState(false);\n\n const translate = useTranslate();\n\n const { resource: resourceProp, action: actionProp } = refineCoreProps ?? {};\n\n const { resource, identifier } = useResourceParams({\n resource: resourceProp,\n });\n const { action: actionFromParams } = useResourceParams({\n resource: resourceProp,\n action: actionProp,\n });\n\n const parsed = useParsed();\n const go = useGo();\n const getUserFriendlyName = useUserFriendlyName();\n\n const action = actionProp ?? actionFromParams ?? \"\";\n\n const syncingId = !(\n typeof syncWithLocation === \"object\" && syncWithLocation?.syncId === false\n );\n\n const syncWithLocationKey =\n typeof syncWithLocation === \"object\" && \"key\" in syncWithLocation\n ? syncWithLocation.key\n : resource && action && syncWithLocation\n ? `modal-${identifier}-${action}`\n : undefined;\n\n const {\n defaultVisible = false,\n autoSubmitClose = true,\n autoResetForm = true,\n autoResetFormWhenClose = true,\n } = modalProps ?? {};\n\n const useHookFormResult = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n >({\n refineCoreProps: {\n ...refineCoreProps,\n meta: {\n ...(syncWithLocationKey ? { [syncWithLocationKey]: undefined } : {}),\n ...refineCoreProps?.meta,\n },\n },\n ...rest,\n });\n\n const {\n reset,\n refineCore: { onFinish, id, setId, autoSaveProps },\n saveButtonProps,\n handleSubmit,\n } = useHookFormResult;\n\n const { visible, show, close } = useModal({\n defaultVisible,\n });\n\n React.useEffect(() => {\n if (initiallySynced === 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 setInitiallySynced(true);\n }\n }, [syncWithLocationKey, parsed, syncingId, setId]);\n\n React.useEffect(() => {\n if (initiallySynced === 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 (\n autoSaveProps.status === \"success\" &&\n refineCoreProps?.autoSave?.invalidateOnClose\n ) {\n invalidate({\n id,\n invalidates: refineCoreProps.invalidates || [\"list\", \"many\", \"detail\"],\n dataProviderName: refineCoreProps.dataProviderName,\n resource: identifier,\n });\n }\n\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\n if (autoResetFormWhenClose) {\n reset();\n }\n }, [warnWhen, autoSaveProps.status]);\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 = typeof showId !== \"undefined\" || typeof id !== \"undefined\";\n if (needsIdToOpen ? hasId : true) {\n show();\n }\n },\n [id],\n );\n\n const title = translate(\n `${identifier}.titles.${actionProp}`,\n undefined,\n `${getUserFriendlyName(\n `${actionProp} ${resource?.meta?.label ?? identifier}`,\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_get","import_has","import_react_hook_form","import_core","useForm","__name","refineCoreProps","warnWhenUnsavedChangesProp","disableServerSideValidationProp","rest","options","disableServerSideValidation","translate","warnWhenUnsavedChangesRefine","setWarnWhen","warnWhenUnsavedChanges","useHookFormResult","useHookForm","watch","setValue","getValues","handleSubmitReactHookForm","setError","useFormCoreResult","useFormCore","error","_variables","_context","_a","_b","errors","key","fieldError","newError","query","onFinish","formLoading","onFinishAutoSave","data","path","hasValue","has","dataValue","get","subscription","values","type","onValuesChange","changeValues","onFinishProps","handleSubmit","onValid","onInvalid","e","v","import_react","import_get","useStepsForm","__name","stepsProps","rest","defaultStep","isBackValidate","current","setCurrent","useHookFormResult","useForm","trigger","getValues","setValue","dirtyFields","query","_a","data","registeredFields","key","value","name","get","go","step","targetStep","import_react","import_core","import_react","useModalForm","__name","modalProps","refineCoreProps","syncWithLocation","rest","_a","invalidate","initiallySynced","setInitiallySynced","React","translate","resourceProp","actionProp","resource","identifier","actionFromParams","parsed","go","getUserFriendlyName","action","syncingId","syncWithLocationKey","defaultVisible","autoSubmitClose","autoResetForm","autoResetFormWhenClose","useHookFormResult","useForm","reset","onFinish","id","setId","autoSaveProps","saveButtonProps","handleSubmit","visible","show","close","_b","_c","_d","openStatus","idFromParams","submit","values","warnWhen","setWarnWhen","handleClose","handleShow","showId","title","e"]}
package/dist/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client"
2
- var L=Object.defineProperty;var F=(t,a)=>L(t,"name",{value:a,configurable:!0});import{useEffect as Y}from"react";import ee from"lodash-es/get.js";import te from"lodash-es/has.js";import{useForm as re}from"react-hook-form";import{useForm as se,useWarnAboutChange as ae,useTranslate as oe,useRefineContext as ne,flattenObjectKeys as z}from"@refinedev/core";var C=F(({refineCoreProps:t,warnWhenUnsavedChanges:a,disableServerSideValidation:p=!1,...g}={})=>{let{options:R}=ne(),h=(R==null?void 0:R.disableServerSideValidation)||p,U=oe(),{warnWhenUnsavedChanges:v,setWarnWhen:f}=ae(),V=a??v,o=re({...g}),{watch:c,setValue:y,getValues:i,handleSubmit:n,setError:E}=o,x=se({...t,onMutationError:(r,s,e)=>{var b,H;if(h){(b=t==null?void 0:t.onMutationError)==null||b.call(t,r,s,e);return}let m=r==null?void 0:r.errors;for(let D in m){if(!Object.keys(z(s)).includes(D))continue;let u=m[D],B="";Array.isArray(u)&&(B=u.join(" ")),typeof u=="string"&&(B=u),typeof u=="boolean"&&u&&(B="Field is not valid."),typeof u=="object"&&"key"in u&&(B=U(u.key,u.message)),E(D,{message:B})}(H=t==null?void 0:t.onMutationError)==null||H.call(t,r,s,e)}}),{query:l,onFinish:d,formLoading:S,onFinishAutoSave:M}=x;Y(()=>{var e;let r=(e=l==null?void 0:l.data)==null?void 0:e.data;if(!r)return;Object.keys(z(i())).forEach(m=>{let b=te(r,m),H=ee(r,m);b&&y(m,H)})},[l==null?void 0:l.data,y,i]),Y(()=>{let r=c((s,{type:e})=>{e==="change"&&W(s)});return()=>r.unsubscribe()},[c]);let W=F(r=>{var s,e;if(V&&f(!0),(s=t==null?void 0:t.autoSave)!=null&&s.enabled){f(!1);let m=((e=t.autoSave)==null?void 0:e.onFinish)??(b=>b);return M(m(r)).catch(b=>b)}return r},"onValuesChange"),Q=F((r,s)=>async e=>(f(!1),n(r,s)(e)),"handleSubmit");return{...o,handleSubmit:Q,refineCore:x,saveButtonProps:{disabled:S,onClick:r=>{Q(s=>d(s).catch(()=>{}),()=>!1)(r)}}}},"useForm");import{useEffect as de,useState as Te}from"react";import ie from"lodash-es/get.js";var le=F(({stepsProps:t,...a}={})=>{let{defaultStep:p=0,isBackValidate:g=!1}=t??{},[R,h]=Te(p),U=C({...a}),{trigger:v,getValues:f,setValue:V,formState:{dirtyFields:o},refineCore:{query:c}}=U;de(()=>{var x;let n=(x=c==null?void 0:c.data)==null?void 0:x.data;if(!n)return;let E=Object.keys(f());console.log({dirtyFields:o,registeredFields:E,data:n}),Object.entries(n).forEach(([l,d])=>{let S=l;E.includes(S)&&(ie(o,S)||V(S,d))})},[c==null?void 0:c.data,R,V,f]);let y=F(n=>{let E=n;n<0&&(E=0),h(E)},"go");return{...U,steps:{currentStep:R,gotoStep:F(async n=>{if(n===R)return;if(n<R&&!g){y(n);return}await v()&&y(n)},"gotoStep")}}},"useStepsForm");import{useCallback as J}from"react";import{useGo as ue,useModal as pe,useParsed as ce,useResource as me,useUserFriendlyName as Fe,useTranslate as Re,useWarnAboutChange as ye,useInvalidate as Ee}from"@refinedev/core";import P from"react";var xe=F(({modalProps:t,refineCoreProps:a,syncWithLocation:p,...g}={})=>{var A,N;let R=Ee(),[h,U]=P.useState(!1),v=Re(),{resource:f,action:V}=a??{},{resource:o,action:c,identifier:y}=me(f),i=ce(),n=ue(),E=Fe(),x=V??c??"",l=!(typeof p=="object"&&(p==null?void 0:p.syncId)===!1),d=typeof p=="object"&&"key"in p?p.key:o&&x&&p?`modal-${y}-${x}`:void 0,{defaultVisible:S=!1,autoSubmitClose:M=!0,autoResetForm:W=!0}=t??{},Q=C({refineCoreProps:{...a,meta:{...d?{[d]:void 0}:{},...a==null?void 0:a.meta}},...g}),{reset:$,refineCore:{onFinish:r,id:s,setId:e,autoSaveProps:m},saveButtonProps:b,handleSubmit:H}=Q,{visible:D,show:k,close:u}=pe({defaultVisible:S});P.useEffect(()=>{var T,j,K,I;if(h===!1&&d){let w=(j=(T=i==null?void 0:i.params)==null?void 0:T[d])==null?void 0:j.open;if(typeof w=="boolean"?w&&k():typeof w=="string"&&w==="true"&&k(),l){let G=(I=(K=i==null?void 0:i.params)==null?void 0:K[d])==null?void 0:I.id;G&&(e==null||e(G))}U(!0)}},[d,i,l,e]),P.useEffect(()=>{var T;h===!0&&(D&&d?n({query:{[d]:{...(T=i==null?void 0:i.params)==null?void 0:T[d],open:!0,...l&&s&&{id:s}}},options:{keepQuery:!0},type:"replace"}):d&&!D&&n({query:{[d]:void 0},options:{keepQuery:!0},type:"replace"}))},[s,D,k,d,l]);let B=F(async T=>{await r(T),M&&u(),W&&$()},"submit"),{warnWhen:O,setWarnWhen:X}=ye(),Z=J(()=>{var T;if(m.status==="success"&&((T=a==null?void 0:a.autoSave)!=null&&T.invalidateOnClose)&&R({id:s,invalidates:a.invalidates||["list","many","detail"],dataProviderName:a.dataProviderName,resource:y}),O)if(window.confirm(v("warnWhenUnsavedChanges","Are you sure you want to leave? You have unsaved changes.")))X(!1);else return;e==null||e(void 0),u()},[O,m.status]),_=J(T=>{typeof T<"u"&&(e==null||e(T)),(!(x==="edit"||x==="clone")||(typeof T<"u"||typeof s<"u"))&&k()},[s]),q=v(`${y}.titles.${V}`,void 0,`${E(`${V} ${((A=o==null?void 0:o.meta)==null?void 0:A.label)??((N=o==null?void 0:o.options)==null?void 0:N.label)??(o==null?void 0:o.label)??y}`,"singular")}`);return{modal:{submit:B,close:Z,show:_,visible:D,title:q},...Q,saveButtonProps:{...b,onClick:T=>H(B)(T)}}},"useModalForm");export{C as useForm,xe as useModalForm,le as useStepsForm};
2
+ var ee=Object.defineProperty;var F=(e,a)=>ee(e,"name",{value:a,configurable:!0});import{useEffect as Y}from"react";import te from"lodash-es/get.js";import re from"lodash-es/has.js";import{useForm as se}from"react-hook-form";import{useForm as ae,useWarnAboutChange as oe,useTranslate as ne,useRefineContext as de,flattenObjectKeys as z}from"@refinedev/core";var k=F(({refineCoreProps:e,warnWhenUnsavedChanges:a,disableServerSideValidation:c=!1,...H}={})=>{let{options:R}=de(),h=(R==null?void 0:R.disableServerSideValidation)||c,S=ne(),{warnWhenUnsavedChanges:U,setWarnWhen:E}=oe(),x=a??U,b=se({...H}),{watch:u,setValue:D,getValues:l,handleSubmit:d,setError:f}=b,y=ae({...e,onMutationError:(t,T,r)=>{var m,v;if(h){(m=e==null?void 0:e.onMutationError)==null||m.call(e,t,T,r);return}let s=t==null?void 0:t.errors;for(let g in s){if(!Object.keys(z(T)).includes(g))continue;let i=s[g],V="";Array.isArray(i)&&(V=i.join(" ")),typeof i=="string"&&(V=i),typeof i=="boolean"&&i&&(V="Field is not valid."),typeof i=="object"&&"key"in i&&(V=S(i.key,i.message)),f(g,{message:V})}(v=e==null?void 0:e.onMutationError)==null||v.call(e,t,T,r)}}),{query:p,onFinish:o,formLoading:B,onFinishAutoSave:M}=y;Y(()=>{var r;let t=(r=p==null?void 0:p.data)==null?void 0:r.data;if(!t)return;Object.keys(z(l())).forEach(s=>{let m=re(t,s),v=te(t,s);m&&D(s,v)})},[p==null?void 0:p.data,D,l]),Y(()=>{let t=u((T,{type:r})=>{r==="change"&&W(T)});return()=>t.unsubscribe()},[u]);let W=F(t=>{var T,r;if(x&&E(!0),(T=e==null?void 0:e.autoSave)!=null&&T.enabled){E(!1);let s=((r=e.autoSave)==null?void 0:r.onFinish)??(m=>m);return M(s(t)).catch(m=>m)}return t},"onValuesChange"),C=F((t,T)=>async r=>(E(!1),d(t,T)(r)),"handleSubmit");return{...b,handleSubmit:C,refineCore:y,saveButtonProps:{disabled:B,onClick:t=>{C(T=>o(T).catch(()=>{}),()=>!1)(t)}}}},"useForm");import{useEffect as Te,useState as ie}from"react";import ue from"lodash-es/get.js";var le=F(({stepsProps:e,...a}={})=>{let{defaultStep:c=0,isBackValidate:H=!1}=e??{},[R,h]=ie(c),S=k({...a}),{trigger:U,getValues:E,setValue:x,formState:{dirtyFields:b},refineCore:{query:u}}=S;Te(()=>{var y;let d=(y=u==null?void 0:u.data)==null?void 0:y.data;if(!d)return;let f=Object.keys(E());Object.entries(d).forEach(([p,o])=>{let B=p;f.includes(B)&&(ue(b,B)||x(B,o))})},[u==null?void 0:u.data,R,x,E]);let D=F(d=>{let f=d;d<0&&(f=0),h(f)},"go");return{...S,steps:{currentStep:R,gotoStep:F(async d=>{if(d===R)return;if(d<R&&!H){D(d);return}await U()&&D(d)},"gotoStep")}}},"useStepsForm");import{useCallback as J}from"react";import{useGo as pe,useModal as ce,useParsed as me,useUserFriendlyName as Fe,useTranslate as Re,useWarnAboutChange as ye,useInvalidate as Ee,useResourceParams as X}from"@refinedev/core";import $ from"react";var xe=F(({modalProps:e,refineCoreProps:a,syncWithLocation:c,...H}={})=>{var N;let R=Ee(),[h,S]=$.useState(!1),U=Re(),{resource:E,action:x}=a??{},{resource:b,identifier:u}=X({resource:E}),{action:D}=X({resource:E,action:x}),l=me(),d=pe(),f=Fe(),y=x??D??"",p=!(typeof c=="object"&&(c==null?void 0:c.syncId)===!1),o=typeof c=="object"&&"key"in c?c.key:b&&y&&c?`modal-${u}-${y}`:void 0,{defaultVisible:B=!1,autoSubmitClose:M=!0,autoResetForm:W=!0,autoResetFormWhenClose:C=!0}=e??{},O=k({refineCoreProps:{...a,meta:{...o?{[o]:void 0}:{},...a==null?void 0:a.meta}},...H}),{reset:t,refineCore:{onFinish:T,id:r,setId:s,autoSaveProps:m},saveButtonProps:v,handleSubmit:g}=O,{visible:Q,show:i,close:V}=ce({defaultVisible:B});$.useEffect(()=>{var n,j,K,I;if(h===!1&&o){let w=(j=(n=l==null?void 0:l.params)==null?void 0:n[o])==null?void 0:j.open;if(typeof w=="boolean"?w&&i():typeof w=="string"&&w==="true"&&i(),p){let G=(I=(K=l==null?void 0:l.params)==null?void 0:K[o])==null?void 0:I.id;G&&(s==null||s(G))}S(!0)}},[o,l,p,s]),$.useEffect(()=>{var n;h===!0&&(Q&&o?d({query:{[o]:{...(n=l==null?void 0:l.params)==null?void 0:n[o],open:!0,...p&&r&&{id:r}}},options:{keepQuery:!0},type:"replace"}):o&&!Q&&d({query:{[o]:void 0},options:{keepQuery:!0},type:"replace"}))},[r,Q,i,o,p]);let P=F(async n=>{await T(n),M&&V(),W&&t()},"submit"),{warnWhen:A,setWarnWhen:Z}=ye(),_=J(()=>{var n;if(m.status==="success"&&((n=a==null?void 0:a.autoSave)!=null&&n.invalidateOnClose)&&R({id:r,invalidates:a.invalidates||["list","many","detail"],dataProviderName:a.dataProviderName,resource:u}),A)if(window.confirm(U("warnWhenUnsavedChanges","Are you sure you want to leave? You have unsaved changes.")))Z(!1);else return;s==null||s(void 0),V(),C&&t()},[A,m.status]),q=J(n=>{typeof n<"u"&&(s==null||s(n)),(!(y==="edit"||y==="clone")||(typeof n<"u"||typeof r<"u"))&&i()},[r]),L=U(`${u}.titles.${x}`,void 0,`${f(`${x} ${((N=b==null?void 0:b.meta)==null?void 0:N.label)??u}`,"singular")}`);return{modal:{submit:P,close:_,show:q,visible:Q,title:L},...O,saveButtonProps:{...v,onClick:n=>g(P)(n)}}},"useModalForm");export{k as useForm,xe as useModalForm,le as useStepsForm};
3
3
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/useForm/index.ts","../src/useStepsForm/index.ts","../src/useModalForm/index.ts"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport get from \"lodash-es/get.js\";\nimport has from \"lodash-es/has.js\";\n\nimport {\n useForm as useHookForm,\n type UseFormProps as UseHookFormProps,\n type UseFormReturn,\n type FieldValues,\n type UseFormHandleSubmit,\n type Path,\n} from \"react-hook-form\";\nimport {\n type BaseRecord,\n type HttpError,\n useForm as useFormCore,\n useWarnAboutChange,\n type UseFormProps as UseFormCoreProps,\n type UseFormReturnType as UseFormReturnTypeCore,\n useTranslate,\n useRefineContext,\n flattenObjectKeys,\n} from \"@refinedev/core\";\n\nexport type UseFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturn<TVariables, TContext> & {\n refineCore: UseFormReturnTypeCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >;\n saveButtonProps: {\n disabled: boolean;\n onClick: (e: React.BaseSyntheticEvent) => void;\n };\n};\n\nexport type UseFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = {\n /**\n * Configuration object for the core of the [useForm](/docs/api-reference/core/hooks/useForm/)\n * @type [`UseFormCoreProps<TQueryFnData, TError, TVariables, TData, TResponse, TResponseError>`](/docs/api-reference/core/hooks/useForm/#properties)\n */\n refineCoreProps?: UseFormCoreProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >;\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 /**\n * Disables server-side validation\n * @default false\n * @see {@link https://refine.dev/docs/advanced-tutorials/forms/server-side-form-validation/}\n */\n disableServerSideValidation?: boolean;\n} & UseHookFormProps<TVariables, TContext>;\n\nexport const useForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n refineCoreProps,\n warnWhenUnsavedChanges: warnWhenUnsavedChangesProp,\n disableServerSideValidation: disableServerSideValidationProp = false,\n ...rest\n}: UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> = {}): UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> => {\n const { options } = useRefineContext();\n const disableServerSideValidation =\n options?.disableServerSideValidation || disableServerSideValidationProp;\n\n const translate = useTranslate();\n\n const { warnWhenUnsavedChanges: warnWhenUnsavedChangesRefine, setWarnWhen } =\n useWarnAboutChange();\n const warnWhenUnsavedChanges =\n warnWhenUnsavedChangesProp ?? warnWhenUnsavedChangesRefine;\n\n const useHookFormResult = useHookForm<TVariables, TContext>({\n ...rest,\n });\n\n const {\n watch,\n setValue,\n getValues,\n handleSubmit: handleSubmitReactHookForm,\n setError,\n } = useHookFormResult;\n\n const useFormCoreResult = useFormCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n ...refineCoreProps,\n onMutationError: (error, _variables, _context) => {\n if (disableServerSideValidation) {\n refineCoreProps?.onMutationError?.(error, _variables, _context);\n return;\n }\n\n const errors = error?.errors;\n\n for (const key in errors) {\n // when the key is not registered in the form, react-hook-form not working\n const isKeyInVariables = Object.keys(\n flattenObjectKeys(_variables),\n ).includes(key);\n\n if (!isKeyInVariables) {\n continue;\n }\n\n const fieldError = errors[key];\n\n let newError = \"\";\n\n if (Array.isArray(fieldError)) {\n newError = fieldError.join(\" \");\n }\n\n if (typeof fieldError === \"string\") {\n newError = fieldError;\n }\n\n if (typeof fieldError === \"boolean\" && fieldError) {\n newError = \"Field is not valid.\";\n }\n\n if (typeof fieldError === \"object\" && \"key\" in fieldError) {\n const translatedMessage = translate(\n fieldError.key,\n fieldError.message,\n );\n\n newError = translatedMessage;\n }\n\n setError(key as Path<TVariables>, {\n message: newError,\n });\n }\n\n refineCoreProps?.onMutationError?.(error, _variables, _context);\n },\n });\n\n const { query, onFinish, formLoading, onFinishAutoSave } = useFormCoreResult;\n\n useEffect(() => {\n const data = query?.data?.data;\n if (!data) return;\n\n /**\n * get registered fields from react-hook-form\n */\n const registeredFields = Object.keys(flattenObjectKeys(getValues()));\n\n /**\n * set values from query result as default values\n */\n registeredFields.forEach((path) => {\n const hasValue = has(data, path);\n const dataValue = get(data, path);\n\n /**\n * set value if the path exists in the query result even if the value is null\n */\n if (hasValue) {\n setValue(path as Path<TVariables>, dataValue);\n }\n });\n }, [query?.data, setValue, getValues]);\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: TVariables) => {\n if (warnWhenUnsavedChanges) {\n setWarnWhen(true);\n }\n\n if (refineCoreProps?.autoSave?.enabled) {\n setWarnWhen(false);\n\n const onFinishProps =\n refineCoreProps.autoSave?.onFinish ?? ((values: TVariables) => values);\n\n return onFinishAutoSave(onFinishProps(changeValues)).catch(\n (error) => error,\n );\n }\n\n return changeValues;\n };\n\n const handleSubmit: UseFormHandleSubmit<TVariables> =\n (onValid, onInvalid) => async (e) => {\n setWarnWhen(false);\n return handleSubmitReactHookForm(onValid, onInvalid)(e);\n };\n\n const saveButtonProps = {\n disabled: formLoading,\n onClick: (e: React.BaseSyntheticEvent) => {\n handleSubmit(\n (v) => onFinish(v).catch(() => {}),\n () => false,\n )(e);\n },\n };\n\n return {\n ...useHookFormResult,\n handleSubmit,\n refineCore: useFormCoreResult,\n saveButtonProps,\n };\n};\n","import { useEffect, useState } from \"react\";\nimport type { FieldValues, Path } from \"react-hook-form\";\nimport type { BaseRecord, HttpError } from \"@refinedev/core\";\nimport get from \"lodash-es/get.js\";\n\nimport { useForm, type UseFormProps, type UseFormReturnType } from \"../useForm\";\n\nexport type UseStepsFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> & {\n steps: {\n currentStep: number;\n gotoStep: (step: number) => void;\n };\n};\n\nexport type UseStepsFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> & {\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 TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n stepsProps,\n ...rest\n}: UseStepsFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> = {}): UseStepsFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> => {\n const { defaultStep = 0, isBackValidate = false } = stepsProps ?? {};\n const [current, setCurrent] = useState(defaultStep);\n\n const useHookFormResult = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n >({\n ...rest,\n });\n\n const {\n trigger,\n getValues,\n setValue,\n formState: { dirtyFields },\n refineCore: { query },\n } = useHookFormResult;\n\n useEffect(() => {\n const data = query?.data?.data;\n if (!data) return;\n\n const registeredFields = Object.keys(getValues());\n\n console.log({\n dirtyFields,\n registeredFields,\n data,\n });\n\n Object.entries(data).forEach(([key, value]) => {\n const name = key as Path<TVariables>;\n\n if (registeredFields.includes(name)) {\n if (!get(dirtyFields, name)) {\n setValue(name, value);\n }\n }\n });\n }, [query?.data, current, setValue, getValues]);\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 type BaseKey,\n type BaseRecord,\n type FormWithSyncWithLocationParams,\n type HttpError,\n useGo,\n useModal,\n useParsed,\n useResource,\n useUserFriendlyName,\n useTranslate,\n useWarnAboutChange,\n useInvalidate,\n} from \"@refinedev/core\";\nimport type { FieldValues } from \"react-hook-form\";\n\nimport { useForm, type UseFormProps, type UseFormReturnType } from \"../useForm\";\nimport React from \"react\";\n\nexport type UseModalFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> & {\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 TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> & {\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 TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n modalProps,\n refineCoreProps,\n syncWithLocation,\n ...rest\n}: UseModalFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> = {}): UseModalFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> => {\n const invalidate = useInvalidate();\n const [initiallySynced, setInitiallySynced] = React.useState(false);\n\n const translate = useTranslate();\n\n const { resource: resourceProp, action: actionProp } = refineCoreProps ?? {};\n\n const {\n resource,\n action: actionFromParams,\n identifier,\n } = useResource(resourceProp);\n\n const parsed = useParsed();\n const go = useGo();\n const getUserFriendlyName = useUserFriendlyName();\n\n const action = actionProp ?? actionFromParams ?? \"\";\n\n const syncingId = !(\n typeof syncWithLocation === \"object\" && syncWithLocation?.syncId === false\n );\n\n const syncWithLocationKey =\n typeof syncWithLocation === \"object\" && \"key\" in syncWithLocation\n ? syncWithLocation.key\n : resource && action && syncWithLocation\n ? `modal-${identifier}-${action}`\n : undefined;\n\n const {\n defaultVisible = false,\n autoSubmitClose = true,\n autoResetForm = true,\n } = modalProps ?? {};\n\n const useHookFormResult = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n >({\n refineCoreProps: {\n ...refineCoreProps,\n meta: {\n ...(syncWithLocationKey ? { [syncWithLocationKey]: undefined } : {}),\n ...refineCoreProps?.meta,\n },\n },\n ...rest,\n });\n\n const {\n reset,\n refineCore: { onFinish, id, setId, autoSaveProps },\n saveButtonProps,\n handleSubmit,\n } = useHookFormResult;\n\n const { visible, show, close } = useModal({\n defaultVisible,\n });\n\n React.useEffect(() => {\n if (initiallySynced === 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 setInitiallySynced(true);\n }\n }, [syncWithLocationKey, parsed, syncingId, setId]);\n\n React.useEffect(() => {\n if (initiallySynced === 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 (\n autoSaveProps.status === \"success\" &&\n refineCoreProps?.autoSave?.invalidateOnClose\n ) {\n invalidate({\n id,\n invalidates: refineCoreProps.invalidates || [\"list\", \"many\", \"detail\"],\n dataProviderName: refineCoreProps.dataProviderName,\n resource: identifier,\n });\n }\n\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, autoSaveProps.status]);\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 = typeof showId !== \"undefined\" || typeof id !== \"undefined\";\n if (needsIdToOpen ? hasId : true) {\n show();\n }\n },\n [id],\n );\n\n const title = translate(\n `${identifier}.titles.${actionProp}`,\n undefined,\n `${getUserFriendlyName(\n `${actionProp} ${\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier\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":["useEffect","get","has","useHookForm","useFormCore","useWarnAboutChange","useTranslate","useRefineContext","flattenObjectKeys","useForm","__name","refineCoreProps","warnWhenUnsavedChangesProp","disableServerSideValidationProp","rest","options","useRefineContext","disableServerSideValidation","translate","useTranslate","warnWhenUnsavedChangesRefine","setWarnWhen","useWarnAboutChange","warnWhenUnsavedChanges","useHookFormResult","useHookForm","watch","setValue","getValues","handleSubmitReactHookForm","setError","useFormCoreResult","useFormCore","error","_variables","_context","_a","_b","errors","key","flattenObjectKeys","fieldError","newError","query","onFinish","formLoading","onFinishAutoSave","useEffect","data","path","hasValue","has","dataValue","get","subscription","values","type","onValuesChange","changeValues","onFinishProps","handleSubmit","onValid","onInvalid","e","v","useEffect","useState","get","useStepsForm","__name","stepsProps","rest","defaultStep","isBackValidate","current","setCurrent","useState","useHookFormResult","useForm","trigger","getValues","setValue","dirtyFields","query","useEffect","_a","data","registeredFields","key","value","name","get","go","step","targetStep","useCallback","useGo","useModal","useParsed","useResource","useUserFriendlyName","useTranslate","useWarnAboutChange","useInvalidate","React","useModalForm","__name","modalProps","refineCoreProps","syncWithLocation","rest","_a","_b","invalidate","useInvalidate","initiallySynced","setInitiallySynced","React","translate","useTranslate","resourceProp","actionProp","resource","actionFromParams","identifier","useResource","parsed","useParsed","go","useGo","getUserFriendlyName","useUserFriendlyName","action","syncingId","syncWithLocationKey","defaultVisible","autoSubmitClose","autoResetForm","useHookFormResult","useForm","reset","onFinish","id","setId","autoSaveProps","saveButtonProps","handleSubmit","visible","show","close","useModal","_c","_d","openStatus","idFromParams","submit","values","warnWhen","setWarnWhen","useWarnAboutChange","handleClose","useCallback","handleShow","showId","title","e"]}
1
+ {"version":3,"sources":["../src/useForm/index.ts","../src/useStepsForm/index.ts","../src/useModalForm/index.ts"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport get from \"lodash-es/get.js\";\nimport has from \"lodash-es/has.js\";\n\nimport {\n useForm as useHookForm,\n type UseFormProps as UseHookFormProps,\n type UseFormReturn,\n type FieldValues,\n type UseFormHandleSubmit,\n type Path,\n} from \"react-hook-form\";\nimport {\n type BaseRecord,\n type HttpError,\n useForm as useFormCore,\n useWarnAboutChange,\n type UseFormProps as UseFormCoreProps,\n type UseFormReturnType as UseFormReturnTypeCore,\n useTranslate,\n useRefineContext,\n flattenObjectKeys,\n} from \"@refinedev/core\";\n\nexport type UseFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturn<TVariables, TContext> & {\n refineCore: UseFormReturnTypeCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >;\n saveButtonProps: {\n disabled: boolean;\n onClick: (e: React.BaseSyntheticEvent) => void;\n };\n};\n\nexport type UseFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = {\n /**\n * Configuration object for the core of the [useForm](/docs/api-reference/core/hooks/useForm/)\n * @type [`UseFormCoreProps<TQueryFnData, TError, TVariables, TData, TResponse, TResponseError>`](/docs/api-reference/core/hooks/useForm/#properties)\n */\n refineCoreProps?: UseFormCoreProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >;\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 /**\n * Disables server-side validation\n * @default false\n * @see {@link https://refine.dev/docs/advanced-tutorials/forms/server-side-form-validation/}\n */\n disableServerSideValidation?: boolean;\n} & UseHookFormProps<TVariables, TContext>;\n\nexport const useForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n refineCoreProps,\n warnWhenUnsavedChanges: warnWhenUnsavedChangesProp,\n disableServerSideValidation: disableServerSideValidationProp = false,\n ...rest\n}: UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> = {}): UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> => {\n const { options } = useRefineContext();\n const disableServerSideValidation =\n options?.disableServerSideValidation || disableServerSideValidationProp;\n\n const translate = useTranslate();\n\n const { warnWhenUnsavedChanges: warnWhenUnsavedChangesRefine, setWarnWhen } =\n useWarnAboutChange();\n const warnWhenUnsavedChanges =\n warnWhenUnsavedChangesProp ?? warnWhenUnsavedChangesRefine;\n\n const useHookFormResult = useHookForm<TVariables, TContext>({\n ...rest,\n });\n\n const {\n watch,\n setValue,\n getValues,\n handleSubmit: handleSubmitReactHookForm,\n setError,\n } = useHookFormResult;\n\n const useFormCoreResult = useFormCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n ...refineCoreProps,\n onMutationError: (error, _variables, _context) => {\n if (disableServerSideValidation) {\n refineCoreProps?.onMutationError?.(error, _variables, _context);\n return;\n }\n\n const errors = error?.errors;\n\n for (const key in errors) {\n // when the key is not registered in the form, react-hook-form not working\n const isKeyInVariables = Object.keys(\n flattenObjectKeys(_variables),\n ).includes(key);\n\n if (!isKeyInVariables) {\n continue;\n }\n\n const fieldError = errors[key];\n\n let newError = \"\";\n\n if (Array.isArray(fieldError)) {\n newError = fieldError.join(\" \");\n }\n\n if (typeof fieldError === \"string\") {\n newError = fieldError;\n }\n\n if (typeof fieldError === \"boolean\" && fieldError) {\n newError = \"Field is not valid.\";\n }\n\n if (typeof fieldError === \"object\" && \"key\" in fieldError) {\n const translatedMessage = translate(\n fieldError.key,\n fieldError.message,\n );\n\n newError = translatedMessage;\n }\n\n setError(key as Path<TVariables>, {\n message: newError,\n });\n }\n\n refineCoreProps?.onMutationError?.(error, _variables, _context);\n },\n });\n\n const { query, onFinish, formLoading, onFinishAutoSave } = useFormCoreResult;\n\n useEffect(() => {\n const data = query?.data?.data;\n if (!data) return;\n\n /**\n * get registered fields from react-hook-form\n */\n const registeredFields = Object.keys(flattenObjectKeys(getValues()));\n\n /**\n * set values from query result as default values\n */\n registeredFields.forEach((path) => {\n const hasValue = has(data, path);\n const dataValue = get(data, path);\n\n /**\n * set value if the path exists in the query result even if the value is null\n */\n if (hasValue) {\n setValue(path as Path<TVariables>, dataValue);\n }\n });\n }, [query?.data, setValue, getValues]);\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: TVariables) => {\n if (warnWhenUnsavedChanges) {\n setWarnWhen(true);\n }\n\n if (refineCoreProps?.autoSave?.enabled) {\n setWarnWhen(false);\n\n const onFinishProps =\n refineCoreProps.autoSave?.onFinish ?? ((values: TVariables) => values);\n\n return onFinishAutoSave(onFinishProps(changeValues)).catch(\n (error) => error,\n );\n }\n\n return changeValues;\n };\n\n const handleSubmit: UseFormHandleSubmit<TVariables> =\n (onValid, onInvalid) => async (e) => {\n setWarnWhen(false);\n return handleSubmitReactHookForm(onValid, onInvalid)(e);\n };\n\n const saveButtonProps = {\n disabled: formLoading,\n onClick: (e: React.BaseSyntheticEvent) => {\n handleSubmit(\n (v) => onFinish(v).catch(() => {}),\n () => false,\n )(e);\n },\n };\n\n return {\n ...useHookFormResult,\n handleSubmit,\n refineCore: useFormCoreResult,\n saveButtonProps,\n };\n};\n","import { useEffect, useState } from \"react\";\nimport type { FieldValues, Path } from \"react-hook-form\";\nimport type { BaseRecord, HttpError } from \"@refinedev/core\";\nimport get from \"lodash-es/get.js\";\n\nimport { useForm, type UseFormProps, type UseFormReturnType } from \"../useForm\";\n\nexport type UseStepsFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> & {\n steps: {\n currentStep: number;\n gotoStep: (step: number) => void;\n };\n};\n\nexport type UseStepsFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> & {\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 TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n stepsProps,\n ...rest\n}: UseStepsFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> = {}): UseStepsFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> => {\n const { defaultStep = 0, isBackValidate = false } = stepsProps ?? {};\n const [current, setCurrent] = useState(defaultStep);\n\n const useHookFormResult = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n >({\n ...rest,\n });\n\n const {\n trigger,\n getValues,\n setValue,\n formState: { dirtyFields },\n refineCore: { query },\n } = useHookFormResult;\n\n useEffect(() => {\n const data = query?.data?.data;\n if (!data) return;\n\n const registeredFields = Object.keys(getValues());\n\n Object.entries(data).forEach(([key, value]) => {\n const name = key as Path<TVariables>;\n\n if (registeredFields.includes(name)) {\n if (!get(dirtyFields, name)) {\n setValue(name, value);\n }\n }\n });\n }, [query?.data, current, setValue, getValues]);\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 type BaseKey,\n type BaseRecord,\n type FormWithSyncWithLocationParams,\n type HttpError,\n useGo,\n useModal,\n useParsed,\n useUserFriendlyName,\n useTranslate,\n useWarnAboutChange,\n useInvalidate,\n useResourceParams,\n} from \"@refinedev/core\";\nimport type { FieldValues } from \"react-hook-form\";\n\nimport { useForm, type UseFormProps, type UseFormReturnType } from \"../useForm\";\nimport React from \"react\";\n\nexport type UseModalFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> & {\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 TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> & {\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 * \n * `autoResetFormWhenClose`: Whether the form should be reset to defaultValues when the modal is closed.\n * @type `{\n defaultVisible?: boolean;\n autoSubmitClose?: boolean;\n autoResetForm?: boolean;\n autoResetFormWhenClose?: boolean;\n }`\n * @default `defaultVisible = false` `autoSubmitClose = true` `autoResetForm = true` `autoResetFormWhenClose = true`\n */\n modalProps?: {\n defaultVisible?: boolean;\n autoSubmitClose?: boolean;\n autoResetForm?: boolean;\n autoResetFormWhenClose?: boolean;\n };\n} & FormWithSyncWithLocationParams;\n\nexport const useModalForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables extends FieldValues = FieldValues,\n TContext extends object = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n modalProps,\n refineCoreProps,\n syncWithLocation,\n ...rest\n}: UseModalFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> = {}): UseModalFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n> => {\n const invalidate = useInvalidate();\n const [initiallySynced, setInitiallySynced] = React.useState(false);\n\n const translate = useTranslate();\n\n const { resource: resourceProp, action: actionProp } = refineCoreProps ?? {};\n\n const { resource, identifier } = useResourceParams({\n resource: resourceProp,\n });\n const { action: actionFromParams } = useResourceParams({\n resource: resourceProp,\n action: actionProp,\n });\n\n const parsed = useParsed();\n const go = useGo();\n const getUserFriendlyName = useUserFriendlyName();\n\n const action = actionProp ?? actionFromParams ?? \"\";\n\n const syncingId = !(\n typeof syncWithLocation === \"object\" && syncWithLocation?.syncId === false\n );\n\n const syncWithLocationKey =\n typeof syncWithLocation === \"object\" && \"key\" in syncWithLocation\n ? syncWithLocation.key\n : resource && action && syncWithLocation\n ? `modal-${identifier}-${action}`\n : undefined;\n\n const {\n defaultVisible = false,\n autoSubmitClose = true,\n autoResetForm = true,\n autoResetFormWhenClose = true,\n } = modalProps ?? {};\n\n const useHookFormResult = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n >({\n refineCoreProps: {\n ...refineCoreProps,\n meta: {\n ...(syncWithLocationKey ? { [syncWithLocationKey]: undefined } : {}),\n ...refineCoreProps?.meta,\n },\n },\n ...rest,\n });\n\n const {\n reset,\n refineCore: { onFinish, id, setId, autoSaveProps },\n saveButtonProps,\n handleSubmit,\n } = useHookFormResult;\n\n const { visible, show, close } = useModal({\n defaultVisible,\n });\n\n React.useEffect(() => {\n if (initiallySynced === 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 setInitiallySynced(true);\n }\n }, [syncWithLocationKey, parsed, syncingId, setId]);\n\n React.useEffect(() => {\n if (initiallySynced === 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 (\n autoSaveProps.status === \"success\" &&\n refineCoreProps?.autoSave?.invalidateOnClose\n ) {\n invalidate({\n id,\n invalidates: refineCoreProps.invalidates || [\"list\", \"many\", \"detail\"],\n dataProviderName: refineCoreProps.dataProviderName,\n resource: identifier,\n });\n }\n\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\n if (autoResetFormWhenClose) {\n reset();\n }\n }, [warnWhen, autoSaveProps.status]);\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 = typeof showId !== \"undefined\" || typeof id !== \"undefined\";\n if (needsIdToOpen ? hasId : true) {\n show();\n }\n },\n [id],\n );\n\n const title = translate(\n `${identifier}.titles.${actionProp}`,\n undefined,\n `${getUserFriendlyName(\n `${actionProp} ${resource?.meta?.label ?? identifier}`,\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":["useEffect","get","has","useHookForm","useFormCore","useWarnAboutChange","useTranslate","useRefineContext","flattenObjectKeys","useForm","__name","refineCoreProps","warnWhenUnsavedChangesProp","disableServerSideValidationProp","rest","options","useRefineContext","disableServerSideValidation","translate","useTranslate","warnWhenUnsavedChangesRefine","setWarnWhen","useWarnAboutChange","warnWhenUnsavedChanges","useHookFormResult","useHookForm","watch","setValue","getValues","handleSubmitReactHookForm","setError","useFormCoreResult","useFormCore","error","_variables","_context","_a","_b","errors","key","flattenObjectKeys","fieldError","newError","query","onFinish","formLoading","onFinishAutoSave","useEffect","data","path","hasValue","has","dataValue","get","subscription","values","type","onValuesChange","changeValues","onFinishProps","handleSubmit","onValid","onInvalid","e","v","useEffect","useState","get","useStepsForm","__name","stepsProps","rest","defaultStep","isBackValidate","current","setCurrent","useState","useHookFormResult","useForm","trigger","getValues","setValue","dirtyFields","query","useEffect","_a","data","registeredFields","key","value","name","get","go","step","targetStep","useCallback","useGo","useModal","useParsed","useUserFriendlyName","useTranslate","useWarnAboutChange","useInvalidate","useResourceParams","React","useModalForm","__name","modalProps","refineCoreProps","syncWithLocation","rest","_a","invalidate","useInvalidate","initiallySynced","setInitiallySynced","React","translate","useTranslate","resourceProp","actionProp","resource","identifier","useResourceParams","actionFromParams","parsed","useParsed","go","useGo","getUserFriendlyName","useUserFriendlyName","action","syncingId","syncWithLocationKey","defaultVisible","autoSubmitClose","autoResetForm","autoResetFormWhenClose","useHookFormResult","useForm","reset","onFinish","id","setId","autoSaveProps","saveButtonProps","handleSubmit","visible","show","close","useModal","_b","_c","_d","openStatus","idFromParams","submit","values","warnWhen","setWarnWhen","useWarnAboutChange","handleClose","useCallback","handleShow","showId","title","e"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAIzC,OAAO,EAEL,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,aAAa,EAClB,KAAK,WAAW,EAGjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,SAAS,EAGd,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,iBAAiB,IAAI,qBAAqB,EAIhD,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,iBAAiB,CAC3B,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG;IACxC,UAAU,EAAE,qBAAqB,CAC/B,YAAY,EACZ,MAAM,EACN,UAAU,EACV,KAAK,EACL,SAAS,EACT,cAAc,CACf,CAAC;IACF,eAAe,EAAE;QACf,QAAQ,EAAE,OAAO,CAAC;QAClB,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;KAChD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,CACtB,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC;IACF;;;OAGG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAChC,YAAY,EACZ,MAAM,EACN,UAAU,EACV,KAAK,EACL,SAAS,EACT,cAAc,CACf,CAAC;IACF;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC,GAAG,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAE3C,eAAO,MAAM,OAAO,8aAajB,aACD,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,KAAQ,kBACP,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CAmKf,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAIzC,OAAO,EAEL,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,aAAa,EAClB,KAAK,WAAW,EAGjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,SAAS,EAGd,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,iBAAiB,IAAI,qBAAqB,EAIhD,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,iBAAiB,CAC3B,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG;IACxC,UAAU,EAAE,qBAAqB,CAC/B,YAAY,EACZ,MAAM,EACN,UAAU,EACV,KAAK,EACL,SAAS,EACT,cAAc,CACf,CAAC;IACF,eAAe,EAAE;QACf,QAAQ,EAAE,OAAO,CAAC;QAClB,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;KAChD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,CACtB,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC;IACF;;;OAGG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAChC,YAAY,EACZ,MAAM,EACN,UAAU,EACV,KAAK,EACL,SAAS,EACT,cAAc,CACf,CAAC;IACF;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC,GAAG,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAE3C,eAAO,MAAM,OAAO,GAClB,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,EACzC,iJAKC,YAAY,CACb,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACV,KAAG,iBAAiB,CACxB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CAmKf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAIzC,OAAO,EAEL,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,aAAa,EAClB,KAAK,WAAW,EAGjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,SAAS,EAGd,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,iBAAiB,IAAI,qBAAqB,EAIhD,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,iBAAiB,CAC3B,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG;IACxC,UAAU,EAAE,qBAAqB,CAC/B,YAAY,EACZ,MAAM,EACN,UAAU,EACV,KAAK,EACL,SAAS,EACT,cAAc,CACf,CAAC;IACF,eAAe,EAAE;QACf,QAAQ,EAAE,OAAO,CAAC;QAClB,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;KAChD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,CACtB,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC;IACF;;;OAGG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAChC,YAAY,EACZ,MAAM,EACN,UAAU,EACV,KAAK,EACL,SAAS,EACT,cAAc,CACf,CAAC;IACF;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC,GAAG,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAE3C,eAAO,MAAM,OAAO,8aAajB,aACD,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,KAAQ,kBACP,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CAmKf,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAIzC,OAAO,EAEL,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,aAAa,EAClB,KAAK,WAAW,EAGjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,SAAS,EAGd,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,iBAAiB,IAAI,qBAAqB,EAIhD,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,iBAAiB,CAC3B,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG;IACxC,UAAU,EAAE,qBAAqB,CAC/B,YAAY,EACZ,MAAM,EACN,UAAU,EACV,KAAK,EACL,SAAS,EACT,cAAc,CACf,CAAC;IACF,eAAe,EAAE;QACf,QAAQ,EAAE,OAAO,CAAC;QAClB,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;KAChD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,CACtB,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC;IACF;;;OAGG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAChC,YAAY,EACZ,MAAM,EACN,UAAU,EACV,KAAK,EACL,SAAS,EACT,cAAc,CACf,CAAC;IACF;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC,GAAG,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAE3C,eAAO,MAAM,OAAO,GAClB,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,EACzC,iJAKC,YAAY,CACb,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACV,KAAG,iBAAiB,CACxB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CAmKf,CAAC"}
@@ -18,17 +18,21 @@ export type UseModalFormProps<TQueryFnData extends BaseRecord = BaseRecord, TErr
18
18
  * `autoSubmitClose`: Whether the form should be submitted when the modal is closed.
19
19
  *
20
20
  * `autoResetForm`: Whether the form should be reset when the form is submitted.
21
+ *
22
+ * `autoResetFormWhenClose`: Whether the form should be reset to defaultValues when the modal is closed.
21
23
  * @type `{
22
24
  defaultVisible?: boolean;
23
25
  autoSubmitClose?: boolean;
24
26
  autoResetForm?: boolean;
27
+ autoResetFormWhenClose?: boolean;
25
28
  }`
26
- * @default `defaultVisible = false` `autoSubmitClose = true` `autoResetForm = true`
29
+ * @default `defaultVisible = false` `autoSubmitClose = true` `autoResetForm = true` `autoResetFormWhenClose = true`
27
30
  */
28
31
  modalProps?: {
29
32
  defaultVisible?: boolean;
30
33
  autoSubmitClose?: boolean;
31
34
  autoResetForm?: boolean;
35
+ autoResetFormWhenClose?: boolean;
32
36
  };
33
37
  } & FormWithSyncWithLocationParams;
34
38
  export declare const useModalForm: <TQueryFnData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}, TData extends BaseRecord = TQueryFnData, TResponse extends BaseRecord = TData, TResponseError extends HttpError = TError>({ modalProps, refineCoreProps, syncWithLocation, ...rest }?: UseModalFormProps<TQueryFnData, TError, TVariables, TContext, TData, TResponse, TResponseError>) => UseModalFormReturnType<TQueryFnData, TError, TVariables, TContext, TData, TResponse, TResponseError>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useModalForm/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,8BAA8B,EACnC,KAAK,SAAS,EASf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGhF,MAAM,MAAM,sBAAsB,CAChC,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,iBAAiB,CACnB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,GAAG;IACF,KAAK,EAAE;QACL,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;KACf,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAC3B,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,YAAY,CACd,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,GAAG;IACF;;;;;;;;;;;;;SAaK;IACL,UAAU,CAAC,EAAE;QACX,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;CACH,GAAG,8BAA8B,CAAC;AAEnC,eAAO,MAAM,YAAY,0VAatB,kBACD,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,KAAQ,uBACP,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CA6Mf,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useModalForm/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,8BAA8B,EACnC,KAAK,SAAS,EASf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGhF,MAAM,MAAM,sBAAsB,CAChC,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,iBAAiB,CACnB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,GAAG;IACF,KAAK,EAAE;QACL,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;KACf,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAC3B,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,YAAY,CACd,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,GAAG;IACF;;;;;;;;;;;;;;;;SAgBK;IACL,UAAU,CAAC,EAAE;QACX,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,sBAAsB,CAAC,EAAE,OAAO,CAAC;KAClC,CAAC;CACH,GAAG,8BAA8B,CAAC;AAEnC,eAAO,MAAM,YAAY,GACvB,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,EACzC,6DAKC,iBAAiB,CAClB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACV,KAAG,sBAAsB,CAC7B,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CA+Mf,CAAC"}
@@ -18,17 +18,21 @@ export type UseModalFormProps<TQueryFnData extends BaseRecord = BaseRecord, TErr
18
18
  * `autoSubmitClose`: Whether the form should be submitted when the modal is closed.
19
19
  *
20
20
  * `autoResetForm`: Whether the form should be reset when the form is submitted.
21
+ *
22
+ * `autoResetFormWhenClose`: Whether the form should be reset to defaultValues when the modal is closed.
21
23
  * @type `{
22
24
  defaultVisible?: boolean;
23
25
  autoSubmitClose?: boolean;
24
26
  autoResetForm?: boolean;
27
+ autoResetFormWhenClose?: boolean;
25
28
  }`
26
- * @default `defaultVisible = false` `autoSubmitClose = true` `autoResetForm = true`
29
+ * @default `defaultVisible = false` `autoSubmitClose = true` `autoResetForm = true` `autoResetFormWhenClose = true`
27
30
  */
28
31
  modalProps?: {
29
32
  defaultVisible?: boolean;
30
33
  autoSubmitClose?: boolean;
31
34
  autoResetForm?: boolean;
35
+ autoResetFormWhenClose?: boolean;
32
36
  };
33
37
  } & FormWithSyncWithLocationParams;
34
38
  export declare const useModalForm: <TQueryFnData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}, TData extends BaseRecord = TQueryFnData, TResponse extends BaseRecord = TData, TResponseError extends HttpError = TError>({ modalProps, refineCoreProps, syncWithLocation, ...rest }?: UseModalFormProps<TQueryFnData, TError, TVariables, TContext, TData, TResponse, TResponseError>) => UseModalFormReturnType<TQueryFnData, TError, TVariables, TContext, TData, TResponse, TResponseError>;
@@ -18,17 +18,21 @@ export type UseModalFormProps<TQueryFnData extends BaseRecord = BaseRecord, TErr
18
18
  * `autoSubmitClose`: Whether the form should be submitted when the modal is closed.
19
19
  *
20
20
  * `autoResetForm`: Whether the form should be reset when the form is submitted.
21
+ *
22
+ * `autoResetFormWhenClose`: Whether the form should be reset to defaultValues when the modal is closed.
21
23
  * @type `{
22
24
  defaultVisible?: boolean;
23
25
  autoSubmitClose?: boolean;
24
26
  autoResetForm?: boolean;
27
+ autoResetFormWhenClose?: boolean;
25
28
  }`
26
- * @default `defaultVisible = false` `autoSubmitClose = true` `autoResetForm = true`
29
+ * @default `defaultVisible = false` `autoSubmitClose = true` `autoResetForm = true` `autoResetFormWhenClose = true`
27
30
  */
28
31
  modalProps?: {
29
32
  defaultVisible?: boolean;
30
33
  autoSubmitClose?: boolean;
31
34
  autoResetForm?: boolean;
35
+ autoResetFormWhenClose?: boolean;
32
36
  };
33
37
  } & FormWithSyncWithLocationParams;
34
38
  export declare const useModalForm: <TQueryFnData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}, TData extends BaseRecord = TQueryFnData, TResponse extends BaseRecord = TData, TResponseError extends HttpError = TError>({ modalProps, refineCoreProps, syncWithLocation, ...rest }?: UseModalFormProps<TQueryFnData, TError, TVariables, TContext, TData, TResponse, TResponseError>) => UseModalFormReturnType<TQueryFnData, TError, TVariables, TContext, TData, TResponse, TResponseError>;
@@ -18,17 +18,21 @@ export type UseModalFormProps<TQueryFnData extends BaseRecord = BaseRecord, TErr
18
18
  * `autoSubmitClose`: Whether the form should be submitted when the modal is closed.
19
19
  *
20
20
  * `autoResetForm`: Whether the form should be reset when the form is submitted.
21
+ *
22
+ * `autoResetFormWhenClose`: Whether the form should be reset to defaultValues when the modal is closed.
21
23
  * @type `{
22
24
  defaultVisible?: boolean;
23
25
  autoSubmitClose?: boolean;
24
26
  autoResetForm?: boolean;
27
+ autoResetFormWhenClose?: boolean;
25
28
  }`
26
- * @default `defaultVisible = false` `autoSubmitClose = true` `autoResetForm = true`
29
+ * @default `defaultVisible = false` `autoSubmitClose = true` `autoResetForm = true` `autoResetFormWhenClose = true`
27
30
  */
28
31
  modalProps?: {
29
32
  defaultVisible?: boolean;
30
33
  autoSubmitClose?: boolean;
31
34
  autoResetForm?: boolean;
35
+ autoResetFormWhenClose?: boolean;
32
36
  };
33
37
  } & FormWithSyncWithLocationParams;
34
38
  export declare const useModalForm: <TQueryFnData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables extends FieldValues = FieldValues, TContext extends object = {}, TData extends BaseRecord = TQueryFnData, TResponse extends BaseRecord = TData, TResponseError extends HttpError = TError>({ modalProps, refineCoreProps, syncWithLocation, ...rest }?: UseModalFormProps<TQueryFnData, TError, TVariables, TContext, TData, TResponse, TResponseError>) => UseModalFormReturnType<TQueryFnData, TError, TVariables, TContext, TData, TResponse, TResponseError>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useModalForm/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,8BAA8B,EACnC,KAAK,SAAS,EASf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGhF,MAAM,MAAM,sBAAsB,CAChC,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,iBAAiB,CACnB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,GAAG;IACF,KAAK,EAAE;QACL,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;KACf,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAC3B,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,YAAY,CACd,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,GAAG;IACF;;;;;;;;;;;;;SAaK;IACL,UAAU,CAAC,EAAE;QACX,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;CACH,GAAG,8BAA8B,CAAC;AAEnC,eAAO,MAAM,YAAY,0VAatB,kBACD,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,KAAQ,uBACP,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CA6Mf,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useModalForm/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,8BAA8B,EACnC,KAAK,SAAS,EASf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGhF,MAAM,MAAM,sBAAsB,CAChC,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,iBAAiB,CACnB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,GAAG;IACF,KAAK,EAAE;QACL,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;KACf,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAC3B,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,YAAY,CACd,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,GAAG;IACF;;;;;;;;;;;;;;;;SAgBK;IACL,UAAU,CAAC,EAAE;QACX,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,sBAAsB,CAAC,EAAE,OAAO,CAAC;KAClC,CAAC;CACH,GAAG,8BAA8B,CAAC;AAEnC,eAAO,MAAM,YAAY,GACvB,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,EACzC,6DAKC,iBAAiB,CAClB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACV,KAAG,sBAAsB,CAC7B,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CA+Mf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useStepsForm/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAQ,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG7D,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEhF,MAAM,MAAM,sBAAsB,CAChC,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,iBAAiB,CACnB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,GAAG;IACF,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;KAClC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAC3B,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,YAAY,CACd,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,GAAG;IACF;;;;;;;;;;SAUK;IACL,UAAU,CAAC,EAAE;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,YAAY,uTAWtB,kBACD,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,KAAQ,uBACP,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CAiFf,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useStepsForm/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAQ,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG7D,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEhF,MAAM,MAAM,sBAAsB,CAChC,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,iBAAiB,CACnB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,GAAG;IACF,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;KAClC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAC3B,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,YAAY,CACd,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,GAAG;IACF;;;;;;;;;;SAUK;IACL,UAAU,CAAC,EAAE;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,EACzC,0BAGC,iBAAiB,CAClB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACV,KAAG,sBAAsB,CAC7B,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CA2Ef,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useStepsForm/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAQ,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG7D,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEhF,MAAM,MAAM,sBAAsB,CAChC,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,iBAAiB,CACnB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,GAAG;IACF,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;KAClC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAC3B,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,YAAY,CACd,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,GAAG;IACF;;;;;;;;;;SAUK;IACL,UAAU,CAAC,EAAE;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,YAAY,uTAWtB,kBACD,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,KAAQ,uBACP,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CAiFf,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useStepsForm/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAQ,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG7D,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEhF,MAAM,MAAM,sBAAsB,CAChC,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,iBAAiB,CACnB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,GAAG;IACF,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;KAClC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAC3B,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,IACvC,YAAY,CACd,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACf,GAAG;IACF;;;;;;;;;;SAUK;IACL,UAAU,CAAC,EAAE;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,KAAK,SAAS,UAAU,GAAG,YAAY,EACvC,SAAS,SAAS,UAAU,GAAG,KAAK,EACpC,cAAc,SAAS,SAAS,GAAG,MAAM,EACzC,0BAGC,iBAAiB,CAClB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACV,KAAG,sBAAsB,CAC7B,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CA2Ef,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@refinedev/react-hook-form",
3
- "version": "4.10.1",
3
+ "version": "5.0.0",
4
4
  "private": false,
5
5
  "description": "refine offers a React Hook Form adapter that allows you to use the React Hook Form library with refine.",
6
6
  "repository": {
@@ -37,32 +37,31 @@
37
37
  },
38
38
  "devDependencies": {
39
39
  "@esbuild-plugins/node-resolve": "^0.1.4",
40
- "@refinedev/core": "^4.57.1",
41
- "@testing-library/jest-dom": "^5.16.4",
42
- "@testing-library/react": "^13.1.1",
43
- "@testing-library/user-event": "^14.1.1",
40
+ "@refinedev/core": "^5.0.0",
41
+ "@testing-library/jest-dom": "^6.6.3",
42
+ "@testing-library/react": "^16.3.0",
43
+ "@testing-library/user-event": "^14.6.1",
44
44
  "@types/jest": "^29.2.4",
45
45
  "@types/lodash": "^4.14.171",
46
- "@types/node": "^18.16.2",
47
- "@types/testing-library__jest-dom": "^5.14.3",
48
- "jest": "^29.3.1",
49
- "jest-environment-jsdom": "^29.3.1",
46
+ "@types/node": "^20",
47
+ "jest": "^30.0.5",
48
+ "jest-environment-jsdom": "^30.0.5",
50
49
  "react-router": "^7.0.2",
51
50
  "ts-jest": "^29.1.2",
52
51
  "tslib": "^2.6.2",
53
52
  "tsup": "^6.7.0",
54
- "typescript": "^5.4.2"
53
+ "typescript": "^5.8.3"
55
54
  },
56
55
  "peerDependencies": {
57
- "@refinedev/core": "^4.46.1",
58
- "@types/react": "^17.0.0 || ^18.0.0",
59
- "@types/react-dom": "^17.0.0 || ^18.0.0",
60
- "react": "^17.0.0 || ^18.0.0",
61
- "react-dom": "^17.0.0 || ^18.0.0",
56
+ "@refinedev/core": "^5.0.0",
57
+ "@types/react": "^18.0.0 || ^19.0.0",
58
+ "@types/react-dom": "^18.0.0 || ^19.0.0",
59
+ "react": "^18.0.0 || ^19.0.0",
60
+ "react-dom": "^18.0.0 || ^19.0.0",
62
61
  "react-hook-form": "^7.57.0"
63
62
  },
64
63
  "engines": {
65
- "node": ">=10"
64
+ "node": ">=20"
66
65
  },
67
66
  "publishConfig": {
68
67
  "access": "public"
@@ -163,7 +163,7 @@ describe("useForm hook", () => {
163
163
  expect(document.body).not.toHaveTextContent("loading");
164
164
  });
165
165
 
166
- expect(onMutationError).toBeCalledTimes(1);
166
+ expect(onMutationError).toHaveBeenCalledTimes(1);
167
167
 
168
168
  expect(getByText("Title is required")).toBeInTheDocument();
169
169
  expect(getByText("Category is required")).toBeInTheDocument();
@@ -222,7 +222,7 @@ describe("useForm hook", () => {
222
222
 
223
223
  await waitFor(() => {
224
224
  expect(document.body).not.toHaveTextContent("loading");
225
- expect(onMutationErrorMock).toBeCalledTimes(1);
225
+ expect(onMutationErrorMock).toHaveBeenCalledTimes(1);
226
226
  });
227
227
 
228
228
  await waitFor(() => {
@@ -236,8 +236,8 @@ describe("useModalForm Hook", () => {
236
236
  });
237
237
 
238
238
  it("should `meta[syncWithLocationKey]` overrided by default", async () => {
239
- const mockGetOne = jest.fn();
240
- const mockUpdate = jest.fn();
239
+ const mockGetOne = jest.fn().mockResolvedValue({ data: { id: 5 } });
240
+ const mockUpdate = jest.fn().mockResolvedValue({ data: { id: 5 } });
241
241
 
242
242
  const { result } = renderHook(
243
243
  () =>
@@ -271,4 +271,99 @@ describe("useModalForm Hook", () => {
271
271
  undefined,
272
272
  );
273
273
  });
274
+
275
+ it("when 'autoResetFormWhenClose' is true, 'reset' should be called when 'close' is called", async () => {
276
+ const { result } = renderHook(
277
+ () =>
278
+ useModalForm({
279
+ refineCoreProps: {
280
+ resource: "posts",
281
+ action: "create",
282
+ },
283
+ modalProps: {
284
+ autoResetFormWhenClose: true,
285
+ },
286
+ }),
287
+ {
288
+ wrapper: TestWrapper({}),
289
+ },
290
+ );
291
+
292
+ await act(async () => {
293
+ result.current.modal.show();
294
+ // register values to form
295
+ result.current.register("test");
296
+ result.current.setValue("test", "test");
297
+ });
298
+
299
+ await act(async () => {
300
+ result.current.modal.close();
301
+ });
302
+
303
+ // check if form is reset. (values object should be empty)
304
+ expect(result.current.getValues()).toStrictEqual({});
305
+ });
306
+
307
+ it("when 'autoResetFormWhenClose' is false, 'reset' should not be called when 'close' is called", async () => {
308
+ const { result } = renderHook(
309
+ () =>
310
+ useModalForm({
311
+ refineCoreProps: {
312
+ resource: "posts",
313
+ action: "create",
314
+ },
315
+ modalProps: {
316
+ autoResetFormWhenClose: false,
317
+ },
318
+ }),
319
+ {
320
+ wrapper: TestWrapper({}),
321
+ },
322
+ );
323
+
324
+ await act(async () => {
325
+ result.current.modal.show();
326
+ // register values to form
327
+ result.current.register("test");
328
+ result.current.setValue("test", "test");
329
+ });
330
+
331
+ await act(async () => {
332
+ result.current.modal.close();
333
+ });
334
+
335
+ // check if form is not reset. (values object should NOT be empty)
336
+ expect(result.current.getValues()).toStrictEqual({ test: "test" });
337
+ });
338
+
339
+ it("when 'autoResetFormWhenClose' is true for edit action, 'reset' should be called when 'close' is called", async () => {
340
+ const { result } = renderHook(
341
+ () =>
342
+ useModalForm({
343
+ refineCoreProps: {
344
+ resource: "posts",
345
+ action: "edit",
346
+ id: "5",
347
+ },
348
+ modalProps: {
349
+ autoResetFormWhenClose: true,
350
+ },
351
+ }),
352
+ {
353
+ wrapper: TestWrapper({}),
354
+ },
355
+ );
356
+
357
+ await act(async () => {
358
+ result.current.modal.show();
359
+ result.current.register("test");
360
+ result.current.setValue("test", "test");
361
+ });
362
+
363
+ await act(async () => {
364
+ result.current.modal.close();
365
+ });
366
+
367
+ expect(result.current.getValues()).toStrictEqual({});
368
+ });
274
369
  });
@@ -7,11 +7,11 @@ import {
7
7
  useGo,
8
8
  useModal,
9
9
  useParsed,
10
- useResource,
11
10
  useUserFriendlyName,
12
11
  useTranslate,
13
12
  useWarnAboutChange,
14
13
  useInvalidate,
14
+ useResourceParams,
15
15
  } from "@refinedev/core";
16
16
  import type { FieldValues } from "react-hook-form";
17
17
 
@@ -68,17 +68,21 @@ export type UseModalFormProps<
68
68
  * `autoSubmitClose`: Whether the form should be submitted when the modal is closed.
69
69
  *
70
70
  * `autoResetForm`: Whether the form should be reset when the form is submitted.
71
+ *
72
+ * `autoResetFormWhenClose`: Whether the form should be reset to defaultValues when the modal is closed.
71
73
  * @type `{
72
74
  defaultVisible?: boolean;
73
75
  autoSubmitClose?: boolean;
74
76
  autoResetForm?: boolean;
77
+ autoResetFormWhenClose?: boolean;
75
78
  }`
76
- * @default `defaultVisible = false` `autoSubmitClose = true` `autoResetForm = true`
79
+ * @default `defaultVisible = false` `autoSubmitClose = true` `autoResetForm = true` `autoResetFormWhenClose = true`
77
80
  */
78
81
  modalProps?: {
79
82
  defaultVisible?: boolean;
80
83
  autoSubmitClose?: boolean;
81
84
  autoResetForm?: boolean;
85
+ autoResetFormWhenClose?: boolean;
82
86
  };
83
87
  } & FormWithSyncWithLocationParams;
84
88
 
@@ -119,11 +123,13 @@ export const useModalForm = <
119
123
 
120
124
  const { resource: resourceProp, action: actionProp } = refineCoreProps ?? {};
121
125
 
122
- const {
123
- resource,
124
- action: actionFromParams,
125
- identifier,
126
- } = useResource(resourceProp);
126
+ const { resource, identifier } = useResourceParams({
127
+ resource: resourceProp,
128
+ });
129
+ const { action: actionFromParams } = useResourceParams({
130
+ resource: resourceProp,
131
+ action: actionProp,
132
+ });
127
133
 
128
134
  const parsed = useParsed();
129
135
  const go = useGo();
@@ -146,6 +152,7 @@ export const useModalForm = <
146
152
  defaultVisible = false,
147
153
  autoSubmitClose = true,
148
154
  autoResetForm = true,
155
+ autoResetFormWhenClose = true,
149
156
  } = modalProps ?? {};
150
157
 
151
158
  const useHookFormResult = useForm<
@@ -271,6 +278,10 @@ export const useModalForm = <
271
278
 
272
279
  setId?.(undefined);
273
280
  close();
281
+
282
+ if (autoResetFormWhenClose) {
283
+ reset();
284
+ }
274
285
  }, [warnWhen, autoSaveProps.status]);
275
286
 
276
287
  const handleShow = useCallback(
@@ -291,12 +302,7 @@ export const useModalForm = <
291
302
  `${identifier}.titles.${actionProp}`,
292
303
  undefined,
293
304
  `${getUserFriendlyName(
294
- `${actionProp} ${
295
- resource?.meta?.label ??
296
- resource?.options?.label ??
297
- resource?.label ??
298
- identifier
299
- }`,
305
+ `${actionProp} ${resource?.meta?.label ?? identifier}`,
300
306
  "singular",
301
307
  )}`,
302
308
  );
@@ -119,12 +119,6 @@ export const useStepsForm = <
119
119
 
120
120
  const registeredFields = Object.keys(getValues());
121
121
 
122
- console.log({
123
- dirtyFields,
124
- registeredFields,
125
- data,
126
- });
127
-
128
122
  Object.entries(data).forEach(([key, value]) => {
129
123
  const name = key as Path<TVariables>;
130
124