@paragrav/rhf-utils 0.0.135 → 0.0.136

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 (145) hide show
  1. package/README.md +7 -3
  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 +0 -1
  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 +0 -1
  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/FormErrorMessageByPath.mjs +0 -1
  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 +0 -1
  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/errors/trpc/getOnSubmitTrpcClientErrorHandler.mjs +0 -1
  38. package/dist/esm/errors/trpc/trpcClientErrorMessageSchema.mjs +0 -1
  39. package/dist/esm/errors/trpc/trpcClientErrorToFormSubmitErrorsSchemaTransformer.mjs +0 -1
  40. package/dist/esm/exports.mjs +0 -1
  41. package/dist/esm/form/Form.mjs +0 -1
  42. package/dist/esm/form/FormWithProviders.mjs +0 -1
  43. package/dist/esm/form/RhfUtilsFormProviders.mjs +0 -1
  44. package/dist/esm/form/_Controller.mjs +0 -1
  45. package/dist/esm/form/context/group/FormGroupContextProvider.mjs +0 -1
  46. package/dist/esm/form/context/group/index.mjs +0 -1
  47. package/dist/esm/form/context/group/useFormGroupChildIsMountedTracker.mjs +0 -1
  48. package/dist/esm/form/context/group/useFormGroupChildIsSubmittingTracker.mjs +0 -1
  49. package/dist/esm/form/context/group/useFormGroupChildTracker.mjs +0 -1
  50. package/dist/esm/form/context/group/useFormGroupIsAnyBusy.mjs +0 -1
  51. package/dist/esm/form/context/group/useFormGroupIsChildBusy.mjs +0 -1
  52. package/dist/esm/form/context/group/useFormGroupIsParentBusy.mjs +0 -1
  53. package/dist/esm/form/context/group/useFormGroupParentTracker.mjs +0 -1
  54. package/dist/esm/form/context/group/useFormOrParentIsBusy.mjs +0 -1
  55. package/dist/esm/form/context/utils/RhfUtilsContextProvider.mjs +13 -12
  56. package/dist/esm/form/context/utils/useRhfUtilsContext.mjs +0 -1
  57. package/dist/esm/form/context/utils/useRhfUtilsContextRequestSubmit.mjs +0 -1
  58. package/dist/esm/form/useFormIsBusy.mjs +0 -1
  59. package/dist/esm/form/useRhfUtilsForm.mjs +0 -1
  60. package/dist/esm/form/utils/getSubmitterButtonData.mjs +0 -1
  61. package/dist/esm/form/utils/useFormRequestSubmit.mjs +9 -6
  62. package/dist/esm/submit/error/FormSubmitError.mjs +0 -1
  63. package/dist/esm/submit/error/setCtxErrorsByFormSubmitErrors.mjs +0 -1
  64. package/dist/esm/submit/useFormOnSubmitted.mjs +0 -1
  65. package/dist/esm/submit/useResetFormOnSubmitted.mjs +0 -1
  66. package/dist/esm/submit/useSubmitFormOnChange.mjs +18 -12
  67. package/dist/esm/utils/PassthroughChildren.mjs +0 -1
  68. package/dist/esm/utils/createContext.mjs +0 -1
  69. package/dist/esm/utils/isEmptyObject.mjs +0 -1
  70. package/dist/esm/utils/useDebouncedOnChangeValue.mjs +26 -0
  71. package/dist/esm/utils/useRefIfValueWasTrue.mjs +0 -1
  72. package/dist/types/form/RhfUtilsFormOptions.d.ts +6 -2
  73. package/dist/types/form/utils/useFormRequestSubmit.d.ts +5 -0
  74. package/dist/types/submit/useSubmitFormOnChange.d.ts +3 -1
  75. package/dist/types/utils/useDebouncedOnChangeValue.d.ts +14 -0
  76. package/package.json +1 -1
  77. package/dist/esm/client/config/useRhfUtilsClientConfigContext.mjs.map +0 -1
  78. package/dist/esm/client/index.mjs.map +0 -1
  79. package/dist/esm/client/utils.mjs.map +0 -1
  80. package/dist/esm/client/zod/context/RhfUtilsClientForZodContextProvider.mjs.map +0 -1
  81. package/dist/esm/client/zod/context/RhfUtilsZodForm.mjs.map +0 -1
  82. package/dist/esm/client/zod/context/useRhfUtilsClientForZodContext.mjs.map +0 -1
  83. package/dist/esm/client/zod/context/useRhfUtilsZodForm.mjs.map +0 -1
  84. package/dist/esm/client/zod/createRhfUtilsClientForZod.mjs.map +0 -1
  85. package/dist/esm/devtool/LazyDevTool.mjs.map +0 -1
  86. package/dist/esm/errors/flat/FlatFieldErrorsList.mjs.map +0 -1
  87. package/dist/esm/errors/flat/context/FlatFieldErrorsContextProvider.mjs.map +0 -1
  88. package/dist/esm/errors/flat/context/useFlatFieldErrorsContext.mjs.map +0 -1
  89. package/dist/esm/errors/flat/context/useFlatFieldErrorsContextHasOnlyOrphans.mjs.map +0 -1
  90. package/dist/esm/errors/flat/context/useFlatFieldErrorsContextOutput.mjs.map +0 -1
  91. package/dist/esm/errors/flat/filterFlatFieldErrors.mjs.map +0 -1
  92. package/dist/esm/errors/flat/flattenFieldErrors.mjs.map +0 -1
  93. package/dist/esm/errors/flat/getFlatFieldErrors.mjs.map +0 -1
  94. package/dist/esm/errors/getRefdFromFlatFieldErrors.mjs.map +0 -1
  95. package/dist/esm/errors/isFieldErrorRefd.mjs.map +0 -1
  96. package/dist/esm/errors/isFlatFieldErrorEntryRefd.mjs.map +0 -1
  97. package/dist/esm/errors/message/FormErrorMessage.mjs.map +0 -1
  98. package/dist/esm/errors/message/FormErrorMessageByPath.mjs.map +0 -1
  99. package/dist/esm/errors/nonfield/FormNonFieldErrorMarker.mjs.map +0 -1
  100. package/dist/esm/errors/nonfield/FormNonFieldErrorMarker.utils.mjs.map +0 -1
  101. package/dist/esm/errors/nonfield/FormNonFieldErrorMarkerHtmlAttribute.mjs.map +0 -1
  102. package/dist/esm/errors/nonfield/isNonFieldErrorMarkerInDOM.mjs.map +0 -1
  103. package/dist/esm/errors/orphan/getIsOrphanFormErrorWithParentElement.mjs.map +0 -1
  104. package/dist/esm/errors/orphan/getOrphansFromFlatFieldErrors.mjs.map +0 -1
  105. package/dist/esm/errors/orphan/isOrphanFormError.mjs.map +0 -1
  106. package/dist/esm/errors/output/consoleErrors.mjs.map +0 -1
  107. package/dist/esm/errors/root/RootErrorsListFromFlatFieldErrorsContext.mjs.map +0 -1
  108. package/dist/esm/errors/root/consts.mjs.map +0 -1
  109. package/dist/esm/errors/root/getRootsFromFlatFieldErrors.mjs.map +0 -1
  110. package/dist/esm/errors/root/isFlatFieldErrorEntryPathRoot.mjs.map +0 -1
  111. package/dist/esm/errors/root/isFormErrorPathRoot.mjs.map +0 -1
  112. package/dist/esm/errors/trpc/getOnSubmitTrpcClientErrorHandler.mjs.map +0 -1
  113. package/dist/esm/errors/trpc/trpcClientErrorMessageSchema.mjs.map +0 -1
  114. package/dist/esm/errors/trpc/trpcClientErrorToFormSubmitErrorsSchemaTransformer.mjs.map +0 -1
  115. package/dist/esm/exports.mjs.map +0 -1
  116. package/dist/esm/form/Form.mjs.map +0 -1
  117. package/dist/esm/form/FormWithProviders.mjs.map +0 -1
  118. package/dist/esm/form/RhfUtilsFormProviders.mjs.map +0 -1
  119. package/dist/esm/form/_Controller.mjs.map +0 -1
  120. package/dist/esm/form/context/group/FormGroupContextProvider.mjs.map +0 -1
  121. package/dist/esm/form/context/group/index.mjs.map +0 -1
  122. package/dist/esm/form/context/group/useFormGroupChildIsMountedTracker.mjs.map +0 -1
  123. package/dist/esm/form/context/group/useFormGroupChildIsSubmittingTracker.mjs.map +0 -1
  124. package/dist/esm/form/context/group/useFormGroupChildTracker.mjs.map +0 -1
  125. package/dist/esm/form/context/group/useFormGroupIsAnyBusy.mjs.map +0 -1
  126. package/dist/esm/form/context/group/useFormGroupIsChildBusy.mjs.map +0 -1
  127. package/dist/esm/form/context/group/useFormGroupIsParentBusy.mjs.map +0 -1
  128. package/dist/esm/form/context/group/useFormGroupParentTracker.mjs.map +0 -1
  129. package/dist/esm/form/context/group/useFormOrParentIsBusy.mjs.map +0 -1
  130. package/dist/esm/form/context/utils/RhfUtilsContextProvider.mjs.map +0 -1
  131. package/dist/esm/form/context/utils/useRhfUtilsContext.mjs.map +0 -1
  132. package/dist/esm/form/context/utils/useRhfUtilsContextRequestSubmit.mjs.map +0 -1
  133. package/dist/esm/form/useFormIsBusy.mjs.map +0 -1
  134. package/dist/esm/form/useRhfUtilsForm.mjs.map +0 -1
  135. package/dist/esm/form/utils/getSubmitterButtonData.mjs.map +0 -1
  136. package/dist/esm/form/utils/useFormRequestSubmit.mjs.map +0 -1
  137. package/dist/esm/submit/error/FormSubmitError.mjs.map +0 -1
  138. package/dist/esm/submit/error/setCtxErrorsByFormSubmitErrors.mjs.map +0 -1
  139. package/dist/esm/submit/useFormOnSubmitted.mjs.map +0 -1
  140. package/dist/esm/submit/useResetFormOnSubmitted.mjs.map +0 -1
  141. package/dist/esm/submit/useSubmitFormOnChange.mjs.map +0 -1
  142. package/dist/esm/utils/PassthroughChildren.mjs.map +0 -1
  143. package/dist/esm/utils/createContext.mjs.map +0 -1
  144. package/dist/esm/utils/isEmptyObject.mjs.map +0 -1
  145. package/dist/esm/utils/useRefIfValueWasTrue.mjs.map +0 -1
