@paragrav/rhf-utils 0.0.135 → 0.0.137

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.
Files changed (163) hide show
  1. package/README.md +90 -65
  2. package/dist/esm/client/config/useRhfUtilsClientConfigContext.mjs +0 -1
  3. package/dist/esm/client/index.mjs +0 -1
  4. package/dist/esm/client/utils.mjs +0 -1
  5. package/dist/esm/client/zod/context/RhfUtilsClientForZodContextProvider.mjs +3 -2
  6. package/dist/esm/client/zod/context/RhfUtilsZodForm.mjs +0 -1
  7. package/dist/esm/client/zod/context/useRhfUtilsClientForZodContext.mjs +0 -1
  8. package/dist/esm/client/zod/context/useRhfUtilsZodForm.mjs +0 -1
  9. package/dist/esm/client/zod/createRhfUtilsClientForZod.mjs +0 -1
  10. package/dist/esm/devtool/LazyDevTool.mjs +0 -1
  11. package/dist/esm/errors/flat/FlatFieldErrorsList.mjs +0 -1
  12. package/dist/esm/errors/flat/context/FlatFieldErrorsContextProvider.mjs +0 -1
  13. package/dist/esm/errors/flat/context/useFlatFieldErrorsContext.mjs +0 -1
  14. package/dist/esm/errors/flat/context/useFlatFieldErrorsContextHasOnlyOrphans.mjs +0 -1
  15. package/dist/esm/errors/flat/context/useFlatFieldErrorsContextOutput.mjs +0 -1
  16. package/dist/esm/errors/flat/filterFlatFieldErrors.mjs +0 -1
  17. package/dist/esm/errors/flat/flattenFieldErrors.mjs +0 -1
  18. package/dist/esm/errors/flat/getFlatFieldErrors.mjs +10 -11
  19. package/dist/esm/errors/getRefdFromFlatFieldErrors.mjs +0 -1
  20. package/dist/esm/errors/isFieldErrorRefd.mjs +0 -1
  21. package/dist/esm/errors/isFlatFieldErrorEntryRefd.mjs +0 -1
  22. package/dist/esm/errors/message/FormErrorMessage.mjs +0 -1
  23. package/dist/esm/errors/message/RhfUtilsFieldErrorMessage.mjs +14 -0
  24. package/dist/esm/errors/nonfield/FormNonFieldErrorMarker.mjs +0 -1
  25. package/dist/esm/errors/nonfield/FormNonFieldErrorMarker.utils.mjs +0 -1
  26. package/dist/esm/errors/nonfield/FormNonFieldErrorMarkerHtmlAttribute.mjs +0 -1
  27. package/dist/esm/errors/nonfield/isNonFieldErrorMarkerInDOM.mjs +0 -1
  28. package/dist/esm/errors/orphan/getIsOrphanFormErrorWithParentElement.mjs +0 -1
  29. package/dist/esm/errors/orphan/getOrphansFromFlatFieldErrors.mjs +0 -1
  30. package/dist/esm/errors/orphan/isOrphanFormError.mjs +3 -4
  31. package/dist/esm/errors/output/consoleErrors.mjs +0 -1
  32. package/dist/esm/errors/root/RootErrorsListFromFlatFieldErrorsContext.mjs +0 -1
  33. package/dist/esm/errors/root/consts.mjs +0 -1
  34. package/dist/esm/errors/root/getRootsFromFlatFieldErrors.mjs +0 -1
  35. package/dist/esm/errors/root/isFlatFieldErrorEntryPathRoot.mjs +0 -1
  36. package/dist/esm/errors/root/isFormErrorPathRoot.mjs +0 -1
  37. package/dist/esm/exports.mjs +32 -37
  38. package/dist/esm/form/Form.mjs +14 -15
  39. package/dist/esm/form/FormWithProviders.mjs +0 -1
  40. package/dist/esm/form/RhfUtilsFormProviders.mjs +0 -1
  41. package/dist/esm/form/_Controller.mjs +0 -1
  42. package/dist/esm/form/context/group/FormGroupContextProvider.mjs +0 -1
  43. package/dist/esm/form/context/group/index.mjs +0 -1
  44. package/dist/esm/form/context/group/useFormGroupChildIsMountedTracker.mjs +0 -1
  45. package/dist/esm/form/context/group/useFormGroupChildIsSubmittingTracker.mjs +0 -1
  46. package/dist/esm/form/context/group/useFormGroupChildTracker.mjs +0 -1
  47. package/dist/esm/form/context/group/useFormGroupIsAnyBusy.mjs +0 -1
  48. package/dist/esm/form/context/group/useFormGroupIsChildBusy.mjs +0 -1
  49. package/dist/esm/form/context/group/useFormGroupIsParentBusy.mjs +0 -1
  50. package/dist/esm/form/context/group/useFormGroupParentTracker.mjs +0 -1
  51. package/dist/esm/form/context/group/useFormOrParentIsBusy.mjs +0 -1
  52. package/dist/esm/form/context/utils/RhfUtilsContextProvider.mjs +15 -14
  53. package/dist/esm/form/context/utils/useRhfUtilsContext.mjs +0 -1
  54. package/dist/esm/form/context/utils/useRhfUtilsContextRequestSubmit.mjs +0 -1
  55. package/dist/esm/form/useFormIsBusy.mjs +0 -1
  56. package/dist/esm/form/useRhfUtilsForm.mjs +0 -1
  57. package/dist/esm/form/utils/getSubmitterButtonData.mjs +0 -1
  58. package/dist/esm/form/utils/useFormRequestSubmit.mjs +9 -6
  59. package/dist/esm/submit/error/FormSubmitError.mjs +0 -1
  60. package/dist/esm/submit/error/setCtxErrorsByFormSubmitFieldErrors.mjs +12 -0
  61. package/dist/esm/submit/useFormOnSubmitted.mjs +0 -1
  62. package/dist/esm/submit/useResetFormOnSubmitted.mjs +0 -1
  63. package/dist/esm/submit/useSubmitFormOnChange.mjs +18 -12
  64. package/dist/esm/utils/PassthroughChildren.mjs +0 -1
  65. package/dist/esm/utils/createContext.mjs +0 -1
  66. package/dist/esm/utils/isEmptyObject.mjs +0 -1
  67. package/dist/esm/utils/useDebouncedOnChangeValue.mjs +26 -0
  68. package/dist/esm/utils/useRefIfValueWasTrue.mjs +0 -1
  69. package/dist/types/client/config/RhfUtilsClientConfig.d.ts +5 -5
  70. package/dist/types/client/zod/context/RhfUtilsClientForZodContextProvider.d.ts +1 -1
  71. package/dist/types/errors/flat/flattenFieldErrors.d.ts +3 -2
  72. package/dist/types/errors/message/{FormErrorMessageByPath.d.ts → RhfUtilsFieldErrorMessage.d.ts} +2 -2
  73. package/dist/types/errors/trpc/getOnSubmitTrpcClientErrorHandler.d.ts +2 -2
  74. package/dist/types/errors/trpc/trpcClientErrorToFormSubmitFieldErrorsSchemaTransformer.d.ts +28 -0
  75. package/dist/types/exports.d.ts +1 -3
  76. package/dist/types/form/RhfUtilsFormOptions.d.ts +7 -3
  77. package/dist/types/form/UseRhfUtilsFormProps.d.ts +1 -1
  78. package/dist/types/form/utils/useFormRequestSubmit.d.ts +5 -0
  79. package/dist/types/submit/error/FormSubmitError.d.ts +3 -3
  80. package/dist/types/submit/error/{FormSubmitErrors.d.ts → FormSubmitFieldErrors.d.ts} +1 -1
  81. package/dist/types/submit/error/setCtxErrorsByFormSubmitFieldErrors.d.ts +10 -0
  82. package/dist/types/submit/useFormOnSubmitSuccessfulAndReset.d.ts +1 -1
  83. package/dist/types/submit/useFormOnSubmitted.d.ts +1 -1
  84. package/dist/types/submit/useSubmitFormOnChange.d.ts +3 -1
  85. package/dist/types/utils/timeoutAsync.d.ts +6 -0
  86. package/dist/types/utils/useDebouncedOnChangeValue.d.ts +14 -0
  87. package/package.json +1 -1
  88. package/dist/esm/client/config/useRhfUtilsClientConfigContext.mjs.map +0 -1
  89. package/dist/esm/client/index.mjs.map +0 -1
  90. package/dist/esm/client/utils.mjs.map +0 -1
  91. package/dist/esm/client/zod/context/RhfUtilsClientForZodContextProvider.mjs.map +0 -1
  92. package/dist/esm/client/zod/context/RhfUtilsZodForm.mjs.map +0 -1
  93. package/dist/esm/client/zod/context/useRhfUtilsClientForZodContext.mjs.map +0 -1
  94. package/dist/esm/client/zod/context/useRhfUtilsZodForm.mjs.map +0 -1
  95. package/dist/esm/client/zod/createRhfUtilsClientForZod.mjs.map +0 -1
  96. package/dist/esm/devtool/LazyDevTool.mjs.map +0 -1
  97. package/dist/esm/errors/flat/FlatFieldErrorsList.mjs.map +0 -1
  98. package/dist/esm/errors/flat/context/FlatFieldErrorsContextProvider.mjs.map +0 -1
  99. package/dist/esm/errors/flat/context/useFlatFieldErrorsContext.mjs.map +0 -1
  100. package/dist/esm/errors/flat/context/useFlatFieldErrorsContextHasOnlyOrphans.mjs.map +0 -1
  101. package/dist/esm/errors/flat/context/useFlatFieldErrorsContextOutput.mjs.map +0 -1
  102. package/dist/esm/errors/flat/filterFlatFieldErrors.mjs.map +0 -1
  103. package/dist/esm/errors/flat/flattenFieldErrors.mjs.map +0 -1
  104. package/dist/esm/errors/flat/getFlatFieldErrors.mjs.map +0 -1
  105. package/dist/esm/errors/getRefdFromFlatFieldErrors.mjs.map +0 -1
  106. package/dist/esm/errors/isFieldErrorRefd.mjs.map +0 -1
  107. package/dist/esm/errors/isFlatFieldErrorEntryRefd.mjs.map +0 -1
  108. package/dist/esm/errors/message/FormErrorMessage.mjs.map +0 -1
  109. package/dist/esm/errors/message/FormErrorMessageByPath.mjs +0 -15
  110. package/dist/esm/errors/message/FormErrorMessageByPath.mjs.map +0 -1
  111. package/dist/esm/errors/nonfield/FormNonFieldErrorMarker.mjs.map +0 -1
  112. package/dist/esm/errors/nonfield/FormNonFieldErrorMarker.utils.mjs.map +0 -1
  113. package/dist/esm/errors/nonfield/FormNonFieldErrorMarkerHtmlAttribute.mjs.map +0 -1
  114. package/dist/esm/errors/nonfield/isNonFieldErrorMarkerInDOM.mjs.map +0 -1
  115. package/dist/esm/errors/orphan/getIsOrphanFormErrorWithParentElement.mjs.map +0 -1
  116. package/dist/esm/errors/orphan/getOrphansFromFlatFieldErrors.mjs.map +0 -1
  117. package/dist/esm/errors/orphan/isOrphanFormError.mjs.map +0 -1
  118. package/dist/esm/errors/output/consoleErrors.mjs.map +0 -1
  119. package/dist/esm/errors/root/RootErrorsListFromFlatFieldErrorsContext.mjs.map +0 -1
  120. package/dist/esm/errors/root/consts.mjs.map +0 -1
  121. package/dist/esm/errors/root/getRootsFromFlatFieldErrors.mjs.map +0 -1
  122. package/dist/esm/errors/root/isFlatFieldErrorEntryPathRoot.mjs.map +0 -1
  123. package/dist/esm/errors/root/isFormErrorPathRoot.mjs.map +0 -1
  124. package/dist/esm/errors/trpc/getOnSubmitTrpcClientErrorHandler.mjs +0 -7
  125. package/dist/esm/errors/trpc/getOnSubmitTrpcClientErrorHandler.mjs.map +0 -1
  126. package/dist/esm/errors/trpc/trpcClientErrorMessageSchema.mjs +0 -11
  127. package/dist/esm/errors/trpc/trpcClientErrorMessageSchema.mjs.map +0 -1
  128. package/dist/esm/errors/trpc/trpcClientErrorToFormSubmitErrorsSchemaTransformer.mjs +0 -35
  129. package/dist/esm/errors/trpc/trpcClientErrorToFormSubmitErrorsSchemaTransformer.mjs.map +0 -1
  130. package/dist/esm/exports.mjs.map +0 -1
  131. package/dist/esm/form/Form.mjs.map +0 -1
  132. package/dist/esm/form/FormWithProviders.mjs.map +0 -1
  133. package/dist/esm/form/RhfUtilsFormProviders.mjs.map +0 -1
  134. package/dist/esm/form/_Controller.mjs.map +0 -1
  135. package/dist/esm/form/context/group/FormGroupContextProvider.mjs.map +0 -1
  136. package/dist/esm/form/context/group/index.mjs.map +0 -1
  137. package/dist/esm/form/context/group/useFormGroupChildIsMountedTracker.mjs.map +0 -1
  138. package/dist/esm/form/context/group/useFormGroupChildIsSubmittingTracker.mjs.map +0 -1
  139. package/dist/esm/form/context/group/useFormGroupChildTracker.mjs.map +0 -1
  140. package/dist/esm/form/context/group/useFormGroupIsAnyBusy.mjs.map +0 -1
  141. package/dist/esm/form/context/group/useFormGroupIsChildBusy.mjs.map +0 -1
  142. package/dist/esm/form/context/group/useFormGroupIsParentBusy.mjs.map +0 -1
  143. package/dist/esm/form/context/group/useFormGroupParentTracker.mjs.map +0 -1
  144. package/dist/esm/form/context/group/useFormOrParentIsBusy.mjs.map +0 -1
  145. package/dist/esm/form/context/utils/RhfUtilsContextProvider.mjs.map +0 -1
  146. package/dist/esm/form/context/utils/useRhfUtilsContext.mjs.map +0 -1
  147. package/dist/esm/form/context/utils/useRhfUtilsContextRequestSubmit.mjs.map +0 -1
  148. package/dist/esm/form/useFormIsBusy.mjs.map +0 -1
  149. package/dist/esm/form/useRhfUtilsForm.mjs.map +0 -1
  150. package/dist/esm/form/utils/getSubmitterButtonData.mjs.map +0 -1
  151. package/dist/esm/form/utils/useFormRequestSubmit.mjs.map +0 -1
  152. package/dist/esm/submit/error/FormSubmitError.mjs.map +0 -1
  153. package/dist/esm/submit/error/setCtxErrorsByFormSubmitErrors.mjs +0 -13
  154. package/dist/esm/submit/error/setCtxErrorsByFormSubmitErrors.mjs.map +0 -1
  155. package/dist/esm/submit/useFormOnSubmitted.mjs.map +0 -1
  156. package/dist/esm/submit/useResetFormOnSubmitted.mjs.map +0 -1
  157. package/dist/esm/submit/useSubmitFormOnChange.mjs.map +0 -1
  158. package/dist/esm/utils/PassthroughChildren.mjs.map +0 -1
  159. package/dist/esm/utils/createContext.mjs.map +0 -1
  160. package/dist/esm/utils/isEmptyObject.mjs.map +0 -1
  161. package/dist/esm/utils/useRefIfValueWasTrue.mjs.map +0 -1
  162. package/dist/types/errors/trpc/trpcClientErrorToFormSubmitErrorsSchemaTransformer.d.ts +0 -28
  163. package/dist/types/submit/error/setCtxErrorsByFormSubmitErrors.d.ts +0 -10
