@refinedev/react-hook-form 4.4.0 → 4.4.2

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.js CHANGED
@@ -1,2 +1,2 @@
1
- var Te=Object.create;var S=Object.defineProperty;var de=Object.getOwnPropertyDescriptor;var ie=Object.getOwnPropertyNames;var ue=Object.getPrototypeOf,pe=Object.prototype.hasOwnProperty;var le=(r,t)=>{for(var s in t)S(r,s,{get:t[s],enumerable:!0})},_=(r,t,s,F)=>{if(t&&typeof t=="object"||typeof t=="function")for(let T of ie(t))!pe.call(r,T)&&T!==s&&S(r,T,{get:()=>t[T],enumerable:!(F=de(t,T))||F.enumerable});return r};var ce=(r,t,s)=>(s=r!=null?Te(ue(r)):{},_(t||!r||!r.__esModule?S(s,"default",{value:r,enumerable:!0}):s,r)),me=r=>_(S({},"__esModule",{value:!0}),r);var Fe={};le(Fe,{useForm:()=>V,useModalForm:()=>ee,useStepsForm:()=>L});module.exports=me(Fe);var w=require("react"),q=require("react-hook-form"),h=require("@refinedev/core"),V=({refineCoreProps:r,warnWhenUnsavedChanges:t,...s}={})=>{let{warnWhenUnsavedChanges:F,setWarnWhen:T}=(0,h.useWarnAboutChange)(),B=t!=null?t:F,R=(0,h.useForm)({...r}),{queryResult:c,onFinish:m,formLoading:e}=R,D=(0,q.useForm)({...s}),{watch:o,setValue:x,getValues:E,handleSubmit:n}=D;(0,w.useEffect)(()=>{var b;let d=(b=c==null?void 0:c.data)==null?void 0:b.data;if(!d)return;let l=Object.keys(E());Object.entries(d).forEach(([k,y])=>{let p=k;l.includes(p)&&x(p,y)})},[c==null?void 0:c.data,x,E]),(0,w.useEffect)(()=>{let d=o((l,{type:b})=>{b==="change"&&a(l)});return()=>d.unsubscribe()},[o]);let a=d=>(B&&T(!0),d),f=(d,l)=>async b=>(T(!1),await n(d,l)(b));return{...D,handleSubmit:f,refineCore:R,saveButtonProps:{disabled:e,onClick:d=>{f(m,()=>!1)(d)}}}};var g=require("react");var L=({stepsProps:r,...t}={})=>{let{defaultStep:s=0,isBackValidate:F=!1}=r!=null?r:{},[T,B]=(0,g.useState)(s),R=V({...t}),{trigger:c,getValues:m,setValue:e,formState:{dirtyFields:D},refineCore:{queryResult:o}}=R;(0,g.useEffect)(()=>{var f;let n=(f=o==null?void 0:o.data)==null?void 0:f.data;if(!n)return;let a=Object.keys(m());Object.entries(n).forEach(([C,d])=>{let l=C;a.includes(l)&&(D[l]||e(l,d))})},[o==null?void 0:o.data,T,e,m]);let x=n=>{let a=n;n<0&&(a=0),B(a)};return{...R,steps:{currentStep:T,gotoStep:async n=>{if(n===T)return;if(n<T&&!F){x(n);return}await c()&&x(n)}}}};var W=require("react"),u=require("@refinedev/core");var v=ce(require("react")),ee=({modalProps:r,refineCoreProps:t,syncWithLocation:s,...F}={})=>{var A,G,N,Y,z,I,J;let[T,B]=v.default.useState(!1),R=(0,u.useTranslate)(),{resource:c,action:m}=t!=null?t:{},{resource:e,action:D}=(0,u.useResource)(c),o=(0,u.useParsed)(),x=(0,u.useGo)(),E=(A=m!=null?m:D)!=null?A:"",n=!(typeof s=="object"&&(s==null?void 0:s.syncId)===!1),a=typeof s=="object"&&"key"in s?s.key:e&&E&&s?`modal-${(G=e==null?void 0:e.identifier)!=null?G:e==null?void 0:e.name}-${E}`:void 0,{defaultVisible:f=!1,autoSubmitClose:C=!0,autoResetForm:d=!0}=r!=null?r:{},l=V({refineCoreProps:t,...F}),{reset:b,refineCore:{onFinish:k,id:y,setId:p},saveButtonProps:re,handleSubmit:te}=l,{visible:U,show:H,close:$}=(0,u.useModal)({defaultVisible:f});v.default.useEffect(()=>{var i,P,j,X;if(T===!1&&a){let Q=(P=(i=o==null?void 0:o.params)==null?void 0:i[a])==null?void 0:P.open;if(typeof Q=="boolean"?Q&&H():typeof Q=="string"&&Q==="true"&&H(),n){let Z=(X=(j=o==null?void 0:o.params)==null?void 0:j[a])==null?void 0:X.id;Z&&(p==null||p(Z))}B(!0)}},[a,o,n,p]),v.default.useEffect(()=>{var i;T===!0&&(U&&a?x({query:{[a]:{...(i=o==null?void 0:o.params)==null?void 0:i[a],open:!0,...n&&y&&{id:y}}},options:{keepQuery:!0},type:"replace"}):a&&!U&&x({query:{[a]:void 0},options:{keepQuery:!0},type:"replace"}))},[y,U,H,a,n]);let O=async i=>{await k(i),C&&$(),d&&b()},{warnWhen:K,setWarnWhen:se}=(0,u.useWarnAboutChange)(),oe=(0,W.useCallback)(()=>{if(K)if(window.confirm(R("warnWhenUnsavedChanges","Are you sure you want to leave? You have unsaved changes.")))se(!1);else return;p==null||p(void 0),$()},[K]),ae=(0,W.useCallback)(i=>{typeof i<"u"&&(p==null||p(i)),(!(E==="edit"||E==="clone")||(typeof i<"u"||typeof y<"u"))&&H()},[y]),ne=R(`${e==null?void 0:e.name}.titles.${m}`,void 0,`${(0,u.userFriendlyResourceName)(`${m} ${(J=(I=(z=(N=e==null?void 0:e.meta)==null?void 0:N.label)!=null?z:(Y=e==null?void 0:e.options)==null?void 0:Y.label)!=null?I:e==null?void 0:e.label)!=null?J:e==null?void 0:e.name}`,"singular")}`);return{modal:{submit:O,close:oe,show:ae,visible:U,title:ne},...l,saveButtonProps:{...re,onClick:i=>te(O)(i)}}};
1
+ var se=Object.create;var P=Object.defineProperty;var oe=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var ae=Object.getPrototypeOf,ne=Object.prototype.hasOwnProperty;var Te=(r,s)=>{for(var e in s)P(r,e,{get:s[e],enumerable:!0})},z=(r,s,e,x)=>{if(s&&typeof s=="object"||typeof s=="function")for(let t of te(s))!ne.call(r,t)&&t!==e&&P(r,t,{get:()=>s[t],enumerable:!(x=oe(s,t))||x.enumerable});return r};var de=(r,s,e)=>(e=r!=null?se(ae(r)):{},z(s||!r||!r.__esModule?P(e,"default",{value:r,enumerable:!0}):e,r)),pe=r=>z(P({},"__esModule",{value:!0}),r);var ie={};Te(ie,{useForm:()=>V,useModalForm:()=>X,useStepsForm:()=>J});module.exports=pe(ie);var W=require("react"),I=require("react-hook-form"),Q=require("@refinedev/core"),V=({refineCoreProps:r,warnWhenUnsavedChanges:s,...e}={})=>{let{warnWhenUnsavedChanges:x,setWarnWhen:t}=(0,Q.useWarnAboutChange)(),C=s??x,E=(0,Q.useForm)({...r}),{queryResult:m,onFinish:f,formLoading:T}=E,y=(0,I.useForm)({...e}),{watch:u,setValue:a,getValues:D,handleSubmit:o}=y;(0,W.useEffect)(()=>{var R;let d=(R=m==null?void 0:m.data)==null?void 0:R.data;if(!d)return;let c=Object.keys(D());Object.entries(d).forEach(([v,k])=>{let b=v;c.includes(b)&&a(b,k)})},[m==null?void 0:m.data,a,D]),(0,W.useEffect)(()=>{let d=u((c,{type:R})=>{R==="change"&&l(c)});return()=>d.unsubscribe()},[u]);let l=d=>(C&&t(!0),d),n=(d,c)=>async R=>(t(!1),o(d,c)(R));return{...y,handleSubmit:n,refineCore:E,saveButtonProps:{disabled:T,onClick:d=>{n(f,()=>!1)(d)}}}};var S=require("react");var J=({stepsProps:r,...s}={})=>{let{defaultStep:e=0,isBackValidate:x=!1}=r??{},[t,C]=(0,S.useState)(e),E=V({...s}),{trigger:m,getValues:f,setValue:T,formState:{dirtyFields:y},refineCore:{queryResult:u}}=E;(0,S.useEffect)(()=>{var n;let o=(n=u==null?void 0:u.data)==null?void 0:n.data;if(!o)return;let l=Object.keys(f());Object.entries(o).forEach(([B,d])=>{let c=B;l.includes(c)&&(y[c]||T(c,d))})},[u==null?void 0:u.data,t,T,f]);let a=o=>{let l=o;o<0&&(l=0),C(l)};return{...E,steps:{currentStep:t,gotoStep:async o=>{if(o===t)return;if(o<t&&!x){a(o);return}await m()&&a(o)}}}};var M=require("react"),i=require("@refinedev/core");var g=de(require("react")),X=({modalProps:r,refineCoreProps:s,syncWithLocation:e,...x}={})=>{var A,G;let[t,C]=g.default.useState(!1),E=(0,i.useTranslate)(),{resource:m,action:f}=s??{},{resource:T,action:y,identifier:u}=(0,i.useResource)(m),a=(0,i.useParsed)(),D=(0,i.useGo)(),o=f??y??"",l=!(typeof e=="object"&&(e==null?void 0:e.syncId)===!1),n=typeof e=="object"&&"key"in e?e.key:T&&o&&e?`modal-${u}-${o}`:void 0,{defaultVisible:B=!1,autoSubmitClose:d=!0,autoResetForm:c=!0}=r??{},R=V({refineCoreProps:s,...x}),{reset:v,refineCore:{onFinish:k,id:b,setId:F},saveButtonProps:Z,handleSubmit:_}=R,{visible:U,show:h,close:$}=(0,i.useModal)({defaultVisible:B});g.default.useEffect(()=>{var p,w,j,N;if(t===!1&&n){let H=(w=(p=a==null?void 0:a.params)==null?void 0:p[n])==null?void 0:w.open;if(typeof H=="boolean"?H&&h():typeof H=="string"&&H==="true"&&h(),l){let Y=(N=(j=a==null?void 0:a.params)==null?void 0:j[n])==null?void 0:N.id;Y&&(F==null||F(Y))}C(!0)}},[n,a,l,F]),g.default.useEffect(()=>{var p;t===!0&&(U&&n?D({query:{[n]:{...(p=a==null?void 0:a.params)==null?void 0:p[n],open:!0,...l&&b&&{id:b}}},options:{keepQuery:!0},type:"replace"}):n&&!U&&D({query:{[n]:void 0},options:{keepQuery:!0},type:"replace"}))},[b,U,h,n,l]);let O=async p=>{await k(p),d&&$(),c&&v()},{warnWhen:K,setWarnWhen:q}=(0,i.useWarnAboutChange)(),L=(0,M.useCallback)(()=>{if(K)if(window.confirm(E("warnWhenUnsavedChanges","Are you sure you want to leave? You have unsaved changes.")))q(!1);else return;F==null||F(void 0),$()},[K]),ee=(0,M.useCallback)(p=>{typeof p<"u"&&(F==null||F(p)),(!(o==="edit"||o==="clone")||(typeof p<"u"||typeof b<"u"))&&h()},[b]),re=E(`${u}.titles.${f}`,void 0,`${(0,i.userFriendlyResourceName)(`${f} ${((A=T==null?void 0:T.meta)==null?void 0:A.label)??((G=T==null?void 0:T.options)==null?void 0:G.label)??(T==null?void 0:T.label)??u}`,"singular")}`);return{modal:{submit:O,close:L,show:ee,visible:U,title:re},...R,saveButtonProps:{...Z,onClick:p=>_(O)(p)}}};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/useForm/index.ts","../src/useStepsForm/index.ts","../src/useModalForm/index.ts"],"sourcesContent":["export { useForm, UseFormProps, UseFormReturnType } from \"./useForm\";\nexport {\n useStepsForm,\n UseStepsFormProps,\n UseStepsFormReturnType,\n} from \"./useStepsForm\";\nexport {\n useModalForm,\n UseModalFormProps,\n UseModalFormReturnType,\n} from \"./useModalForm\";\n","import React, { useEffect } from \"react\";\nimport {\n useForm as useHookForm,\n UseFormProps as UseHookFormProps,\n UseFormReturn,\n FieldValues,\n UseFormHandleSubmit,\n Path,\n} from \"react-hook-form\";\nimport {\n BaseRecord,\n HttpError,\n useForm as useFormCore,\n useWarnAboutChange,\n UseFormProps as UseFormCoreProps,\n UseFormReturnType as UseFormReturnTypeCore,\n} from \"@refinedev/core\";\n\nexport type UseFormReturnType<\n 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} & 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 ...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 {\n warnWhenUnsavedChanges: warnWhenUnsavedChangesRefine,\n setWarnWhen,\n } = useWarnAboutChange();\n const warnWhenUnsavedChanges =\n warnWhenUnsavedChangesProp ?? warnWhenUnsavedChangesRefine;\n\n const useFormCoreResult = useFormCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n ...refineCoreProps,\n });\n\n const { queryResult, onFinish, formLoading } = useFormCoreResult;\n\n const useHookFormResult = useHookForm<TVariables, TContext>({\n ...rest,\n });\n\n const {\n watch,\n setValue,\n getValues,\n handleSubmit: handleSubmitReactHookForm,\n } = useHookFormResult;\n\n useEffect(() => {\n const data = queryResult?.data?.data;\n if (!data) return;\n\n const registeredFields = Object.keys(getValues());\n Object.entries(data).forEach(([key, value]) => {\n const name = key as Path<TVariables>;\n\n if (registeredFields.includes(name)) {\n setValue(name, value);\n }\n });\n }, [queryResult?.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: Record<string, any>) => {\n if (warnWhenUnsavedChanges) {\n setWarnWhen(true);\n }\n return changeValues;\n };\n\n const handleSubmit: UseFormHandleSubmit<TVariables> =\n (onValid, onInvalid) => async (e) => {\n setWarnWhen(false);\n return await handleSubmitReactHookForm(onValid, onInvalid)(e);\n };\n\n const saveButtonProps = {\n disabled: formLoading,\n onClick: (e: React.BaseSyntheticEvent) => {\n handleSubmit(onFinish, () => false)(e);\n },\n };\n\n return {\n ...useHookFormResult,\n handleSubmit,\n refineCore: useFormCoreResult,\n saveButtonProps,\n };\n};\n","import { useEffect, useState } from \"react\";\nimport { FieldValues, Path } from \"react-hook-form\";\nimport { BaseRecord, HttpError } from \"@refinedev/core\";\n\nimport { useForm, UseFormProps, 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: { queryResult },\n } = useHookFormResult;\n\n useEffect(() => {\n const data = queryResult?.data?.data;\n if (!data) return;\n\n const registeredFields = Object.keys(getValues());\n Object.entries(data).forEach(([key, value]) => {\n const name = key as Path<TVariables>;\n\n if (registeredFields.includes(name)) {\n if (!dirtyFields[name]) {\n setValue(name, value);\n }\n }\n });\n }, [queryResult?.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 BaseKey,\n BaseRecord,\n FormWithSyncWithLocationParams,\n HttpError,\n useGo,\n useModal,\n useParsed,\n useResource,\n userFriendlyResourceName,\n useTranslate,\n useWarnAboutChange,\n} from \"@refinedev/core\";\nimport { FieldValues } from \"react-hook-form\";\n\nimport { useForm, UseFormProps, UseFormReturnType } from \"../useForm\";\nimport React from \"react\";\n\nexport type UseModalFormReturnType<\n 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 [initiallySynced, setInitiallySynced] = React.useState(false);\n\n const translate = useTranslate();\n\n const { resource: resourceProp, action: actionProp } =\n refineCoreProps ?? {};\n\n const { resource, action: actionFromParams } = useResource(resourceProp);\n\n const parsed = useParsed();\n const go = useGo();\n\n const action = actionProp ?? actionFromParams ?? \"\";\n\n const syncingId = !(\n typeof syncWithLocation === \"object\" &&\n syncWithLocation?.syncId === false\n );\n\n const syncWithLocationKey =\n typeof syncWithLocation === \"object\" && \"key\" in syncWithLocation\n ? syncWithLocation.key\n : resource && action && syncWithLocation\n ? `modal-${resource?.identifier ?? resource?.name}-${action}`\n : undefined;\n\n const {\n defaultVisible = false,\n autoSubmitClose = true,\n autoResetForm = true,\n } = modalProps ?? {};\n\n const useHookFormResult = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TContext,\n TData,\n TResponse,\n TResponseError\n >({\n refineCoreProps,\n ...rest,\n });\n\n const {\n reset,\n refineCore: { onFinish, id, setId },\n saveButtonProps,\n handleSubmit,\n } = useHookFormResult;\n\n const { visible, show, close } = useModal({\n defaultVisible,\n });\n\n React.useEffect(() => {\n if (initiallySynced === 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 (warnWhen) {\n const warnWhenConfirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (warnWhenConfirm) {\n setWarnWhen(false);\n } else {\n return;\n }\n }\n\n setId?.(undefined);\n close();\n }, [warnWhen]);\n\n const handleShow = useCallback(\n (showId?: BaseKey) => {\n if (typeof showId !== \"undefined\") {\n setId?.(showId);\n }\n const needsIdToOpen = action === \"edit\" || action === \"clone\";\n const hasId =\n typeof showId !== \"undefined\" || typeof id !== \"undefined\";\n if (needsIdToOpen ? hasId : true) {\n show();\n }\n },\n [id],\n );\n\n const title = translate(\n `${resource?.name}.titles.${actionProp}`,\n undefined,\n `${userFriendlyResourceName(\n `${actionProp} ${\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n resource?.name\n }`,\n \"singular\",\n )}`,\n );\n\n return {\n modal: {\n submit,\n close: handleClose,\n show: handleShow,\n visible,\n title,\n },\n ...useHookFormResult,\n saveButtonProps: {\n ...saveButtonProps,\n onClick: (e) => handleSubmit(submit)(e),\n },\n };\n};\n"],"mappings":"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","names":["src_exports","__export","useForm","useModalForm","useStepsForm","__toCommonJS","import_react","import_react_hook_form","import_core","useForm","refineCoreProps","warnWhenUnsavedChangesProp","rest","warnWhenUnsavedChangesRefine","setWarnWhen","warnWhenUnsavedChanges","useFormCoreResult","useFormCore","queryResult","onFinish","formLoading","useHookFormResult","useHookForm","watch","setValue","getValues","handleSubmitReactHookForm","_a","data","registeredFields","key","value","name","subscription","values","type","onValuesChange","changeValues","handleSubmit","onValid","onInvalid","e","import_react","useStepsForm","stepsProps","rest","defaultStep","isBackValidate","current","setCurrent","useHookFormResult","useForm","trigger","getValues","setValue","dirtyFields","queryResult","_a","data","registeredFields","key","value","name","go","step","targetStep","import_react","import_core","import_react","useModalForm","modalProps","refineCoreProps","syncWithLocation","rest","_a","_b","_c","_d","_e","_f","_g","initiallySynced","setInitiallySynced","React","translate","resourceProp","actionProp","resource","actionFromParams","parsed","go","action","syncingId","syncWithLocationKey","defaultVisible","autoSubmitClose","autoResetForm","useHookFormResult","useForm","reset","onFinish","id","setId","saveButtonProps","handleSubmit","visible","show","close","openStatus","idFromParams","submit","values","warnWhen","setWarnWhen","handleClose","handleShow","showId","title","e"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/useForm/index.ts","../src/useStepsForm/index.ts","../src/useModalForm/index.ts"],"sourcesContent":["export { useForm, UseFormProps, UseFormReturnType } from \"./useForm\";\nexport {\n useStepsForm,\n UseStepsFormProps,\n UseStepsFormReturnType,\n} from \"./useStepsForm\";\nexport {\n useModalForm,\n UseModalFormProps,\n UseModalFormReturnType,\n} from \"./useModalForm\";\n","import React, { useEffect } from \"react\";\nimport {\n useForm as useHookForm,\n UseFormProps as UseHookFormProps,\n UseFormReturn,\n FieldValues,\n UseFormHandleSubmit,\n Path,\n} from \"react-hook-form\";\nimport {\n BaseRecord,\n HttpError,\n useForm as useFormCore,\n useWarnAboutChange,\n UseFormProps as UseFormCoreProps,\n UseFormReturnType as UseFormReturnTypeCore,\n} from \"@refinedev/core\";\n\nexport type UseFormReturnType<\n 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} & 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 ...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 {\n warnWhenUnsavedChanges: warnWhenUnsavedChangesRefine,\n setWarnWhen,\n } = useWarnAboutChange();\n const warnWhenUnsavedChanges =\n warnWhenUnsavedChangesProp ?? warnWhenUnsavedChangesRefine;\n\n const useFormCoreResult = useFormCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n ...refineCoreProps,\n });\n\n const { queryResult, onFinish, formLoading } = useFormCoreResult;\n\n const useHookFormResult = useHookForm<TVariables, TContext>({\n ...rest,\n });\n\n const {\n watch,\n setValue,\n getValues,\n handleSubmit: handleSubmitReactHookForm,\n } = useHookFormResult;\n\n useEffect(() => {\n const data = queryResult?.data?.data;\n if (!data) return;\n\n const registeredFields = Object.keys(getValues());\n Object.entries(data).forEach(([key, value]) => {\n const name = key as Path<TVariables>;\n\n if (registeredFields.includes(name)) {\n setValue(name, value);\n }\n });\n }, [queryResult?.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: Record<string, any>) => {\n if (warnWhenUnsavedChanges) {\n setWarnWhen(true);\n }\n return changeValues;\n };\n\n const handleSubmit: UseFormHandleSubmit<TVariables> =\n (onValid, onInvalid) => async (e) => {\n setWarnWhen(false);\n return handleSubmitReactHookForm(onValid, onInvalid)(e);\n };\n\n const saveButtonProps = {\n disabled: formLoading,\n onClick: (e: React.BaseSyntheticEvent) => {\n handleSubmit(onFinish, () => false)(e);\n },\n };\n\n return {\n ...useHookFormResult,\n handleSubmit,\n refineCore: useFormCoreResult,\n saveButtonProps,\n };\n};\n","import { useEffect, useState } from \"react\";\nimport { FieldValues, Path } from \"react-hook-form\";\nimport { BaseRecord, HttpError } from \"@refinedev/core\";\n\nimport { useForm, UseFormProps, 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: { queryResult },\n } = useHookFormResult;\n\n useEffect(() => {\n const data = queryResult?.data?.data;\n if (!data) return;\n\n const registeredFields = Object.keys(getValues());\n Object.entries(data).forEach(([key, value]) => {\n const name = key as Path<TVariables>;\n\n if (registeredFields.includes(name)) {\n if (!dirtyFields[name]) {\n setValue(name, value);\n }\n }\n });\n }, [queryResult?.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 BaseKey,\n BaseRecord,\n FormWithSyncWithLocationParams,\n HttpError,\n useGo,\n useModal,\n useParsed,\n useResource,\n userFriendlyResourceName,\n useTranslate,\n useWarnAboutChange,\n} from \"@refinedev/core\";\nimport { FieldValues } from \"react-hook-form\";\n\nimport { useForm, UseFormProps, UseFormReturnType } from \"../useForm\";\nimport React from \"react\";\n\nexport type UseModalFormReturnType<\n 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 [initiallySynced, setInitiallySynced] = React.useState(false);\n\n const translate = useTranslate();\n\n const { resource: resourceProp, action: actionProp } =\n refineCoreProps ?? {};\n\n const {\n resource,\n action: actionFromParams,\n identifier,\n } = useResource(resourceProp);\n\n const parsed = useParsed();\n const go = useGo();\n\n const action = actionProp ?? actionFromParams ?? \"\";\n\n const syncingId = !(\n typeof syncWithLocation === \"object\" &&\n 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 ...rest,\n });\n\n const {\n reset,\n refineCore: { onFinish, id, setId },\n saveButtonProps,\n handleSubmit,\n } = useHookFormResult;\n\n const { visible, show, close } = useModal({\n defaultVisible,\n });\n\n React.useEffect(() => {\n if (initiallySynced === 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 (warnWhen) {\n const warnWhenConfirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (warnWhenConfirm) {\n setWarnWhen(false);\n } else {\n return;\n }\n }\n\n setId?.(undefined);\n close();\n }, [warnWhen]);\n\n const handleShow = useCallback(\n (showId?: BaseKey) => {\n if (typeof showId !== \"undefined\") {\n setId?.(showId);\n }\n const needsIdToOpen = action === \"edit\" || action === \"clone\";\n const hasId =\n typeof showId !== \"undefined\" || typeof id !== \"undefined\";\n if (needsIdToOpen ? hasId : true) {\n show();\n }\n },\n [id],\n );\n\n const title = translate(\n `${identifier}.titles.${actionProp}`,\n undefined,\n `${userFriendlyResourceName(\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_react_hook_form","import_core","useForm","refineCoreProps","warnWhenUnsavedChangesProp","rest","warnWhenUnsavedChangesRefine","setWarnWhen","warnWhenUnsavedChanges","useFormCoreResult","useFormCore","queryResult","onFinish","formLoading","useHookFormResult","useHookForm","watch","setValue","getValues","handleSubmitReactHookForm","_a","data","registeredFields","key","value","name","subscription","values","type","onValuesChange","changeValues","handleSubmit","onValid","onInvalid","e","import_react","useStepsForm","stepsProps","rest","defaultStep","isBackValidate","current","setCurrent","useHookFormResult","useForm","trigger","getValues","setValue","dirtyFields","queryResult","_a","data","registeredFields","key","value","name","go","step","targetStep","import_react","import_core","import_react","useModalForm","modalProps","refineCoreProps","syncWithLocation","rest","_a","_b","initiallySynced","setInitiallySynced","React","translate","resourceProp","actionProp","resource","actionFromParams","identifier","parsed","go","action","syncingId","syncWithLocationKey","defaultVisible","autoSubmitClose","autoResetForm","useHookFormResult","useForm","reset","onFinish","id","setId","saveButtonProps","handleSubmit","visible","show","close","_c","_d","openStatus","idFromParams","submit","values","warnWhen","setWarnWhen","handleClose","handleShow","showId","title","e"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useModalForm/index.ts"],"names":[],"mappings":"AACA,OAAO,EACH,OAAO,EACP,UAAU,EACV,8BAA8B,EAC9B,SAAS,EAQZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAW,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGtE,oBAAY,sBAAsB,CAC9B,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,IACzC,iBAAiB,CACjB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACjB,GAAG;IACA,KAAK,EAAE;QACH,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;QACrC,KAAK,EAAE,MAAM,IAAI,CAAC;QAClB,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;QAC7B,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;CACL,CAAC;AAEF,oBAAY,iBAAiB,CACzB,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,IACzC,YAAY,CACZ,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACjB,GAAG;IACA;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,EAAE;QACT,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;CACL,GAAG,8BAA8B,CAAC;AAEnC,eAAO,MAAM,YAAY,kiBAoNxB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/useModalForm/index.ts"],"names":[],"mappings":"AACA,OAAO,EACH,OAAO,EACP,UAAU,EACV,8BAA8B,EAC9B,SAAS,EAQZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAW,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGtE,oBAAY,sBAAsB,CAC9B,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,IACzC,iBAAiB,CACjB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACjB,GAAG;IACA,KAAK,EAAE;QACH,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;QACrC,KAAK,EAAE,MAAM,IAAI,CAAC;QAClB,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;QAC7B,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;CACL,CAAC;AAEF,oBAAY,iBAAiB,CACzB,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,IACzC,YAAY,CACZ,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,SAAS,EACT,cAAc,CACjB,GAAG;IACA;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,EAAE;QACT,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;CACL,GAAG,8BAA8B,CAAC;AAEnC,eAAO,MAAM,YAAY,kiBAwNxB,CAAC"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.4.0",
2
+ "version": "4.4.2",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -30,7 +30,7 @@
30
30
  "@types/react-dom": "^17.0.0 || ^18.0.0"
31
31
  },
