@rpcbase/form 0.82.0 → 0.84.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.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/navigationGuard.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -6,11 +6,9 @@ import env from "@rpcbase/env";
|
|
|
6
6
|
import * as n$1 from "zod/v4/core";
|
|
7
7
|
const isFormNavigationGuardDisabledByEnv = () => {
|
|
8
8
|
const raw = env.RB_PUBLIC_DISABLE_FORM_GUARD;
|
|
9
|
-
if (raw === true) return true;
|
|
10
|
-
if (raw === false || raw === void 0) return false;
|
|
11
9
|
if (typeof raw !== "string") return false;
|
|
12
10
|
const val = raw.trim().toLowerCase();
|
|
13
|
-
return val === "1" || val === "true" || val === "yes"
|
|
11
|
+
return val === "1" || val === "true" || val === "yes";
|
|
14
12
|
};
|
|
15
13
|
const normalizeFormNavigationGuardOptions = (input) => {
|
|
16
14
|
if (isFormNavigationGuardDisabledByEnv()) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/navigationGuard.ts","../src/useFormNavigationGuard.ts","../src/useForm.ts","../../../node_modules/@hookform/resolvers/dist/resolvers.mjs","../../../node_modules/@hookform/resolvers/zod/dist/zod.mjs"],"sourcesContent":["import type { BlockerFunction } from \"@rpcbase/router\"\nimport env from \"@rpcbase/env\"\n\n\nconst isFormNavigationGuardDisabledByEnv = (): boolean => {\n const raw = env.RB_PUBLIC_DISABLE_FORM_GUARD\n\n if (raw === true) return true\n if (raw === false || raw === undefined) return false\n if (typeof raw !== \"string\") return false\n\n const val = raw.trim().toLowerCase()\n return val === \"1\" || val === \"true\" || val === \"yes\" || val === \"on\"\n}\n\n\nexport type FormNavigationGuardOptions =\n | false\n | {\n enabled?: boolean\n message?: string\n blockOnSearch?: boolean\n priority?: number\n }\n\nexport type NormalizedFormNavigationGuardOptions = {\n enabled: boolean\n message?: string\n blockOnSearch: boolean\n priority?: number\n}\n\nexport const normalizeFormNavigationGuardOptions = (\n input: FormNavigationGuardOptions | undefined,\n): NormalizedFormNavigationGuardOptions => {\n if (isFormNavigationGuardDisabledByEnv()) {\n return { enabled: false, blockOnSearch: false }\n }\n\n if (input === false) {\n return { enabled: false, blockOnSearch: false }\n }\n\n return {\n enabled: input?.enabled ?? true,\n message: input?.message,\n blockOnSearch: input?.blockOnSearch ?? false,\n priority: input?.priority,\n }\n}\n\nexport const shouldBlockFormNavigation = ({\n args,\n shouldBlockUnload,\n blockOnSearch,\n}: {\n args: Parameters<BlockerFunction>[0]\n shouldBlockUnload: boolean\n blockOnSearch: boolean\n}): boolean => {\n if (!shouldBlockUnload) return false\n if (args.currentLocation.pathname !== args.nextLocation.pathname) return true\n if (blockOnSearch && args.currentLocation.search !== args.nextLocation.search) return true\n return false\n}\n","import { useCallback, useId, useMemo } from \"react\"\nimport type { FieldValues, UseFormReturn } from \"react-hook-form\"\nimport { useFormState } from \"react-hook-form\"\nimport { useRegisterNavigationGuard } from \"@rpcbase/router\"\n\nimport {\n normalizeFormNavigationGuardOptions,\n shouldBlockFormNavigation,\n type FormNavigationGuardOptions,\n} from \"./navigationGuard\"\n\n\nexport const DEFAULT_FORM_NAVIGATION_GUARD_MESSAGE =\n \"You have unsaved changes. Leave without saving?\"\n\nexport const useFormNavigationGuard = <\n TFieldValues extends FieldValues,\n TContext = any,\n TTransformedValues = TFieldValues,\n>(\n form: UseFormReturn<TFieldValues, TContext, TTransformedValues>,\n opts?: FormNavigationGuardOptions,\n): void => {\n const { isDirty, isSubmitting } = useFormState({ control: form.control })\n\n const normalized = normalizeFormNavigationGuardOptions(opts)\n\n const reactId = useId()\n const id = useMemo(() => `rpcbase:form:${reactId}`, [reactId])\n\n const shouldBlockUnload = normalized.enabled && isDirty && !isSubmitting\n\n const shouldBlockNavigation = useCallback(\n (args: Parameters<typeof shouldBlockFormNavigation>[0][\"args\"]) =>\n shouldBlockFormNavigation({\n args,\n shouldBlockUnload,\n blockOnSearch: normalized.blockOnSearch,\n }),\n [normalized.blockOnSearch, shouldBlockUnload],\n )\n\n useRegisterNavigationGuard({\n id,\n enabled: normalized.enabled,\n priority: normalized.priority,\n message: normalized.message ?? DEFAULT_FORM_NAVIGATION_GUARD_MESSAGE,\n blockOnSearch: normalized.blockOnSearch,\n shouldBlockNavigation,\n shouldBlockUnload,\n })\n}\n","import { useForm as rhfUseForm } from \"react-hook-form\"\nimport type { FieldValues, UseFormProps, UseFormReturn } from \"react-hook-form\"\n\nimport { useFormNavigationGuard } from \"./useFormNavigationGuard\"\nimport {\n normalizeFormNavigationGuardOptions,\n type FormNavigationGuardOptions,\n} from \"./navigationGuard\"\n\n\nexport type UseFormPropsWithNavigationGuard<\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n TTransformedValues = TFieldValues,\n> = UseFormProps<TFieldValues, TContext, TTransformedValues> & {\n navigationGuard?: FormNavigationGuardOptions\n}\n\nexport const useForm = <\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n TTransformedValues = TFieldValues,\n>(\n props?: UseFormPropsWithNavigationGuard<TFieldValues, TContext, TTransformedValues>,\n): UseFormReturn<TFieldValues, TContext, TTransformedValues> => {\n const { navigationGuard, ...rhfProps } = props ?? {}\n\n const form = rhfUseForm<TFieldValues, TContext, TTransformedValues>(\n rhfProps as UseFormProps<TFieldValues, TContext, TTransformedValues>,\n )\n\n const normalized = normalizeFormNavigationGuardOptions(navigationGuard)\n useFormNavigationGuard(form, normalized.enabled ? navigationGuard : { enabled: false })\n\n return form\n}\n","import{get as e,set as t}from\"react-hook-form\";const r=(t,r,o)=>{if(t&&\"reportValidity\"in t){const s=e(o,r);t.setCustomValidity(s&&s.message||\"\"),t.reportValidity()}},o=(e,t)=>{for(const o in t.fields){const s=t.fields[o];s&&s.ref&&\"reportValidity\"in s.ref?r(s.ref,o,e):s&&s.refs&&s.refs.forEach(t=>r(t,o,e))}},s=(r,s)=>{s.shouldUseNativeValidation&&o(r,s);const n={};for(const o in r){const f=e(s.fields,o),c=Object.assign(r[o]||{},{ref:f&&f.ref});if(i(s.names||Object.keys(r),o)){const r=Object.assign({},e(n,o));t(r,\"root\",c),t(n,o,r)}else t(n,o,c)}return n},i=(e,t)=>{const r=n(t);return e.some(e=>n(e).match(`^${r}\\\\.\\\\d+`))};function n(e){return e.replace(/\\]|\\[/g,\"\")}export{s as toNestErrors,o as validateFieldsNatively};\n//# sourceMappingURL=resolvers.mjs.map\n","import{validateFieldsNatively as r,toNestErrors as e}from\"@hookform/resolvers\";import{appendErrors as o}from\"react-hook-form\";import*as n from\"zod/v4/core\";function t(r,e){try{var o=r()}catch(r){return e(r)}return o&&o.then?o.then(void 0,e):o}function s(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(\".\");if(!n[a])if(\"unionErrors\"in t){var u=t.unionErrors[0].errors[0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:s};if(\"unionErrors\"in t&&t.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=o(a,e,n,s,f?[].concat(f,t.message):t.message)}r.shift()}return n}function i(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(\".\");if(!n[a])if(\"invalid_union\"===t.code&&t.errors.length>0){var u=t.errors[0][0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:s};if(\"invalid_union\"===t.code&&t.errors.forEach(function(e){return e.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=o(a,e,n,s,f?[].concat(f,t.message):t.message)}r.shift()}return n}function a(o,a,u){if(void 0===u&&(u={}),function(r){return\"_def\"in r&&\"object\"==typeof r._def&&\"typeName\"in r._def}(o))return function(n,i,c){try{return Promise.resolve(t(function(){return Promise.resolve(o[\"sync\"===u.mode?\"parse\":\"parseAsync\"](n,a)).then(function(e){return c.shouldUseNativeValidation&&r({},c),{errors:{},values:u.raw?Object.assign({},n):e}})},function(r){if(function(r){return Array.isArray(null==r?void 0:r.issues)}(r))return{values:{},errors:e(s(r.errors,!c.shouldUseNativeValidation&&\"all\"===c.criteriaMode),c)};throw r}))}catch(r){return Promise.reject(r)}};if(function(r){return\"_zod\"in r&&\"object\"==typeof r._zod}(o))return function(s,c,f){try{return Promise.resolve(t(function(){return Promise.resolve((\"sync\"===u.mode?n.parse:n.parseAsync)(o,s,a)).then(function(e){return f.shouldUseNativeValidation&&r({},f),{errors:{},values:u.raw?Object.assign({},s):e}})},function(r){if(function(r){return r instanceof n.$ZodError}(r))return{values:{},errors:e(i(r.issues,!f.shouldUseNativeValidation&&\"all\"===f.criteriaMode),f)};throw r}))}catch(r){return Promise.reject(r)}};throw new Error(\"Invalid input: not a Zod schema\")}export{a as zodResolver};\n//# sourceMappingURL=zod.module.js.map\n"],"names":["rhfUseForm","t","r","o","s","e","n","i","a"],"mappings":"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","x_google_ignoreList":[3,4]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/navigationGuard.ts","../src/useFormNavigationGuard.ts","../src/useForm.ts","../../../node_modules/@hookform/resolvers/dist/resolvers.mjs","../../../node_modules/@hookform/resolvers/zod/dist/zod.mjs"],"sourcesContent":["import type { BlockerFunction } from \"@rpcbase/router\"\nimport env from \"@rpcbase/env\"\n\n\nconst isFormNavigationGuardDisabledByEnv = (): boolean => {\n const raw = env.RB_PUBLIC_DISABLE_FORM_GUARD\n\n if (typeof raw !== \"string\") return false\n\n const val = raw.trim().toLowerCase()\n return val === \"1\" || val === \"true\" || val === \"yes\"\n}\n\n\nexport type FormNavigationGuardOptions =\n | false\n | {\n enabled?: boolean\n message?: string\n blockOnSearch?: boolean\n priority?: number\n }\n\nexport type NormalizedFormNavigationGuardOptions = {\n enabled: boolean\n message?: string\n blockOnSearch: boolean\n priority?: number\n}\n\nexport const normalizeFormNavigationGuardOptions = (\n input: FormNavigationGuardOptions | undefined,\n): NormalizedFormNavigationGuardOptions => {\n if (isFormNavigationGuardDisabledByEnv()) {\n return { enabled: false, blockOnSearch: false }\n }\n\n if (input === false) {\n return { enabled: false, blockOnSearch: false }\n }\n\n return {\n enabled: input?.enabled ?? true,\n message: input?.message,\n blockOnSearch: input?.blockOnSearch ?? false,\n priority: input?.priority,\n }\n}\n\nexport const shouldBlockFormNavigation = ({\n args,\n shouldBlockUnload,\n blockOnSearch,\n}: {\n args: Parameters<BlockerFunction>[0]\n shouldBlockUnload: boolean\n blockOnSearch: boolean\n}): boolean => {\n if (!shouldBlockUnload) return false\n if (args.currentLocation.pathname !== args.nextLocation.pathname) return true\n if (blockOnSearch && args.currentLocation.search !== args.nextLocation.search) return true\n return false\n}\n","import { useCallback, useId, useMemo } from \"react\"\nimport type { FieldValues, UseFormReturn } from \"react-hook-form\"\nimport { useFormState } from \"react-hook-form\"\nimport { useRegisterNavigationGuard } from \"@rpcbase/router\"\n\nimport {\n normalizeFormNavigationGuardOptions,\n shouldBlockFormNavigation,\n type FormNavigationGuardOptions,\n} from \"./navigationGuard\"\n\n\nexport const DEFAULT_FORM_NAVIGATION_GUARD_MESSAGE =\n \"You have unsaved changes. Leave without saving?\"\n\nexport const useFormNavigationGuard = <\n TFieldValues extends FieldValues,\n TContext = any,\n TTransformedValues = TFieldValues,\n>(\n form: UseFormReturn<TFieldValues, TContext, TTransformedValues>,\n opts?: FormNavigationGuardOptions,\n): void => {\n const { isDirty, isSubmitting } = useFormState({ control: form.control })\n\n const normalized = normalizeFormNavigationGuardOptions(opts)\n\n const reactId = useId()\n const id = useMemo(() => `rpcbase:form:${reactId}`, [reactId])\n\n const shouldBlockUnload = normalized.enabled && isDirty && !isSubmitting\n\n const shouldBlockNavigation = useCallback(\n (args: Parameters<typeof shouldBlockFormNavigation>[0][\"args\"]) =>\n shouldBlockFormNavigation({\n args,\n shouldBlockUnload,\n blockOnSearch: normalized.blockOnSearch,\n }),\n [normalized.blockOnSearch, shouldBlockUnload],\n )\n\n useRegisterNavigationGuard({\n id,\n enabled: normalized.enabled,\n priority: normalized.priority,\n message: normalized.message ?? DEFAULT_FORM_NAVIGATION_GUARD_MESSAGE,\n blockOnSearch: normalized.blockOnSearch,\n shouldBlockNavigation,\n shouldBlockUnload,\n })\n}\n","import { useForm as rhfUseForm } from \"react-hook-form\"\nimport type { FieldValues, UseFormProps, UseFormReturn } from \"react-hook-form\"\n\nimport { useFormNavigationGuard } from \"./useFormNavigationGuard\"\nimport {\n normalizeFormNavigationGuardOptions,\n type FormNavigationGuardOptions,\n} from \"./navigationGuard\"\n\n\nexport type UseFormPropsWithNavigationGuard<\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n TTransformedValues = TFieldValues,\n> = UseFormProps<TFieldValues, TContext, TTransformedValues> & {\n navigationGuard?: FormNavigationGuardOptions\n}\n\nexport const useForm = <\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n TTransformedValues = TFieldValues,\n>(\n props?: UseFormPropsWithNavigationGuard<TFieldValues, TContext, TTransformedValues>,\n): UseFormReturn<TFieldValues, TContext, TTransformedValues> => {\n const { navigationGuard, ...rhfProps } = props ?? {}\n\n const form = rhfUseForm<TFieldValues, TContext, TTransformedValues>(\n rhfProps as UseFormProps<TFieldValues, TContext, TTransformedValues>,\n )\n\n const normalized = normalizeFormNavigationGuardOptions(navigationGuard)\n useFormNavigationGuard(form, normalized.enabled ? navigationGuard : { enabled: false })\n\n return form\n}\n","import{get as e,set as t}from\"react-hook-form\";const r=(t,r,o)=>{if(t&&\"reportValidity\"in t){const s=e(o,r);t.setCustomValidity(s&&s.message||\"\"),t.reportValidity()}},o=(e,t)=>{for(const o in t.fields){const s=t.fields[o];s&&s.ref&&\"reportValidity\"in s.ref?r(s.ref,o,e):s&&s.refs&&s.refs.forEach(t=>r(t,o,e))}},s=(r,s)=>{s.shouldUseNativeValidation&&o(r,s);const n={};for(const o in r){const f=e(s.fields,o),c=Object.assign(r[o]||{},{ref:f&&f.ref});if(i(s.names||Object.keys(r),o)){const r=Object.assign({},e(n,o));t(r,\"root\",c),t(n,o,r)}else t(n,o,c)}return n},i=(e,t)=>{const r=n(t);return e.some(e=>n(e).match(`^${r}\\\\.\\\\d+`))};function n(e){return e.replace(/\\]|\\[/g,\"\")}export{s as toNestErrors,o as validateFieldsNatively};\n//# sourceMappingURL=resolvers.mjs.map\n","import{validateFieldsNatively as r,toNestErrors as e}from\"@hookform/resolvers\";import{appendErrors as o}from\"react-hook-form\";import*as n from\"zod/v4/core\";function t(r,e){try{var o=r()}catch(r){return e(r)}return o&&o.then?o.then(void 0,e):o}function s(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(\".\");if(!n[a])if(\"unionErrors\"in t){var u=t.unionErrors[0].errors[0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:s};if(\"unionErrors\"in t&&t.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=o(a,e,n,s,f?[].concat(f,t.message):t.message)}r.shift()}return n}function i(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(\".\");if(!n[a])if(\"invalid_union\"===t.code&&t.errors.length>0){var u=t.errors[0][0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:s};if(\"invalid_union\"===t.code&&t.errors.forEach(function(e){return e.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=o(a,e,n,s,f?[].concat(f,t.message):t.message)}r.shift()}return n}function a(o,a,u){if(void 0===u&&(u={}),function(r){return\"_def\"in r&&\"object\"==typeof r._def&&\"typeName\"in r._def}(o))return function(n,i,c){try{return Promise.resolve(t(function(){return Promise.resolve(o[\"sync\"===u.mode?\"parse\":\"parseAsync\"](n,a)).then(function(e){return c.shouldUseNativeValidation&&r({},c),{errors:{},values:u.raw?Object.assign({},n):e}})},function(r){if(function(r){return Array.isArray(null==r?void 0:r.issues)}(r))return{values:{},errors:e(s(r.errors,!c.shouldUseNativeValidation&&\"all\"===c.criteriaMode),c)};throw r}))}catch(r){return Promise.reject(r)}};if(function(r){return\"_zod\"in r&&\"object\"==typeof r._zod}(o))return function(s,c,f){try{return Promise.resolve(t(function(){return Promise.resolve((\"sync\"===u.mode?n.parse:n.parseAsync)(o,s,a)).then(function(e){return f.shouldUseNativeValidation&&r({},f),{errors:{},values:u.raw?Object.assign({},s):e}})},function(r){if(function(r){return r instanceof n.$ZodError}(r))return{values:{},errors:e(i(r.issues,!f.shouldUseNativeValidation&&\"all\"===f.criteriaMode),f)};throw r}))}catch(r){return Promise.reject(r)}};throw new Error(\"Invalid input: not a Zod schema\")}export{a as zodResolver};\n//# sourceMappingURL=zod.module.js.map\n"],"names":["rhfUseForm","t","r","o","s","e","n","i","a"],"mappings":"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","x_google_ignoreList":[3,4]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigationGuard.d.ts","sourceRoot":"","sources":["../src/navigationGuard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"navigationGuard.d.ts","sourceRoot":"","sources":["../src/navigationGuard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AActD,MAAM,MAAM,0BAA0B,GAClC,KAAK,GACL;IACA,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAEH,MAAM,MAAM,oCAAoC,GAAG;IACjD,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,mCAAmC,GAC9C,OAAO,0BAA0B,GAAG,SAAS,KAC5C,oCAeF,CAAA;AAED,eAAO,MAAM,yBAAyB,GAAI,6CAIvC;IACD,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;IACpC,iBAAiB,EAAE,OAAO,CAAA;IAC1B,aAAa,EAAE,OAAO,CAAA;CACvB,KAAG,OAKH,CAAA"}
|