@@ -1 +0,0 @@
1
- {"version":3,"file":"getSubmitterButtonData.mjs","sources":["../../../../src/form/utils/getSubmitterButtonData.ts"],"sourcesContent":["import React from 'react';\n\n/**\n * Get [name, value] tuple of button/input that submitted form.\n * Useful when determining user intent\n */\nconst getSubmitterButtonData = (\n event: React.BaseSyntheticEvent,\n): [name: string, value: string] | undefined => {\n if (!(event.nativeEvent instanceof SubmitEvent)) return; // not submit\n if (\n !(event.nativeEvent.submitter instanceof HTMLButtonElement) && // not button\n !(event.nativeEvent.submitter instanceof HTMLInputElement) // not input\n )\n return;\n\n if (!event.nativeEvent.submitter.name) return; // no name on button\n\n return [\n event.nativeEvent.submitter.name,\n event.nativeEvent.submitter.value,\n ] as const;\n};\n\nexport default getSubmitterButtonData;\n"],"names":["getSubmitterButtonData","event","getSubmitterButtonData$1"],"mappings":";AAMA,MAAMA,IAAyB,CAC7BC,MAC8C;AAC1C,MAAEA,EAAM,uBAAuB,eAEjC,IAAEA,EAAM,YAAY,qBAAqB;AAAA,EACzC,EAAEA,EAAM,YAAY,qBAAqB,sBAItCA,EAAM,YAAY,UAAU;AAE1B,WAAA;AAAA,MACLA,EAAM,YAAY,UAAU;AAAA,MAC5BA,EAAM,YAAY,UAAU;AAAA,IAAA;AAEhC,GAEAC,IAAeF;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFormRequestSubmit.mjs","sources":["../../../../src/form/utils/useFormRequestSubmit.ts"],"sourcesContent":["/**\n * Get callback to trigger submit manually on form.\n * @link https://developer.mozilla.org/docs/Web/API/HTMLFormElement/requestSubmit\n */\nconst useFormRequestSubmit =\n (\n ref: React.RefObject<HTMLFormElement>, // limit scope to avoid mistakes (allows for `{[string]: any}`)\n ): HTMLFormElement['requestSubmit'] =>\n (submitter) => {\n // typeguard (should never happen at runtime when callback is called)\n if (!ref.current) throw new Error();\n\n requestSubmitByForm(ref.current, submitter);\n };\n\nexport default useFormRequestSubmit;\n\n//\n\nconst requestSubmitByForm = (\n form: Pick<HTMLFormElement, 'requestSubmit'>, // narrow to avoid `{[string]: any}` type\n submitter?: HTMLElement | null,\n) => {\n form.requestSubmit(submitter);\n};\n"],"names":["useFormRequestSubmit","ref","submitter","requestSubmitByForm","form"],"mappings":"AAIA,MAAMA,IACJ,CACEC,MAEF,CAACC,MAAc;AAEb,MAAI,CAACD,EAAI,QAAS,OAAM,IAAI,MAAM;AAEd,EAAAE,EAAAF,EAAI,SAASC,CAAS;AAC5C,GAMIC,IAAsB,CAC1BC,GACAF,MACG;AACH,EAAAE,EAAK,cAAcF,CAAS;AAC9B;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormSubmitError.mjs","sources":["../../../../src/submit/error/FormSubmitError.ts"],"sourcesContent":["import type { SafeFieldValues } from '@/form/SafeFieldValues';\n\nimport type { FormSubmitErrors } from './FormSubmitErrors';\n\nexport class FormSubmitError<\n TFieldValues extends SafeFieldValues = SafeFieldValues,\n> extends Error {\n constructor(\n public errors: FormSubmitErrors<TFieldValues>,\n message?: string, // error message\n // options?: ErrorOptions, // requires es2022\n ) {\n super(message);\n }\n}\n"],"names":["FormSubmitError","errors","message"],"mappings":"AAIO,MAAMA,UAEH,MAAM;AAAA,EACd,YACSC,GACPC,GAEA;AACA,UAAMA,CAAO,GAJN,KAAA,SAAAD;AAAA,EAKT;AACF;"}
@@ -1,13 +0,0 @@
1
- const s = (r, t) => {
2
- Object.entries(t).forEach(([o, e]) => {
3
- r.setError(o, {
4
- type: "FormSubmitError",
5
- // default
6
- ...e
7
- });
8
- });
9
- };
10
- export {
11
- s as default
12
- };
13
- //# sourceMappingURL=setCtxErrorsByFormSubmitErrors.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setCtxErrorsByFormSubmitErrors.mjs","sources":["../../../../src/submit/error/setCtxErrorsByFormSubmitErrors.ts"],"sourcesContent":["import type { FieldPath, UseFormReturn } from 'react-hook-form';\n\nimport type { SafeFieldValues } from '@/form/SafeFieldValues';\n\nimport type { FormSubmitErrors } from './FormSubmitErrors';\n\n/**\n * Handle thrown {@link FormSubmitError}.\n * Add key/values as name/message to RHF context errors.\n */\nconst setCtxErrorsByFormSubmitErrors = <\n TFieldValues extends SafeFieldValues,\n TTransformedValues extends SafeFieldValues,\n>(\n ctx: UseFormReturn<TFieldValues, unknown, TTransformedValues>,\n errors: FormSubmitErrors,\n) => {\n // loop through error object and set errors in rhf context\n Object.entries(errors).forEach(([name, fieldError]) => {\n ctx.setError(name as FieldPath<TFieldValues>, {\n type: 'FormSubmitError', // default\n ...fieldError,\n });\n });\n};\n\nexport default setCtxErrorsByFormSubmitErrors;\n"],"names":["setCtxErrorsByFormSubmitErrors","ctx","errors","name","fieldError"],"mappings":"AAUM,MAAAA,IAAiC,CAIrCC,GACAC,MACG;AAEI,SAAA,QAAQA,CAAM,EAAE,QAAQ,CAAC,CAACC,GAAMC,CAAU,MAAM;AACrD,IAAAH,EAAI,SAASE,GAAiC;AAAA,MAC5C,MAAM;AAAA;AAAA,MACN,GAAGC;AAAA,IAAA,CACJ;AAAA,EAAA,CACF;AACH;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFormOnSubmitted.mjs","sources":["../../../src/submit/useFormOnSubmitted.ts"],"sourcesContent":["import type { MaybePromise } from '@trpc/server/unstable-core-do-not-import';\nimport React from 'react';\nimport { useFormState } from 'react-hook-form';\n\nimport useRefIfValueWasTrue from '@/utils/useRefIfValueWasTrue';\n\nconst useFormOnSubmitted = (\n callback?: (success: boolean) => MaybePromise<unknown>,\n options?: { successful?: boolean },\n) => {\n const { isSubmitSuccessful, isSubmitting } = useFormState();\n\n const [wasSubmitting, resetWasSubmitting] =\n useRefIfValueWasTrue(isSubmitting);\n\n // on successful submit, call callback\n React.useEffect(() => {\n if (!callback) return;\n\n // if currently submitting, ignore\n if (isSubmitting) return;\n\n // wait for submit to finish\n if (!wasSubmitting) return;\n\n // always reset to wait for next submit\n resetWasSubmitting();\n\n // check success against options passed\n if (\n options?.successful === undefined || // if option not specified, call on any submit\n isSubmitSuccessful === options.successful // otherwise, call only if matches\n ) {\n callback(isSubmitSuccessful);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps -- only track isSubmitting -- so success is checked each time\n }, [isSubmitting]);\n};\n\nexport default useFormOnSubmitted;\n"],"names":["useFormOnSubmitted","callback","options","isSubmitSuccessful","isSubmitting","useFormState","wasSubmitting","resetWasSubmitting","useRefIfValueWasTrue","React"],"mappings":";;;AAMM,MAAAA,IAAqB,CACzBC,GACAC,MACG;AACH,QAAM,EAAE,oBAAAC,GAAoB,cAAAC,EAAa,IAAIC,EAAa,GAEpD,CAACC,GAAeC,CAAkB,IACtCC,EAAqBJ,CAAY;AAGnC,EAAAK,EAAM,UAAU,MAAM;AACpB,IAAKR,MAGDG,KAGCE,MAGcC,KAOjBN,EAASE,CAAkB;AAAA,EAC7B,GAGC,CAACC,CAAY,CAAC;AACnB;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useResetFormOnSubmitted.mjs","sources":["../../../src/submit/useResetFormOnSubmitted.ts"],"sourcesContent":["import { useFormContext } from 'react-hook-form';\n\nimport useFormOnSubmitted from './useFormOnSubmitted';\n\n/**\n * Configuration options for {@link useResetFormOnSubmitted}.\n */\nexport type UseResetFormOnSubmittedOptions =\n // disabled\n | undefined\n\n // enabled\n | {\n /**\n * Reset values on successful submit.\n * - `defaults`: reset current values to defaults\n * - `current`: reset defaults to current values\n */\n success?: { values: 'defaults' | 'current' };\n\n /**\n * Reset values to defaults on submit error.\n */\n error?: { values: 'defaults' };\n };\n\n/**\n * Control resetting of values and (some) state (e.g., `isDirty`) after form submitted.\n *\n * `isDirty` and other state is reset, but submit-related state is preserved, as well as errors.\n *\n * Use cases:\n * - on success:\n * - `defaults`: reset current values to defaults (e.g., clear form)\n * - `current`: reset defaults to current values (e.g., keep values)\n * - on error:\n * - reset current values to default values (e.g., submitOnChange reset)\n *\n * See `Rules` section: https://react-hook-form.com/api/useform/reset/\n * Specifically: \"- It's recommended to reset inside useEffect after submission.\"\n */\nconst useResetFormOnSubmitted = (options: UseResetFormOnSubmittedOptions) => {\n const { getValues, reset } = useFormContext();\n\n useFormOnSubmitted((success) => {\n if (!options) return;\n\n const whichValues = options[success ? 'success' : 'error']?.values;\n\n if (!whichValues) return;\n\n const keepValues = whichValues === 'current';\n\n const values = keepValues\n ? getValues() // current values\n : undefined; // default values\n\n reset(values, {\n // keep submit stuff for tracking relevant state (e.g., `useFormOnSubmitSuccessful`)\n keepIsSubmitSuccessful: true,\n keepIsSubmitted: true,\n keepSubmitCount: true,\n\n /**\n * This is necessary when setting default values to current values (lest form stop updating).\n *\n * Technically, we are keeping values and resetting default values to same values.\n *\n * Steps to repro:\n * - RhfUtilsClientConfig with resetOnSubmitted set to success values to current\n * - remove `keepValues` prop from reset\n * - create valid form, submit\n * - form values should be unchanged\n * - unexpectedly: can no longer type into input\n */\n keepValues,\n\n // keep errors in the case of unsuccessful submit\n keepErrors: true,\n });\n });\n};\n\nexport default useResetFormOnSubmitted;\n"],"names":["useResetFormOnSubmitted","options","getValues","reset","useFormContext","useFormOnSubmitted","success","whichValues","_a","keepValues","values"],"mappings":";;AAyCM,MAAAA,IAA0B,CAACC,MAA4C;AAC3E,QAAM,EAAE,WAAAC,GAAW,OAAAC,EAAM,IAAIC,EAAe;AAE5C,EAAAC,EAAmB,CAACC,MAAY;;AAC9B,QAAI,CAACL,EAAS;AAEd,UAAMM,KAAcC,IAAAP,EAAQK,IAAU,YAAY,OAAO,MAArC,gBAAAE,EAAwC;AAE5D,QAAI,CAACD,EAAa;AAElB,UAAME,IAAaF,MAAgB,WAE7BG,IAASD,IACXP,EACA,IAAA;AAEJ,IAAAC,EAAMO,GAAQ;AAAA;AAAA,MAEZ,wBAAwB;AAAA,MACxB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAcjB,YAAAD;AAAA;AAAA,MAGA,YAAY;AAAA,IAAA,CACb;AAAA,EAAA,CACF;AACH;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSubmitFormOnChange.mjs","sources":["../../../src/submit/useSubmitFormOnChange.ts"],"sourcesContent":["import React from 'react';\n\nimport useFormRequestSubmit from '@/form/utils/useFormRequestSubmit';\n\nconst useSubmitFormOnChange = (\n formRef: React.RefObject<HTMLFormElement>,\n options?: {\n /** Disable-able so that default behavior is enabled for sake of simplicity of usage. */\n disabled?: boolean;\n },\n) => {\n const enabled = !options?.disabled;\n\n const requestSubmit = useFormRequestSubmit(formRef);\n\n // on mount, listen for event\n React.useEffect(() => {\n if (!enabled) return;\n\n const form = formRef.current;\n\n if (!form) throw new Error();\n\n const onChange = () => {\n requestSubmit();\n };\n\n form.addEventListener('change', onChange);\n\n return () => {\n form.removeEventListener('change', onChange);\n };\n }, []); // eslint-disable-line react-hooks/exhaustive-deps -- on mount\n};\n\nexport default useSubmitFormOnChange;\n"],"names":["useSubmitFormOnChange","formRef","options","enabled","requestSubmit","useFormRequestSubmit","React","form","onChange"],"mappings":";;AAIM,MAAAA,IAAwB,CAC5BC,GACAC,MAIG;AACG,QAAAC,IAAU,EAACD,KAAA,QAAAA,EAAS,WAEpBE,IAAgBC,EAAqBJ,CAAO;AAGlD,EAAAK,EAAM,UAAU,MAAM;AACpB,QAAI,CAACH,EAAS;AAEd,UAAMI,IAAON,EAAQ;AAErB,QAAI,CAACM,EAAY,OAAA,IAAI;AAErB,UAAMC,IAAW,MAAM;AACP,MAAAJ;IAAA;AAGX,WAAAG,EAAA,iBAAiB,UAAUC,CAAQ,GAEjC,MAAM;AACN,MAAAD,EAAA,oBAAoB,UAAUC,CAAQ;AAAA,IAAA;AAAA,EAE/C,GAAG,CAAE,CAAA;AACP;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PassthroughChildren.mjs","sources":["../../../src/utils/PassthroughChildren.tsx"],"sourcesContent":["/**\n * Component for simply passing through children.\n *\n * (Useful for conditional wrapping of children.)\n */\nconst PassthroughChildren: React.FC<React.PropsWithChildren> = ({\n children,\n}) => <>{children}</>;\n\nexport default PassthroughChildren;\n"],"names":["PassthroughChildren","children"],"mappings":";AAKA,MAAMA,IAAyD,CAAC;AAAA,EAC9D,UAAAC;AACF,6BAAS,UAAAA,EAAS,CAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createContext.mjs","sources":["../../../src/utils/createContext.ts"],"sourcesContent":["import React from 'react';\n\n/**\n * Create a strictly-typed context that throws error if no provider is found.\n * @returns A tuple with a function to get the context and the context provider.\n */\nfunction createContext<T = unknown>() {\n const context = React.createContext<T | undefined>(undefined);\n\n const useMaybe = () => React.useContext(context);\n\n const useRequired = () => {\n const c = useMaybe();\n\n // type guard\n if (c === undefined) throw new Error();\n\n return c;\n };\n\n return {\n Provider: context.Provider,\n useMaybe,\n useRequired,\n } as const;\n}\n\nexport default createContext;\n"],"names":["createContext","context","React","useMaybe","useRequired","c"],"mappings":";AAMA,SAASA,IAA6B;AAC9B,QAAAC,IAAUC,EAAM,cAA6B,MAAS,GAEtDC,IAAW,MAAMD,EAAM,WAAWD,CAAO,GAEzCG,IAAc,MAAM;AACxB,UAAMC,IAAIF;AAGV,QAAIE,MAAM,OAAiB,OAAA,IAAI,MAAM;AAE9B,WAAAA;AAAA,EAAA;AAGF,SAAA;AAAA,IACL,UAAUJ,EAAQ;AAAA,IAClB,UAAAE;AAAA,IACA,aAAAC;AAAA,EAAA;AAEJ;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"isEmptyObject.mjs","sources":["../../../src/utils/isEmptyObject.ts"],"sourcesContent":["const isEmptyObject = (obj: Record<string, unknown>) =>\n Object.keys(obj).length === 0;\n\nexport default isEmptyObject;\n"],"names":["isEmptyObject","obj"],"mappings":"AAAA,MAAMA,IAAgB,CAACC,MACrB,OAAO,KAAKA,CAAG,EAAE,WAAW;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRefIfValueWasTrue.mjs","sources":["../../../src/utils/useRefIfValueWasTrue.ts"],"sourcesContent":["import React from 'react';\n\nconst useRefIfValueWasTrue = (value: boolean) => {\n const hasBooleanChanged = React.useRef(false);\n\n // when value is true, set ref to true\n React.useEffect(() => {\n if (!value) return;\n\n hasBooleanChanged.current = true;\n }, [value]);\n\n const reset = () => {\n hasBooleanChanged.current = false;\n };\n\n return [hasBooleanChanged.current, reset] as const;\n};\n\nexport default useRefIfValueWasTrue;\n"],"names":["useRefIfValueWasTrue","value","hasBooleanChanged","React","reset"],"mappings":";AAEM,MAAAA,IAAuB,CAACC,MAAmB;AACzC,QAAAC,IAAoBC,EAAM,OAAO,EAAK;AAG5C,EAAAA,EAAM,UAAU,MAAM;AACpB,IAAKF,MAELC,EAAkB,UAAU;AAAA,EAAA,GAC3B,CAACD,CAAK,CAAC;AAEV,QAAMG,IAAQ,MAAM;AAClB,IAAAF,EAAkB,UAAU;AAAA,EAAA;AAGvB,SAAA,CAACA,EAAkB,SAASE,CAAK;AAC1C;"}
@@ -1,28 +0,0 @@
1
- import { TRPCClientErrorLike } from '@trpc/client';
2
- import { AnyRouter } from '@trpc/server';
3
- import { z } from 'zod';
4
- import { FormSubmitErrors } from '../../submit/error/FormSubmitErrors';
5
-
6
- /**
7
- * Schema that transforms {@link TRPCClientError} to RHF {@link FormSubmitErrors}.
8
- */
9
- declare const trpcClientErrorToFormSubmitErrorsSchemaTransformer: z.ZodEffects<z.ZodEffects<z.ZodPipeline<z.ZodEffects<z.ZodEffects<z.ZodType<TRPCClientErrorLike<AnyRouter>, z.ZodTypeDef, TRPCClientErrorLike<AnyRouter>>, string, TRPCClientErrorLike<AnyRouter>>, unknown, TRPCClientErrorLike<AnyRouter>>, z.ZodArray<z.ZodObject<{
10
- validation: z.ZodString;
11
- code: z.ZodString;
12
- message: z.ZodString;
13
- path: z.ZodArray<z.ZodString, "many">;
14
- }, "strip", z.ZodTypeAny, {
15
- message: string;
16
- code: string;
17
- path: string[];
18
- validation: string;
19
- }, {
20
- message: string;
21
- code: string;
22
- path: string[];
23
- validation: string;
24
- }>, "many">>, (readonly [string, {
25
- type: string;
26
- message: string;
27
- }])[], TRPCClientErrorLike<AnyRouter>>, FormSubmitErrors, TRPCClientErrorLike<AnyRouter>>;
28
- export default trpcClientErrorToFormSubmitErrorsSchemaTransformer;
@@ -1,10 +0,0 @@
1
- import { UseFormReturn } from 'react-hook-form';
2
- import { SafeFieldValues } from '../../form/SafeFieldValues';
3
- import { FormSubmitErrors } from './FormSubmitErrors';
4
-
5
- /**
6
- * Handle thrown {@link FormSubmitError}.
7
- * Add key/values as name/message to RHF context errors.
8
- */
9
- declare const setCtxErrorsByFormSubmitErrors: <TFieldValues extends SafeFieldValues, TTransformedValues extends SafeFieldValues>(ctx: UseFormReturn<TFieldValues, unknown, TTransformedValues>, errors: FormSubmitErrors) => void;
10
- export default setCtxErrorsByFormSubmitErrors;