@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.
- package/README.md +7 -3
- package/dist/esm/client/config/useRhfUtilsClientConfigContext.mjs +0 -1
- package/dist/esm/client/index.mjs +0 -1
- package/dist/esm/client/utils.mjs +0 -1
- package/dist/esm/client/zod/context/RhfUtilsClientForZodContextProvider.mjs +0 -1
- package/dist/esm/client/zod/context/RhfUtilsZodForm.mjs +0 -1
- package/dist/esm/client/zod/context/useRhfUtilsClientForZodContext.mjs +0 -1
- package/dist/esm/client/zod/context/useRhfUtilsZodForm.mjs +0 -1
- package/dist/esm/client/zod/createRhfUtilsClientForZod.mjs +0 -1
- package/dist/esm/devtool/LazyDevTool.mjs +0 -1
- package/dist/esm/errors/flat/FlatFieldErrorsList.mjs +0 -1
- package/dist/esm/errors/flat/context/FlatFieldErrorsContextProvider.mjs +0 -1
- package/dist/esm/errors/flat/context/useFlatFieldErrorsContext.mjs +0 -1
- package/dist/esm/errors/flat/context/useFlatFieldErrorsContextHasOnlyOrphans.mjs +0 -1
- package/dist/esm/errors/flat/context/useFlatFieldErrorsContextOutput.mjs +0 -1
- package/dist/esm/errors/flat/filterFlatFieldErrors.mjs +0 -1
- package/dist/esm/errors/flat/flattenFieldErrors.mjs +0 -1
- package/dist/esm/errors/flat/getFlatFieldErrors.mjs +0 -1
- package/dist/esm/errors/getRefdFromFlatFieldErrors.mjs +0 -1
- package/dist/esm/errors/isFieldErrorRefd.mjs +0 -1
- package/dist/esm/errors/isFlatFieldErrorEntryRefd.mjs +0 -1
- package/dist/esm/errors/message/FormErrorMessage.mjs +0 -1
- package/dist/esm/errors/message/FormErrorMessageByPath.mjs +0 -1
- package/dist/esm/errors/nonfield/FormNonFieldErrorMarker.mjs +0 -1
- package/dist/esm/errors/nonfield/FormNonFieldErrorMarker.utils.mjs +0 -1
- package/dist/esm/errors/nonfield/FormNonFieldErrorMarkerHtmlAttribute.mjs +0 -1
- package/dist/esm/errors/nonfield/isNonFieldErrorMarkerInDOM.mjs +0 -1
- package/dist/esm/errors/orphan/getIsOrphanFormErrorWithParentElement.mjs +0 -1
- package/dist/esm/errors/orphan/getOrphansFromFlatFieldErrors.mjs +0 -1
- package/dist/esm/errors/orphan/isOrphanFormError.mjs +0 -1
- package/dist/esm/errors/output/consoleErrors.mjs +0 -1
- package/dist/esm/errors/root/RootErrorsListFromFlatFieldErrorsContext.mjs +0 -1
- package/dist/esm/errors/root/consts.mjs +0 -1
- package/dist/esm/errors/root/getRootsFromFlatFieldErrors.mjs +0 -1
- package/dist/esm/errors/root/isFlatFieldErrorEntryPathRoot.mjs +0 -1
- package/dist/esm/errors/root/isFormErrorPathRoot.mjs +0 -1
- package/dist/esm/errors/trpc/getOnSubmitTrpcClientErrorHandler.mjs +0 -1
- package/dist/esm/errors/trpc/trpcClientErrorMessageSchema.mjs +0 -1
- package/dist/esm/errors/trpc/trpcClientErrorToFormSubmitErrorsSchemaTransformer.mjs +0 -1
- package/dist/esm/exports.mjs +0 -1
- package/dist/esm/form/Form.mjs +0 -1
- package/dist/esm/form/FormWithProviders.mjs +0 -1
- package/dist/esm/form/RhfUtilsFormProviders.mjs +0 -1
- package/dist/esm/form/_Controller.mjs +0 -1
- package/dist/esm/form/context/group/FormGroupContextProvider.mjs +0 -1
- package/dist/esm/form/context/group/index.mjs +0 -1
- package/dist/esm/form/context/group/useFormGroupChildIsMountedTracker.mjs +0 -1
- package/dist/esm/form/context/group/useFormGroupChildIsSubmittingTracker.mjs +0 -1
- package/dist/esm/form/context/group/useFormGroupChildTracker.mjs +0 -1
- package/dist/esm/form/context/group/useFormGroupIsAnyBusy.mjs +0 -1
- package/dist/esm/form/context/group/useFormGroupIsChildBusy.mjs +0 -1
- package/dist/esm/form/context/group/useFormGroupIsParentBusy.mjs +0 -1
- package/dist/esm/form/context/group/useFormGroupParentTracker.mjs +0 -1
- package/dist/esm/form/context/group/useFormOrParentIsBusy.mjs +0 -1
- package/dist/esm/form/context/utils/RhfUtilsContextProvider.mjs +13 -12
- package/dist/esm/form/context/utils/useRhfUtilsContext.mjs +0 -1
- package/dist/esm/form/context/utils/useRhfUtilsContextRequestSubmit.mjs +0 -1
- package/dist/esm/form/useFormIsBusy.mjs +0 -1
- package/dist/esm/form/useRhfUtilsForm.mjs +0 -1
- package/dist/esm/form/utils/getSubmitterButtonData.mjs +0 -1
- package/dist/esm/form/utils/useFormRequestSubmit.mjs +9 -6
- package/dist/esm/submit/error/FormSubmitError.mjs +0 -1
- package/dist/esm/submit/error/setCtxErrorsByFormSubmitErrors.mjs +0 -1
- package/dist/esm/submit/useFormOnSubmitted.mjs +0 -1
- package/dist/esm/submit/useResetFormOnSubmitted.mjs +0 -1
- package/dist/esm/submit/useSubmitFormOnChange.mjs +18 -12
- package/dist/esm/utils/PassthroughChildren.mjs +0 -1
- package/dist/esm/utils/createContext.mjs +0 -1
- package/dist/esm/utils/isEmptyObject.mjs +0 -1
- package/dist/esm/utils/useDebouncedOnChangeValue.mjs +26 -0
- package/dist/esm/utils/useRefIfValueWasTrue.mjs +0 -1
- package/dist/types/form/RhfUtilsFormOptions.d.ts +6 -2
- package/dist/types/form/utils/useFormRequestSubmit.d.ts +5 -0
- package/dist/types/submit/useSubmitFormOnChange.d.ts +3 -1
- package/dist/types/utils/useDebouncedOnChangeValue.d.ts +14 -0
- package/package.json +1 -1
- package/dist/esm/client/config/useRhfUtilsClientConfigContext.mjs.map +0 -1
- package/dist/esm/client/index.mjs.map +0 -1
- package/dist/esm/client/utils.mjs.map +0 -1
- package/dist/esm/client/zod/context/RhfUtilsClientForZodContextProvider.mjs.map +0 -1
- package/dist/esm/client/zod/context/RhfUtilsZodForm.mjs.map +0 -1
- package/dist/esm/client/zod/context/useRhfUtilsClientForZodContext.mjs.map +0 -1
- package/dist/esm/client/zod/context/useRhfUtilsZodForm.mjs.map +0 -1
- package/dist/esm/client/zod/createRhfUtilsClientForZod.mjs.map +0 -1
- package/dist/esm/devtool/LazyDevTool.mjs.map +0 -1
- package/dist/esm/errors/flat/FlatFieldErrorsList.mjs.map +0 -1
- package/dist/esm/errors/flat/context/FlatFieldErrorsContextProvider.mjs.map +0 -1
- package/dist/esm/errors/flat/context/useFlatFieldErrorsContext.mjs.map +0 -1
- package/dist/esm/errors/flat/context/useFlatFieldErrorsContextHasOnlyOrphans.mjs.map +0 -1
- package/dist/esm/errors/flat/context/useFlatFieldErrorsContextOutput.mjs.map +0 -1
- package/dist/esm/errors/flat/filterFlatFieldErrors.mjs.map +0 -1
- package/dist/esm/errors/flat/flattenFieldErrors.mjs.map +0 -1
- package/dist/esm/errors/flat/getFlatFieldErrors.mjs.map +0 -1
- package/dist/esm/errors/getRefdFromFlatFieldErrors.mjs.map +0 -1
- package/dist/esm/errors/isFieldErrorRefd.mjs.map +0 -1
- package/dist/esm/errors/isFlatFieldErrorEntryRefd.mjs.map +0 -1
- package/dist/esm/errors/message/FormErrorMessage.mjs.map +0 -1
- package/dist/esm/errors/message/FormErrorMessageByPath.mjs.map +0 -1
- package/dist/esm/errors/nonfield/FormNonFieldErrorMarker.mjs.map +0 -1
- package/dist/esm/errors/nonfield/FormNonFieldErrorMarker.utils.mjs.map +0 -1
- package/dist/esm/errors/nonfield/FormNonFieldErrorMarkerHtmlAttribute.mjs.map +0 -1
- package/dist/esm/errors/nonfield/isNonFieldErrorMarkerInDOM.mjs.map +0 -1
- package/dist/esm/errors/orphan/getIsOrphanFormErrorWithParentElement.mjs.map +0 -1
- package/dist/esm/errors/orphan/getOrphansFromFlatFieldErrors.mjs.map +0 -1
- package/dist/esm/errors/orphan/isOrphanFormError.mjs.map +0 -1
- package/dist/esm/errors/output/consoleErrors.mjs.map +0 -1
- package/dist/esm/errors/root/RootErrorsListFromFlatFieldErrorsContext.mjs.map +0 -1
- package/dist/esm/errors/root/consts.mjs.map +0 -1
- package/dist/esm/errors/root/getRootsFromFlatFieldErrors.mjs.map +0 -1
- package/dist/esm/errors/root/isFlatFieldErrorEntryPathRoot.mjs.map +0 -1
- package/dist/esm/errors/root/isFormErrorPathRoot.mjs.map +0 -1
- package/dist/esm/errors/trpc/getOnSubmitTrpcClientErrorHandler.mjs.map +0 -1
- package/dist/esm/errors/trpc/trpcClientErrorMessageSchema.mjs.map +0 -1
- package/dist/esm/errors/trpc/trpcClientErrorToFormSubmitErrorsSchemaTransformer.mjs.map +0 -1
- package/dist/esm/exports.mjs.map +0 -1
- package/dist/esm/form/Form.mjs.map +0 -1
- package/dist/esm/form/FormWithProviders.mjs.map +0 -1
- package/dist/esm/form/RhfUtilsFormProviders.mjs.map +0 -1
- package/dist/esm/form/_Controller.mjs.map +0 -1
- package/dist/esm/form/context/group/FormGroupContextProvider.mjs.map +0 -1
- package/dist/esm/form/context/group/index.mjs.map +0 -1
- package/dist/esm/form/context/group/useFormGroupChildIsMountedTracker.mjs.map +0 -1
- package/dist/esm/form/context/group/useFormGroupChildIsSubmittingTracker.mjs.map +0 -1
- package/dist/esm/form/context/group/useFormGroupChildTracker.mjs.map +0 -1
- package/dist/esm/form/context/group/useFormGroupIsAnyBusy.mjs.map +0 -1
- package/dist/esm/form/context/group/useFormGroupIsChildBusy.mjs.map +0 -1
- package/dist/esm/form/context/group/useFormGroupIsParentBusy.mjs.map +0 -1
- package/dist/esm/form/context/group/useFormGroupParentTracker.mjs.map +0 -1
- package/dist/esm/form/context/group/useFormOrParentIsBusy.mjs.map +0 -1
- package/dist/esm/form/context/utils/RhfUtilsContextProvider.mjs.map +0 -1
- package/dist/esm/form/context/utils/useRhfUtilsContext.mjs.map +0 -1
- package/dist/esm/form/context/utils/useRhfUtilsContextRequestSubmit.mjs.map +0 -1
- package/dist/esm/form/useFormIsBusy.mjs.map +0 -1
- package/dist/esm/form/useRhfUtilsForm.mjs.map +0 -1
- package/dist/esm/form/utils/getSubmitterButtonData.mjs.map +0 -1
- package/dist/esm/form/utils/useFormRequestSubmit.mjs.map +0 -1
- package/dist/esm/submit/error/FormSubmitError.mjs.map +0 -1
- package/dist/esm/submit/error/setCtxErrorsByFormSubmitErrors.mjs.map +0 -1
- package/dist/esm/submit/useFormOnSubmitted.mjs.map +0 -1
- package/dist/esm/submit/useResetFormOnSubmitted.mjs.map +0 -1
- package/dist/esm/submit/useSubmitFormOnChange.mjs.map +0 -1
- package/dist/esm/utils/PassthroughChildren.mjs.map +0 -1
- package/dist/esm/utils/createContext.mjs.map +0 -1
- package/dist/esm/utils/isEmptyObject.mjs.map +0 -1
- 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
|
-
-
|
|
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
|
-
/**
|
|
279
|
-
|
|
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.
|
package/dist/esm/exports.mjs
CHANGED
package/dist/esm/form/Form.mjs
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
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
|
|
6
|
+
import { _RhfUtilsContextProvider as h } from "./useRhfUtilsContext.mjs";
|
|
7
7
|
const n = ({
|
|
8
8
|
formId: u,
|
|
9
9
|
formRef: t,
|
|
10
|
-
options:
|
|
11
|
-
children:
|
|
10
|
+
options: e,
|
|
11
|
+
children: a
|
|
12
12
|
}) => {
|
|
13
13
|
var m;
|
|
14
|
-
const
|
|
15
|
-
return
|
|
16
|
-
|
|
17
|
-
|
|
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
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
12
|
+
s as default
|
|
9
13
|
};
|
|
10
|
-
//# sourceMappingURL=useFormRequestSubmit.mjs.map
|
|
@@ -1,20 +1,26 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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 =
|
|
14
|
+
const r = n.current;
|
|
8
15
|
if (!r) throw new Error();
|
|
9
|
-
const
|
|
10
|
-
|
|
16
|
+
const t = (m) => {
|
|
17
|
+
c(m);
|
|
11
18
|
};
|
|
12
|
-
return r.addEventListener("change",
|
|
13
|
-
r.removeEventListener("change",
|
|
19
|
+
return r.addEventListener("change", t), () => {
|
|
20
|
+
r.removeEventListener("change", t);
|
|
14
21
|
};
|
|
15
22
|
}, []);
|
|
16
23
|
};
|
|
17
24
|
export {
|
|
18
|
-
|
|
25
|
+
l as default
|
|
19
26
|
};
|
|
20
|
-
//# sourceMappingURL=useSubmitFormOnChange.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
|
+
};
|
|
@@ -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
|
-
/**
|
|
14
|
-
|
|
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
|
|
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];
|