package/README.md CHANGED
@@ -8,7 +8,7 @@ If you have multiple forms and would like a more declarative API to manage their
8
8
 
9
9
  ## Features
10
10
 
11
- - built with and for [TypeScript](https://www.typescriptlang.org/)
11
+ - [TypeScript](https://www.typescriptlang.org/)-first
12
12
  - global configuration, such as:
13
13
  - injecting your own hooks and UI (`FormChildrenWrapper`)
14
14
  - server error transformation (`onSubmitErrorUnknown`)
@@ -275,8 +275,12 @@ type RhfUtilsFormOptions = {
275
275
  /** Stop propagation of submit event. */
276
276
  stopSubmitPropagation?: boolean;
277
277
 
278
- /** Request submit via listener on form change. */
279
- submitOnChange?: boolean;
278
+ /**
279
+ * Request submit via listener on form change.
280
+ * - `true`: no debounce
281
+ * - number: milliseconds to debounce
282
+ */
283
+ submitOnChange?: boolean | number;
280
284
 
281
285
  /**
282
286
  * Reset form values and state (e.g., isDirty, etc.) after submit -- on success and/or error.
@@ -7,4 +7,3 @@ export {
7
7
  o as _RhfUtilsClientConfigContextProvider,
8
8
  i as default
9
9
  };
10
- //# sourceMappingURL=useRhfUtilsClientConfigContext.mjs.map
@@ -47,4 +47,3 @@ const c = (r) => (o) => {
47
47
  export {
48
48
  c as createRhfUtilsClient
49
49
  };
50
- //# sourceMappingURL=index.mjs.map
@@ -36,4 +36,3 @@ const u = (n, ...r) => (
36
36
  export {
37
37
  u as mergeRhfUtilsClientConfigDefaultsWithUseRhfUtilsFormProps
38
38
  };
39
- //# sourceMappingURL=utils.mjs.map
@@ -13,4 +13,3 @@ const d = ({
13
13
  export {
14
14
  p as default
15
15
  };
16
- //# sourceMappingURL=RhfUtilsClientForZodContextProvider.mjs.map
@@ -10,4 +10,3 @@ function m({
10
10
  export {
11
11
  m as default
12
12
  };
13
- //# sourceMappingURL=RhfUtilsZodForm.mjs.map
@@ -7,4 +7,3 @@ export {
7
7
  o as _RhfUtilsClientForZodContextProvider,
8
8
  r as default
9
9
  };
10
- //# sourceMappingURL=useRhfUtilsClientForZodContext.mjs.map
@@ -3,4 +3,3 @@ const e = (o, t) => s().useForm(o, t), f = e;
3
3
  export {
4
4
  f as default
5
5
  };
6
- //# sourceMappingURL=useRhfUtilsZodForm.mjs.map
@@ -4,4 +4,3 @@ const i = e(t);
4
4
  export {
5
5
  i as default
6
6
  };
7
- //# sourceMappingURL=createRhfUtilsClientForZod.mjs.map
@@ -13,4 +13,3 @@ const a = e.lazy(
13
13
  export {
14
14
  u as default
15
15
  };
16
- //# sourceMappingURL=LazyDevTool.mjs.map
@@ -15,4 +15,3 @@ const o = ({ errors: e }) => {
15
15
  export {
16
16
  o as default
17
17
  };
18
- //# sourceMappingURL=FlatFieldErrorsList.mjs.map
@@ -25,4 +25,3 @@ const C = ({
25
25
  export {
26
26
  C as default
27
27
  };
28
- //# sourceMappingURL=FlatFieldErrorsContextProvider.mjs.map
@@ -7,4 +7,3 @@ export {
7
7
  o as _FormErrorsFlatContextProvider,
8
8
  s as default
9
9
  };
10
- //# sourceMappingURL=useFlatFieldErrorsContext.mjs.map
@@ -7,4 +7,3 @@ const t = () => {
7
7
  export {
8
8
  l as default
9
9
  };
10
- //# sourceMappingURL=useFlatFieldErrorsContextHasOnlyOrphans.mjs.map
@@ -22,4 +22,3 @@ const C = (r) => {
22
22
  export {
23
23
  C as default
24
24
  };
25
- //# sourceMappingURL=useFlatFieldErrorsContextOutput.mjs.map
@@ -8,4 +8,3 @@ const r = (e) => (t) => (
8
8
  export {
9
9
  r as default
10
10
  };
11
- //# sourceMappingURL=filterFlatFieldErrors.mjs.map
@@ -3,4 +3,3 @@ const o = (t) => r(t);
3
3
  export {
4
4
  o as default
5
5
  };
6
- //# sourceMappingURL=flattenFieldErrors.mjs.map
@@ -22,4 +22,3 @@ export {
22
22
  u as default,
23
23
  d as regexMaybeFieldErrorLeafNodeSuffix
24
24
  };
25
- //# sourceMappingURL=getFlatFieldErrors.mjs.map
@@ -6,4 +6,3 @@ const l = r(
6
6
  export {
7
7
  l as default
8
8
  };
9
- //# sourceMappingURL=getRefdFromFlatFieldErrors.mjs.map
@@ -2,4 +2,3 @@ const r = (e) => !!e.ref;
2
2
  export {
3
3
  r as default
4
4
  };
5
- //# sourceMappingURL=isFieldErrorRefd.mjs.map
@@ -3,4 +3,3 @@ const t = ([, r]) => e(r);
3
3
  export {
4
4
  t as default
5
5
  };
6
- //# sourceMappingURL=isFlatFieldErrorEntryRefd.mjs.map
@@ -12,4 +12,3 @@ const i = ({ message: r, className: e }) => /* @__PURE__ */ o(
12
12
  export {
13
13
  i as default
14
14
  };
15
- //# sourceMappingURL=FormErrorMessage.mjs.map
@@ -12,4 +12,3 @@ const f = ({ path: o, Component: s }) => {
12
12
  export {
13
13
  E as default
14
14
  };
15
- //# sourceMappingURL=FormErrorMessageByPath.mjs.map
@@ -17,4 +17,3 @@ const a = ({ path: r }) => {
17
17
  export {
18
18
  d as default
19
19
  };
20
- //# sourceMappingURL=FormNonFieldErrorMarker.mjs.map
@@ -21,4 +21,3 @@ const m = (r, e) => (
21
21
  export {
22
22
  m as getFormNonFieldErrorMarkerQuerySelector
23
23
  };
24
- //# sourceMappingURL=FormNonFieldErrorMarker.utils.mjs.map
@@ -2,4 +2,3 @@ const r = "data-paragrav-rhf-utils-nonfield-error-marker-path";
2
2
  export {
3
3
  r as default
4
4
  };
5
- //# sourceMappingURL=FormNonFieldErrorMarkerHtmlAttribute.mjs.map
@@ -3,4 +3,3 @@ const l = (r, e) => !!e.querySelector(o(r));
3
3
  export {
4
4
  l as default
5
5
  };
6
- //# sourceMappingURL=isNonFieldErrorMarkerInDOM.mjs.map
@@ -3,4 +3,3 @@ const n = (r) => ([t, e]) => o(t, e, r);
3
3
  export {
4
4
  n as default
5
5
  };
6
- //# sourceMappingURL=getIsOrphanFormErrorWithParentElement.mjs.map
@@ -6,4 +6,3 @@ const F = (r, t) => e(
6
6
  export {
7
7
  F as default
8
8
  };
9
- //# sourceMappingURL=getOrphansFromFlatFieldErrors.mjs.map
@@ -10,4 +10,3 @@ const d = (r, o, i) => (
10
10
  export {
11
11
  d as default
12
12
  };
13
- //# sourceMappingURL=isOrphanFormError.mjs.map
@@ -4,4 +4,3 @@ const c = (o, e, s, r = "debug") => {
4
4
  export {
5
5
  c as default
6
6
  };
7
- //# sourceMappingURL=consoleErrors.mjs.map
@@ -8,4 +8,3 @@ const e = () => {
8
8
  export {
9
9
  m as default
10
10
  };
11
- //# sourceMappingURL=RootErrorsListFromFlatFieldErrorsContext.mjs.map
@@ -2,4 +2,3 @@ const o = "root";
2
2
  export {
3
3
  o as FormErrorPathRoot
4
4
  };
5
- //# sourceMappingURL=consts.mjs.map
@@ -6,4 +6,3 @@ const l = r(
6
6
  export {
7
7
  l as default
8
8
  };
9
- //# sourceMappingURL=getRootsFromFlatFieldErrors.mjs.map
@@ -3,4 +3,3 @@ const a = ([o]) => r(o);
3
3
  export {
4
4
  a as default
5
5
  };
6
- //# sourceMappingURL=isFlatFieldErrorEntryPathRoot.mjs.map
@@ -3,4 +3,3 @@ const s = (o) => o === r || o.startsWith(r + ".");
3
3
  export {
4
4
  s as default
5
5
  };
6
- //# sourceMappingURL=isFormErrorPathRoot.mjs.map
@@ -4,4 +4,3 @@ const o = (t) => (r) => r instanceof n ? e.parse(r) : t(r), a = o;
4
4
  export {
5
5
  a as default
6
6
  };
7
- //# sourceMappingURL=getOnSubmitTrpcClientErrorHandler.mjs.map
@@ -8,4 +8,3 @@ const a = r.object({
8
8
  export {
9
9
  a as default
10
10
  };
11
- //# sourceMappingURL=trpcClientErrorMessageSchema.mjs.map
@@ -32,4 +32,3 @@ const i = e.custom(
32
32
  export {
33
33
  i as default
34
34
  };
35
- //# sourceMappingURL=trpcClientErrorToFormSubmitErrorsSchemaTransformer.mjs.map
@@ -48,4 +48,3 @@ export {
48
48
  y as useRhfUtilsContextRequestSubmit,
49
49
  u as useRhfUtilsZodForm
50
50
  };
51
- //# sourceMappingURL=exports.mjs.map
@@ -84,4 +84,3 @@ function G({
84
84
  export {
85
85
  G as default
86
86
  };
87
- //# sourceMappingURL=Form.mjs.map
@@ -9,4 +9,3 @@ function n(m) {
9
9
  export {
10
10
  n as default
11
11
  };
12
- //# sourceMappingURL=FormWithProviders.mjs.map
@@ -22,4 +22,3 @@ function v({
22
22
  export {
23
23
  v as default
24
24
  };
25
- //# sourceMappingURL=RhfUtilsFormProviders.mjs.map
@@ -6,4 +6,3 @@ function n(r) {
6
6
  export {
7
7
  n as default
8
8
  };
9
- //# sourceMappingURL=_Controller.mjs.map
@@ -28,4 +28,3 @@ const B = ({ children: o }) => {
28
28
  export {
29
29
  h as default
30
30
  };
31
- //# sourceMappingURL=FormGroupContextProvider.mjs.map
@@ -9,4 +9,3 @@ export {
9
9
  t as _useFormGroupContext,
10
10
  u as _useFormGroupContextMaybe
11
11
  };
12
- //# sourceMappingURL=index.mjs.map
@@ -4,4 +4,3 @@ const e = () => (r(!0), o()), t = e;
4
4
  export {
5
5
  t as default
6
6
  };
7
- //# sourceMappingURL=useFormGroupChildIsMountedTracker.mjs.map
@@ -8,4 +8,3 @@ const m = () => {
8
8
  export {
9
9
  n as default
10
10
  };
11
- //# sourceMappingURL=useFormGroupChildIsSubmittingTracker.mjs.map
@@ -11,4 +11,3 @@ const u = (s) => {
11
11
  export {
12
12
  d as default
13
13
  };
14
- //# sourceMappingURL=useFormGroupChildTracker.mjs.map
@@ -6,4 +6,3 @@ const r = () => {
6
6
  export {
7
7
  e as default
8
8
  };
9
- //# sourceMappingURL=useFormGroupIsAnyBusy.mjs.map
@@ -6,4 +6,3 @@ const s = () => {
6
6
  export {
7
7
  e as default
8
8
  };
9
- //# sourceMappingURL=useFormGroupIsChildBusy.mjs.map
@@ -6,4 +6,3 @@ const s = () => {
6
6
  export {
7
7
  s as default
8
8
  };
9
- //# sourceMappingURL=useFormGroupIsParentBusy.mjs.map
@@ -11,4 +11,3 @@ const m = () => {
11
11
  export {
12
12
  f as default
13
13
  };
14
- //# sourceMappingURL=useFormGroupParentTracker.mjs.map
@@ -8,4 +8,3 @@ const u = () => {
8
8
  export {
9
9
  a as default
10
10
  };
11
- //# sourceMappingURL=useFormOrParentIsBusy.mjs.map
@@ -1,22 +1,23 @@
1
- import { jsx as d } from "react/jsx-runtime";
2
- import i from "../../../client/config/useRhfUtilsClientConfigContext.mjs";
3
- import a from "../../../errors/flat/context/useFlatFieldErrorsContextOutput.mjs";
4
- import f from "../../../submit/useResetFormOnSubmitted.mjs";
1
+ import { jsx as l } from "react/jsx-runtime";
2
+ import d from "../../../client/config/useRhfUtilsClientConfigContext.mjs";
3
+ import f from "../../../errors/flat/context/useFlatFieldErrorsContextOutput.mjs";
4
+ import b from "../../../submit/useResetFormOnSubmitted.mjs";
5
5
  import C from "../../../submit/useSubmitFormOnChange.mjs";
6
- import { _RhfUtilsContextProvider as s } from "./useRhfUtilsContext.mjs";
6
+ import { _RhfUtilsContextProvider as h } from "./useRhfUtilsContext.mjs";
7
7
  const n = ({
8
8
  formId: u,
9
9
  formRef: t,
10
- options: r,
11
- children: l
10
+ options: e,
11
+ children: a
12
12
  }) => {
13
13
  var m;
14
- const e = i();
15
- return a((m = e == null ? void 0 : e.FieldErrors) == null ? void 0 : m.output), C(t, {
16
- disabled: !(r != null && r.submitOnChange)
17
- }), f(r == null ? void 0 : r.resetOnSubmitted), /* @__PURE__ */ d(s, { value: { formId: u, formRef: t, options: r }, children: l });
14
+ const r = d();
15
+ return f((m = r == null ? void 0 : r.FieldErrors) == null ? void 0 : m.output), C(t, {
16
+ // check for false/undefined
17
+ disabled: ((e == null ? void 0 : e.submitOnChange) ?? !1) === !1,
18
+ debounce: typeof (e == null ? void 0 : e.submitOnChange) == "number" ? e.submitOnChange : void 0
19
+ }), b(e == null ? void 0 : e.resetOnSubmitted), /* @__PURE__ */ l(h, { value: { formId: u, formRef: t, options: e }, children: a });
18
20
  };
19
21
  export {
20
22
  n as default
21
23
  };
22
- //# sourceMappingURL=RhfUtilsContextProvider.mjs.map
@@ -4,4 +4,3 @@ export {
4
4
  r as _RhfUtilsContextProvider,
5
5
  i as default
6
6
  };
7
- //# sourceMappingURL=useRhfUtilsContext.mjs.map
@@ -7,4 +7,3 @@ const o = () => {
7
7
  export {
8
8
  m as default
9
9
  };
10
- //# sourceMappingURL=useRhfUtilsContextRequestSubmit.mjs.map
@@ -6,4 +6,3 @@ const e = () => {
6
6
  export {
7
7
  e as default
8
8
  };
9
- //# sourceMappingURL=useFormIsBusy.mjs.map
@@ -41,4 +41,3 @@ const v = ({
41
41
  export {
42
42
  v as default
43
43
  };
44
- //# sourceMappingURL=useRhfUtilsForm.mjs.map
@@ -10,4 +10,3 @@ const e = (t) => {
10
10
  export {
11
11
  i as default
12
12
  };
13
- //# sourceMappingURL=getSubmitterButtonData.mjs.map
@@ -1,10 +1,13 @@
1
- const u = (t) => (r) => {
2
- if (!t.current) throw new Error();
3
- e(t.current, r);
4
- }, e = (t, r) => {
1
+ import e from "react";
2
+ const s = (t) => e.useCallback(
3
+ (r) => {
4
+ if (!t.current) throw new Error();
5
+ u(t.current, r);
6
+ },
7
+ [t]
8
+ ), u = (t, r) => {
5
9
  t.requestSubmit(r);
6
10
  };
7
11
  export {
8
- u as default
12
+ s as default
9
13
  };
10
- //# sourceMappingURL=useFormRequestSubmit.mjs.map
@@ -6,4 +6,3 @@ class t extends Error {
6
6
  export {
7
7
  t as FormSubmitError
8
8
  };
9
- //# sourceMappingURL=FormSubmitError.mjs.map
@@ -10,4 +10,3 @@ const s = (r, t) => {
10
10
  export {
11
11
  s as default
12
12
  };
13
- //# sourceMappingURL=setCtxErrorsByFormSubmitErrors.mjs.map
@@ -10,4 +10,3 @@ const c = (e, f) => {
10
10
  export {
11
11
  c as default
12
12
  };
13
- //# sourceMappingURL=useFormOnSubmitted.mjs.map
@@ -34,4 +34,3 @@ const p = (e) => {
34
34
  export {
35
35
  p as default
36
36
  };
37
- //# sourceMappingURL=useResetFormOnSubmitted.mjs.map
@@ -1,20 +1,26 @@
1
- import c from "react";
2
- import m from "../form/utils/useFormRequestSubmit.mjs";
3
- const d = (t, e) => {
4
- const u = !(e != null && e.disabled), a = m(t);
5
- c.useEffect(() => {
1
+ import d from "react";
2
+ import b from "../form/utils/useFormRequestSubmit.mjs";
3
+ import { useDebouncedOnChangeValue as h } from "../utils/useDebouncedOnChangeValue.mjs";
4
+ const l = (n, e) => {
5
+ const u = !(e != null && e.disabled), a = b(n), [c] = h({
6
+ // on change value after debounce
7
+ onChange: () => {
8
+ a();
9
+ },
10
+ delay: (e == null ? void 0 : e.debounce) ?? 0
11
+ });
12
+ d.useEffect(() => {
6
13
  if (!u) return;
7
- const r = t.current;
14
+ const r = n.current;
8
15
  if (!r) throw new Error();
9
- const n = () => {
10
- a();
16
+ const t = (m) => {
17
+ c(m);
11
18
  };
12
- return r.addEventListener("change", n), () => {
13
- r.removeEventListener("change", n);
19
+ return r.addEventListener("change", t), () => {
20
+ r.removeEventListener("change", t);
14
21
  };
15
22
  }, []);
16
23
  };
17
24
  export {
18
- d as default
25
+ l as default
19
26
  };
20
- //# sourceMappingURL=useSubmitFormOnChange.mjs.map
@@ -5,4 +5,3 @@ const a = ({
5
5
  export {
6
6
  a as default
7
7
  };
8
- //# sourceMappingURL=PassthroughChildren.mjs.map
@@ -14,4 +14,3 @@ function i() {
14
14
  export {
15
15
  i as default
16
16
  };
17
- //# sourceMappingURL=createContext.mjs.map
@@ -2,4 +2,3 @@ const e = (t) => Object.keys(t).length === 0;
2
2
  export {
3
3
  e as default
4
4
  };
5
- //# sourceMappingURL=isEmptyObject.mjs.map
@@ -0,0 +1,26 @@
1
+ import r from "react";
2
+ const a = ({
3
+ onChange: u,
4
+ delay: n
5
+ }) => {
6
+ const e = r.useRef(), c = () => {
7
+ e.current && (u(e.current.value), e.current = void 0);
8
+ }, t = () => {
9
+ e.current && clearTimeout(e.current.timer);
10
+ };
11
+ return r.useEffect(
12
+ // return clear fn
13
+ () => t,
14
+ []
15
+ ), [(o) => {
16
+ t(), e.current = {
17
+ // value being tracked
18
+ value: o,
19
+ // new timer
20
+ timer: setTimeout(c, n)
21
+ };
22
+ }];
23
+ };
24
+ export {
25
+ a as useDebouncedOnChangeValue
26
+ };
@@ -12,4 +12,3 @@ const f = (r) => {
12
12
  export {
13
13
  f as default
14
14
  };
15
- //# sourceMappingURL=useRefIfValueWasTrue.mjs.map
@@ -10,8 +10,12 @@ import { Register } from '../register';
10
10
  export type RhfUtilsFormOptions = {
11
11
  /** Stop propagation of submit event. */
12
12
  stopSubmitPropagation?: boolean;
13
- /** Request submit via listener on form change. */
14
- submitOnChange?: boolean;
13
+ /**
14
+ * Request submit via listener on form change.
15
+ * - `true` to submit on any change.
16
+ * - number to debounce in milliseconds.
17
+ */
18
+ submitOnChange?: boolean | number;
15
19
  /** Reset form values and state (e.g., `isDirty`) after submit -- on success and/or error. */
16
20
  resetOnSubmitted?: UseResetFormOnSubmittedOptions;
17
21
  /**
@@ -1,5 +1,10 @@
1
+ import { default as React } from 'react';
2
+
1
3
  /**
2
4
  * Get callback to trigger submit manually on form.
5
+ *
6
+ * Note: `submitter` is optional, but is required to be a submit button.
7
+ *
3
8
  * @link https://developer.mozilla.org/docs/Web/API/HTMLFormElement/requestSubmit
4
9
  */
5
10
  declare const useFormRequestSubmit: (ref: React.RefObject<HTMLFormElement>) => HTMLFormElement["requestSubmit"];
@@ -1,7 +1,9 @@
1
1
  import { default as React } from 'react';
2
2
 
3
3
  declare const useSubmitFormOnChange: (formRef: React.RefObject<HTMLFormElement>, options?: {
4
- /** Disable-able so that default behavior is enabled for sake of simplicity of usage. */
4
+ /** Disable behavior. (Default behavior is enabled for sake of simplicity of general usage.) */
5
5
  disabled?: boolean;
6
+ /** Milliseconds to debounce form submission. (Default is none.) */
7
+ debounce?: number;
6
8
  }) => void;
7
9
  export default useSubmitFormOnChange;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * React hook to debounce onChange event callback.
3
+ *
4
+ * Returns debounced state setter (uses ref internally).
5
+ *
6
+ * When debounce delay has elapsed after setting value,
7
+ * onChange callback is called with latest value.
8
+ *
9
+ * @returns `[setValueDebounced]`
10
+ */
11
+ export declare const useDebouncedOnChangeValue: <TValue>({ onChange, delay, }: {
12
+ onChange: (value: TValue) => void;
13
+ delay: number;
14
+ }) => readonly [(value: TValue) => void];
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@paragrav/rhf-utils",
3
3
  "author": "paragrav.dev",
4
4
  "license": "MIT",
5
- "version": "0.0.135",
5
+ "version": "0.0.136",
6
6
  "description": "Integration utilities for react-hook-form.",
7
7
  "type": "module",
8
8
  "sideEffects": false,