32
32
  "devDependencies": {
33
- "@refinedev/core": "^4.14.0",
33
+ "@refinedev/core": "^4.24.0",
34
34
  "@esbuild-plugins/node-resolve": "^0.1.4",
35
35
  "@types/jest": "^29.2.4",
36
36
  "jest": "^29.3.1",
@@ -38,7 +38,7 @@
38
38
  "react-router-dom": "^6.8.1",
39
39
  "ts-jest": "^29.0.3",
40
40
  "tslib": "^2.3.1",
41
- "tsup": "^5.11.13"
41
+ "tsup": "^6.7.0"
42
42
  },
43
43
  "dependencies": {
44
44
  "react-hook-form": "^7.30.0"
@@ -160,7 +160,7 @@ export const useForm = <
160
160
  const handleSubmit: UseFormHandleSubmit<TVariables> =
161
161
  (onValid, onInvalid) => async (e) => {
162
162
  setWarnWhen(false);
163
- return await handleSubmitReactHookForm(onValid, onInvalid)(e);
163
+ return handleSubmitReactHookForm(onValid, onInvalid)(e);
164
164
  };
165
165
 
166
166
  const saveButtonProps = {
@@ -118,7 +118,11 @@ export const useModalForm = <
118
118
  const { resource: resourceProp, action: actionProp } =
119
119
  refineCoreProps ?? {};
120
120
 
121
- const { resource, action: actionFromParams } = useResource(resourceProp);
121
+ const {
122
+ resource,
123
+ action: actionFromParams,
124
+ identifier,
125
+ } = useResource(resourceProp);
122
126
 
123
127
  const parsed = useParsed();
124
128
  const go = useGo();
@@ -134,7 +138,7 @@ export const useModalForm = <
134
138
  typeof syncWithLocation === "object" && "key" in syncWithLocation
135
139
  ? syncWithLocation.key
136
140
  : resource && action && syncWithLocation
137
- ? `modal-${resource?.identifier ?? resource?.name}-${action}`
141
+ ? `modal-${identifier}-${action}`
138
142
  : undefined;
139
143
 
140
144
  const {
@@ -266,14 +270,14 @@ export const useModalForm = <
266
270
  );
267
271
 
268
272
  const title = translate(
269
- `${resource?.name}.titles.${actionProp}`,
273
+ `${identifier}.titles.${actionProp}`,
270
274
  undefined,
271
275
  `${userFriendlyResourceName(
272
276
  `${actionProp} ${
273
277
  resource?.meta?.label ??
274
278
  resource?.options?.label ??
275
279
  resource?.label ??
276
- resource?.name
280
+ identifier
277
281
  }`,
278
282
  "singular",
279
283
  )}`,