@paragrav/rhf-utils 0.0.27 → 0.0.28
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/esm/errors/context/index.mjs +6 -0
- package/dist/esm/errors/context/provider.mjs +19 -0
- package/dist/esm/errors/flat/getFlatFieldErrors.mjs +22 -0
- package/dist/esm/errors/flat/useRefdFieldErrorsMemo.mjs +13 -0
- package/dist/esm/errors/nonfield/FormNonFieldErrorMarker.utils.mjs +1 -1
- package/dist/esm/errors/orphan/getOrphanFlatFieldErrors.mjs +2 -2
- package/dist/esm/errors/orphan/useFormHasOrphanAndNoFieldErrors.mjs +5 -5
- package/dist/esm/errors/orphan/useOrphanFormErrorsMemo.mjs +14 -0
- package/dist/esm/errors/orphan/useOrphanFormErrorsToConsoleError.mjs +1 -1
- package/dist/esm/errors/root/consts.mjs +4 -0
- package/dist/esm/errors/root/getRootFlatFieldErrors.mjs +11 -0
- package/dist/esm/errors/root/isFormErrorPathRoot.mjs +5 -0
- package/dist/esm/errors/root/useRootFormFieldErrorsMemo.mjs +6 -0
- package/dist/esm/errors/{useFormErrorsOnChange.mjs → useFormErrorsMemo.mjs} +2 -2
- package/dist/esm/main.mjs +36 -32
- package/dist/esm/utils/createRequiredContext.mjs +13 -0
- package/dist/types/errors/context/index.d.ts +10 -0
- package/dist/types/errors/context/provider.d.ts +10 -0
- package/dist/types/errors/flat/flattenFieldErrors.d.ts +15 -0
- package/dist/types/errors/flat/getFlatFieldErrors.d.ts +25 -0
- package/dist/types/errors/flat/getFlatFieldErrorsByFilter.d.ts +9 -0
- package/dist/types/errors/flat/types.d.ts +3 -0
- package/dist/types/errors/flat/useFormFlatFieldErrorsMemo.d.ts +5 -0
- package/dist/types/errors/flat/useRefdFieldErrorsMemo.d.ts +9 -0
- package/dist/types/errors/nonfield/FormNonFieldErrorMarker.utils.d.ts +1 -1
- package/dist/types/errors/orphan/getOrphanFlatFieldErrors.d.ts +1 -1
- package/dist/types/errors/orphan/useOrphanFormErrorsMemo.d.ts +4 -0
- package/dist/types/errors/root/consts.d.ts +1 -0
- package/dist/types/errors/root/getRootFlatFieldErrors.d.ts +8 -0
- package/dist/types/errors/root/isFormErrorPathRoot.d.ts +6 -0
- package/dist/types/errors/root/useRootFormFieldErrorsMemo.d.ts +6 -0
- package/dist/types/errors/useFormErrorsMemo.d.ts +7 -0
- package/dist/types/form/Form.d.ts +9 -0
- package/dist/types/form/search/FormSearch.d.ts +32 -0
- package/dist/types/form/search/FormSearchHiddenInputs.d.ts +13 -0
- package/dist/types/form/search/getNewSearchParams.d.ts +2 -0
- package/dist/types/main.d.ts +5 -3
- package/dist/types/utils/createRequiredContext.d.ts +8 -0
- package/dist/types/utils/fixedForwardRef.d.ts +7 -0
- package/dist/types/utils/useImperativeForwardedRef.d.ts +11 -0
- package/package.json +3 -1
- package/dist/esm/errors/getFlatFieldErrors.mjs +0 -22
- package/dist/esm/errors/orphan/useOrphanFormErrors.mjs +0 -14
- package/dist/esm/errors/root/useRootFormFieldErrors.mjs +0 -6
- package/dist/esm/errors/root/utils.mjs +0 -11
- package/dist/esm/errors/useFormFieldErrors.mjs +0 -13
- /package/dist/esm/errors/{flattenFieldErrors.mjs → flat/flattenFieldErrors.mjs} +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as F } from "react/jsx-runtime";
|
|
2
|
+
import a from "../flat/getFlatFieldErrors.mjs";
|
|
3
|
+
import i from "../orphan/getOrphanFlatFieldErrors.mjs";
|
|
4
|
+
import l from "../root/getRootFlatFieldErrors.mjs";
|
|
5
|
+
import p from "../useFormErrorsMemo.mjs";
|
|
6
|
+
import { _FormErrorsFlatContextProvider as c } from "./index.mjs";
|
|
7
|
+
const d = ({
|
|
8
|
+
formRef: o,
|
|
9
|
+
children: t
|
|
10
|
+
}) => {
|
|
11
|
+
const e = p((s) => {
|
|
12
|
+
const r = a(s), m = l(r), n = i(r, o.current);
|
|
13
|
+
return { flattened: r, roots: m, orphans: n };
|
|
14
|
+
});
|
|
15
|
+
return /* @__PURE__ */ F(c, { value: e, children: t });
|
|
16
|
+
}, C = d;
|
|
17
|
+
export {
|
|
18
|
+
C as default
|
|
19
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { get as d } from "react-hook-form";
|
|
2
|
+
import l from "./flattenFieldErrors.mjs";
|
|
3
|
+
const p = (t) => {
|
|
4
|
+
const a = l(t), c = Object.keys(a);
|
|
5
|
+
return Object.fromEntries(
|
|
6
|
+
c.reduce(
|
|
7
|
+
(r, o) => {
|
|
8
|
+
const e = o.replace(n, "");
|
|
9
|
+
if (e === o)
|
|
10
|
+
return r;
|
|
11
|
+
const f = d(t, e, void 0);
|
|
12
|
+
return !f || r.some(([s]) => s === e) || r.push([e, f]), r;
|
|
13
|
+
},
|
|
14
|
+
[]
|
|
15
|
+
// entries
|
|
16
|
+
)
|
|
17
|
+
);
|
|
18
|
+
}, n = /\.(?:type|message)\b$/;
|
|
19
|
+
export {
|
|
20
|
+
p as default,
|
|
21
|
+
n as regexMaybeFieldErrorLeafNode
|
|
22
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import t from "../isFieldError.mjs";
|
|
2
|
+
import s from "../useFormErrorsMemo.mjs";
|
|
3
|
+
import i from "./getFlatFieldErrors.mjs";
|
|
4
|
+
const d = () => s(m), m = (r) => {
|
|
5
|
+
const e = i(r);
|
|
6
|
+
return Object.fromEntries(
|
|
7
|
+
Object.entries(e).filter(([, o]) => t(o))
|
|
8
|
+
);
|
|
9
|
+
};
|
|
10
|
+
export {
|
|
11
|
+
d as default,
|
|
12
|
+
m as getFlatFieldFormErrors
|
|
13
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e = "data-paragrav-rhf-utils-nonfield-error-marker-path", a = e, t = (r) => `[role="alert"][${e}="${r}"]`, l = (r, o) => o.querySelector(t(r));
|
|
1
|
+
const e = "data-paragrav-rhf-utils-nonfield-error-marker-path", a = e, t = (r) => `[role="alert"][${e}="${r}"]`, l = (r, o) => !!o.querySelector(t(r));
|
|
2
2
|
export {
|
|
3
3
|
a as default,
|
|
4
4
|
t as getFormNonFieldErrorMarkerQuerySelector,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import s from "../getFlatFieldErrors.mjs";
|
|
1
|
+
import s from "../flat/getFlatFieldErrors.mjs";
|
|
2
2
|
import { hasNonFieldErrorMarkerInDOM as l } from "../nonfield/FormNonFieldErrorMarker.utils.mjs";
|
|
3
3
|
import m from "../nonfield/isNonFieldError.mjs";
|
|
4
|
-
import
|
|
4
|
+
import n from "../root/isFormErrorPathRoot.mjs";
|
|
5
5
|
const d = (o, t) => {
|
|
6
6
|
const e = s(o);
|
|
7
7
|
return Object.fromEntries(
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import r from "../../isEmptyObject.mjs";
|
|
2
|
-
import t from "../
|
|
3
|
-
import
|
|
4
|
-
const
|
|
5
|
-
const s =
|
|
2
|
+
import t from "../flat/useRefdFieldErrorsMemo.mjs";
|
|
3
|
+
import m from "./useOrphanFormErrorsMemo.mjs";
|
|
4
|
+
const n = (o) => {
|
|
5
|
+
const s = m(o), e = t();
|
|
6
6
|
return r(s) ? !1 : !r(e);
|
|
7
|
-
}, d =
|
|
7
|
+
}, d = n;
|
|
8
8
|
export {
|
|
9
9
|
d as default
|
|
10
10
|
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import "react";
|
|
2
|
+
import t from "../../isEmptyObject.mjs";
|
|
3
|
+
import e from "../useFormErrorsMemo.mjs";
|
|
4
|
+
import m from "./getOrphanFlatFieldErrors.mjs";
|
|
5
|
+
const n = (r) => e((o) => {
|
|
6
|
+
if (t(o))
|
|
7
|
+
return {};
|
|
8
|
+
if (!r.current)
|
|
9
|
+
throw new Error();
|
|
10
|
+
return m(o, r.current);
|
|
11
|
+
}), a = n;
|
|
12
|
+
export {
|
|
13
|
+
a as default
|
|
14
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import n from "react";
|
|
2
2
|
import { useFormContext as m, useFormState as a } from "react-hook-form";
|
|
3
3
|
import c from "../../isEmptyObject.mjs";
|
|
4
|
-
import p from "./
|
|
4
|
+
import p from "./useOrphanFormErrorsMemo.mjs";
|
|
5
5
|
const u = (o, e) => {
|
|
6
6
|
const { getValues: s } = m(), { errors: t } = a(), r = p(o);
|
|
7
7
|
n.useEffect(() => {
|
package/dist/esm/main.mjs
CHANGED
|
@@ -1,36 +1,40 @@
|
|
|
1
1
|
import { default as e } from "./devtool/LazyDevTool.mjs";
|
|
2
|
-
import { default as
|
|
3
|
-
import { default as
|
|
4
|
-
import { default as
|
|
5
|
-
import { default as d } from "./errors/
|
|
6
|
-
import { default as
|
|
7
|
-
import { default as
|
|
8
|
-
import { default as i } from "./errors/orphan/
|
|
9
|
-
import { default as
|
|
10
|
-
import { default as
|
|
11
|
-
import { default as
|
|
12
|
-
import { default as
|
|
13
|
-
import { default as
|
|
14
|
-
import { default as N } from "./errors/
|
|
15
|
-
import { default as
|
|
16
|
-
import { default as
|
|
17
|
-
import { default as
|
|
2
|
+
import { default as s } from "./errors/context/index.mjs";
|
|
3
|
+
import { default as f } from "./errors/context/provider.mjs";
|
|
4
|
+
import { default as u } from "./errors/message/FormErrorMessage.mjs";
|
|
5
|
+
import { default as d } from "./errors/message/FormErrorMessageByPath.mjs";
|
|
6
|
+
import { default as p } from "./errors/nonfield/FormNonFieldErrorMarker.mjs";
|
|
7
|
+
import { default as E } from "./errors/nonfield/FormNonFieldErrorMarker.utils.mjs";
|
|
8
|
+
import { default as i } from "./errors/orphan/useFormHasOrphanAndNoFieldErrors.mjs";
|
|
9
|
+
import { default as M } from "./errors/orphan/useOrphanFormErrorsMemo.mjs";
|
|
10
|
+
import { default as b } from "./errors/orphan/useOrphanFormErrorsToConsoleError.mjs";
|
|
11
|
+
import { default as O } from "./errors/root/useRootFormFieldErrorsMemo.mjs";
|
|
12
|
+
import { default as C } from "./errors/useFormErrorConsoleDebug.mjs";
|
|
13
|
+
import { default as g } from "./errors/useFormErrorsEffect.mjs";
|
|
14
|
+
import { default as N } from "./errors/useFormErrorsIfAny.mjs";
|
|
15
|
+
import { default as v } from "./errors/useFormErrorsMemo.mjs";
|
|
16
|
+
import { default as H } from "./errors/useFormRequestSubmit.mjs";
|
|
17
|
+
import { default as T } from "./submit/useFormOnSubmitSuccessful.mjs";
|
|
18
|
+
import { default as z } from "./submit/useFormOnSubmitSuccessfulAndReset.mjs";
|
|
19
|
+
import { default as I } from "./submit/useResetFormOnSubmitSuccessful.mjs";
|
|
18
20
|
export {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
u as FormErrorMessage,
|
|
22
|
+
d as FormErrorMessageByPath,
|
|
23
|
+
f as FormErrorsFlatContextProvider,
|
|
24
|
+
p as FormNonFieldErrorMarker,
|
|
25
|
+
E as FormNonFieldErrorMarkerHtmlAttribute,
|
|
23
26
|
e as LazyDevTool,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
T as
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
C as useFormErrorConsoleDebug,
|
|
28
|
+
g as useFormErrorsEffect,
|
|
29
|
+
s as useFormErrorsFlatContext,
|
|
30
|
+
N as useFormErrorsIfAny,
|
|
31
|
+
v as useFormErrorsMemo,
|
|
32
|
+
i as useFormHasOrphanAndNoFieldErrors,
|
|
33
|
+
T as useFormOnSubmitSuccessful,
|
|
34
|
+
z as useFormOnSubmitSuccessfulAndReset,
|
|
35
|
+
H as useFormRequestSubmit,
|
|
36
|
+
M as useOrphanFormErrorsMemo,
|
|
37
|
+
b as useOrphanFormErrorsToConsoleError,
|
|
38
|
+
I as useResetFormAfterSubmitSuccessful,
|
|
39
|
+
O as useRootFormFieldErrorsMemo
|
|
36
40
|
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FlatFieldErrors } from '../flat/types';
|
|
2
|
+
|
|
3
|
+
export type FormErrorsFlatContext = {
|
|
4
|
+
flattened: FlatFieldErrors;
|
|
5
|
+
roots: FlatFieldErrors;
|
|
6
|
+
orphans: FlatFieldErrors;
|
|
7
|
+
};
|
|
8
|
+
declare const useFormErrorsFlatContext: () => FormErrorsFlatContext, _FormErrorsFlatContextProvider: import('react').Provider<FormErrorsFlatContext | undefined>;
|
|
9
|
+
export default useFormErrorsFlatContext;
|
|
10
|
+
export { _FormErrorsFlatContextProvider };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
type Props = React.PropsWithChildren<{
|
|
3
|
+
formRef: React.MutableRefObject<HTMLFormElement>;
|
|
4
|
+
}>;
|
|
5
|
+
/**
|
|
6
|
+
* Provides a flattened version of the form errors.
|
|
7
|
+
* Allows flattening and filtering to happen once per errors change.
|
|
8
|
+
*/
|
|
9
|
+
declare const FormErrorsFlatContextProvider: React.FC<Props>;
|
|
10
|
+
export default FormErrorsFlatContextProvider;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FieldErrors } from 'react-hook-form';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Only flattens a {@link FieldErrors} object.
|
|
5
|
+
* @returns e.g.,
|
|
6
|
+
* ```
|
|
7
|
+
* {
|
|
8
|
+
* "address.street.type": "too_short",
|
|
9
|
+
* "address.street.ref.value": "123",
|
|
10
|
+
* "address.street.message": "Required."
|
|
11
|
+
* }
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
declare const flattenFieldErrors: (errors: FieldErrors) => Record<string, unknown>;
|
|
15
|
+
export default flattenFieldErrors;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FlatFieldErrors } from './types';
|
|
2
|
+
import { FieldErrors } from 'react-hook-form';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Get {@link FlatFieldErrors} from {@link FieldErrors}.
|
|
6
|
+
* This makes it easy to work with potentially deeply-nested {@link FieldErrors}.
|
|
7
|
+
*
|
|
8
|
+
* @param errors {@link FieldErrors} object.
|
|
9
|
+
* @returns FlatFieldErrors object.
|
|
10
|
+
*
|
|
11
|
+
* e.g.,
|
|
12
|
+
* ```
|
|
13
|
+
* [ "address.street", { "address.street": { type: "too_short", ref: { value: "123" }, message: "Required." } } ]
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare const getFlatFieldErrors: (errors: FieldErrors) => FlatFieldErrors;
|
|
17
|
+
export default getFlatFieldErrors;
|
|
18
|
+
/**
|
|
19
|
+
* Regular expression to maybe match the end of a leaf node path.
|
|
20
|
+
*
|
|
21
|
+
* i.e., `name.type`, `address.street.message`
|
|
22
|
+
*
|
|
23
|
+
* iow: dot [?: non-capturing]("type" | "message")[\b word boundary][$ end of string]
|
|
24
|
+
*/
|
|
25
|
+
export declare const regexMaybeFieldErrorLeafNode: RegExp;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FieldError, FieldErrors } from 'react-hook-form';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Get flat field errors filtered by supplied predicate.
|
|
5
|
+
*/
|
|
6
|
+
declare const getFlatFieldErrorsByFilter: (errors: FieldErrors, predicate: (entry: [string, FieldError]) => boolean) => {
|
|
7
|
+
[k: string]: FieldError;
|
|
8
|
+
};
|
|
9
|
+
export default getFlatFieldErrorsByFilter;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FlatFieldErrors } from './types';
|
|
2
|
+
import { FieldErrors } from 'react-hook-form';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Use errors with refs.
|
|
6
|
+
*/
|
|
7
|
+
declare const useRefdFieldErrorsMemo: () => FlatFieldErrors;
|
|
8
|
+
export default useRefdFieldErrorsMemo;
|
|
9
|
+
export declare const getFlatFieldFormErrors: (errors: FieldErrors) => FlatFieldErrors;
|
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
declare const FormNonFieldErrorMarkerHtmlAttribute = "data-paragrav-rhf-utils-nonfield-error-marker-path";
|
|
5
5
|
export default FormNonFieldErrorMarkerHtmlAttribute;
|
|
6
6
|
export declare const getFormNonFieldErrorMarkerQuerySelector: (path: string) => string;
|
|
7
|
-
export declare const hasNonFieldErrorMarkerInDOM: (path: string, parentElement: Pick<HTMLElement, 'querySelector'>) =>
|
|
7
|
+
export declare const hasNonFieldErrorMarkerInDOM: (path: string, parentElement: Pick<HTMLElement, 'querySelector'>) => boolean;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FlatFieldErrors } from '../
|
|
1
|
+
import { FlatFieldErrors } from '../flat/types';
|
|
2
2
|
import { FieldErrors } from 'react-hook-form';
|
|
3
3
|
|
|
4
4
|
declare const getOrphanFlatFieldErrors: (errors: FieldErrors, parentElement: Pick<HTMLElement, 'querySelector'>) => FlatFieldErrors;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const FormErrorPathRoot = "root";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
|
|
3
|
+
export type FormProps = React.PropsWithoutRef<JSX.IntrinsicElements['form']> & {
|
|
4
|
+
antiCsrfToken?: string;
|
|
5
|
+
};
|
|
6
|
+
declare const Form: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.FormHTMLAttributes<HTMLFormElement>, HTMLFormElement>, "ref"> & {
|
|
7
|
+
antiCsrfToken?: string | undefined;
|
|
8
|
+
} & React.RefAttributes<HTMLFormElement>>;
|
|
9
|
+
export default Form;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { FormProps } from '../Form';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { default as React } from 'react';
|
|
4
|
+
|
|
5
|
+
declare const _default: <TSchema extends z.ZodTypeAny, TSchemaOutput extends z.output<TSchema> = z.output<TSchema>>(props: Omit<FormProps, "children" | "onSubmit"> & {
|
|
6
|
+
/**
|
|
7
|
+
* Search params schema.
|
|
8
|
+
*
|
|
9
|
+
* Make sure all properties are marked as `optional().catch(undefiend)` to avoid errors from parsing.
|
|
10
|
+
*/
|
|
11
|
+
schema: TSchema;
|
|
12
|
+
/** Current search params. */
|
|
13
|
+
search: NoInfer<TSchemaOutput>;
|
|
14
|
+
Fields: React.FC<{
|
|
15
|
+
search: TSchemaOutput;
|
|
16
|
+
isSubmitting: boolean;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Callback to handle form submission.
|
|
20
|
+
* @param search New search params.
|
|
21
|
+
* @param data Sanitized form data.
|
|
22
|
+
* @param event Form submit event.
|
|
23
|
+
*/
|
|
24
|
+
onSubmit?: ((search: TSchemaOutput, data: TSchemaOutput, event: React.FormEvent<HTMLFormElement>) => unknown) | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Error handler.
|
|
27
|
+
*
|
|
28
|
+
* Obviates need for consumer `try/catch`.
|
|
29
|
+
*/
|
|
30
|
+
onSubmitError?: ((error: unknown, search: TSchemaOutput, data: TSchemaOutput, event: React.FormEvent<HTMLFormElement>) => void) | undefined;
|
|
31
|
+
} & React.RefAttributes<HTMLFormElement>) => React.ReactNode;
|
|
32
|
+
export default _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { Stringifiable } from 'query-string';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Generate hidden inputs from the current search query string.
|
|
6
|
+
* This allows form to not require JS.
|
|
7
|
+
*/
|
|
8
|
+
declare const FormSearchHiddenInputs: React.FC<{
|
|
9
|
+
search: Record<string, Stringifiable>;
|
|
10
|
+
/** Keys to ignore. i.e., they have inputs. */
|
|
11
|
+
include: string[];
|
|
12
|
+
}>;
|
|
13
|
+
export default FormSearchHiddenInputs;
|
package/dist/types/main.d.ts
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
export { default as LazyDevTool } from './devtool/LazyDevTool';
|
|
2
|
+
export { default as useFormErrorsFlatContext } from './errors/context';
|
|
3
|
+
export { default as FormErrorsFlatContextProvider } from './errors/context/provider';
|
|
2
4
|
export { default as FormErrorMessage } from './errors/message/FormErrorMessage';
|
|
3
5
|
export { default as FormErrorMessageByPath } from './errors/message/FormErrorMessageByPath';
|
|
4
6
|
export { default as FormNonFieldErrorMarker } from './errors/nonfield/FormNonFieldErrorMarker';
|
|
5
7
|
export { default as FormNonFieldErrorMarkerHtmlAttribute } from './errors/nonfield/FormNonFieldErrorMarker.utils';
|
|
6
8
|
export { default as useFormHasOrphanAndNoFieldErrors } from './errors/orphan/useFormHasOrphanAndNoFieldErrors';
|
|
7
|
-
export { default as
|
|
9
|
+
export { default as useOrphanFormErrorsMemo } from './errors/orphan/useOrphanFormErrorsMemo';
|
|
8
10
|
export { default as useOrphanFormErrorsToConsoleError } from './errors/orphan/useOrphanFormErrorsToConsoleError';
|
|
9
|
-
export { default as
|
|
11
|
+
export { default as useRootFormFieldErrorsMemo } from './errors/root/useRootFormFieldErrorsMemo';
|
|
10
12
|
export { default as useFormErrorConsoleDebug } from './errors/useFormErrorConsoleDebug';
|
|
11
13
|
export { default as useFormErrorsEffect } from './errors/useFormErrorsEffect';
|
|
12
14
|
export { default as useFormErrorsIfAny } from './errors/useFormErrorsIfAny';
|
|
13
|
-
export { default as
|
|
15
|
+
export { default as useFormErrorsMemo } from './errors/useFormErrorsMemo';
|
|
14
16
|
export { default as useFormRequestSubmit } from './errors/useFormRequestSubmit';
|
|
15
17
|
export { default as useFormOnSubmitSuccessful } from './submit/useFormOnSubmitSuccessful';
|
|
16
18
|
export { default as useFormOnSubmitSuccessfulAndReset } from './submit/useFormOnSubmitSuccessfulAndReset';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Create a strongly-typed context that throws error if no provider is found.
|
|
5
|
+
* @returns A tuple with a function to get the context and the context provider.
|
|
6
|
+
*/
|
|
7
|
+
declare function createRequiredContext<T = unknown>(): readonly [() => T & ({} | null), React.Provider<T | undefined>];
|
|
8
|
+
export default createRequiredContext;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @see https://www.totaltypescript.com/forwardref-with-generic-components
|
|
5
|
+
*/
|
|
6
|
+
declare function fixedForwardRef<T, P = object>(render: (props: P, ref: React.Ref<T>) => React.ReactNode): (props: P & React.RefAttributes<T>) => React.ReactNode;
|
|
7
|
+
export default fixedForwardRef;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Create a ref and point forwarded ref to it.
|
|
5
|
+
*
|
|
6
|
+
* Use case: forwarded refs are optional, but sometimes you need the ref.
|
|
7
|
+
*
|
|
8
|
+
* @param forwardedRef Forwarded `ref` prop.
|
|
9
|
+
*/
|
|
10
|
+
declare const useImperativeForwardedRef: <TRef>(forwardedRef: React.ForwardedRef<TRef> | undefined) => React.RefObject<TRef>;
|
|
11
|
+
export default useImperativeForwardedRef;
|
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.
|
|
5
|
+
"version": "0.0.28",
|
|
6
6
|
"description": "Integration utilities for react-hook-form.",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"sideEffects": false,
|
|
@@ -99,6 +99,7 @@
|
|
|
99
99
|
},
|
|
100
100
|
"peerDependencies": {
|
|
101
101
|
"flat": "^6",
|
|
102
|
+
"query-string": "^9",
|
|
102
103
|
"react": "^18",
|
|
103
104
|
"react-hook-form": "^7"
|
|
104
105
|
},
|
|
@@ -109,6 +110,7 @@
|
|
|
109
110
|
"@rollup/plugin-typescript": "^11.1.6",
|
|
110
111
|
"@types/node": "^18.19.26",
|
|
111
112
|
"@types/react": "^18.2.69",
|
|
113
|
+
"@types/react-dom": "^18.2.23",
|
|
112
114
|
"@typescript-eslint/eslint-plugin": "^7.3.1",
|
|
113
115
|
"@typescript-eslint/parser": "^7.3.1",
|
|
114
116
|
"@vitejs/plugin-react": "^4.2.1",
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { get as f } from "react-hook-form";
|
|
2
|
-
import n from "./flattenFieldErrors.mjs";
|
|
3
|
-
const p = (t) => {
|
|
4
|
-
const a = n(t), c = Object.keys(a);
|
|
5
|
-
return Object.fromEntries(
|
|
6
|
-
c.reduce(
|
|
7
|
-
(e, o) => {
|
|
8
|
-
const r = o.replace(d, "");
|
|
9
|
-
if (r === o)
|
|
10
|
-
return e;
|
|
11
|
-
const s = f(t, r, void 0);
|
|
12
|
-
return s && e.push([r, s]), e;
|
|
13
|
-
},
|
|
14
|
-
[]
|
|
15
|
-
// entries
|
|
16
|
-
)
|
|
17
|
-
);
|
|
18
|
-
}, d = /\.(?:type|message)\b$/;
|
|
19
|
-
export {
|
|
20
|
-
p as default,
|
|
21
|
-
d as regexMaybeFieldErrorLeafNode
|
|
22
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import "react";
|
|
2
|
-
import t from "../../isEmptyObject.mjs";
|
|
3
|
-
import e from "../useFormErrorsOnChange.mjs";
|
|
4
|
-
import n from "./getOrphanFlatFieldErrors.mjs";
|
|
5
|
-
const m = (r) => e((o) => {
|
|
6
|
-
if (t(o))
|
|
7
|
-
return {};
|
|
8
|
-
if (!r.current)
|
|
9
|
-
throw new Error();
|
|
10
|
-
return n(o, r.current);
|
|
11
|
-
}), a = m;
|
|
12
|
-
export {
|
|
13
|
-
a as default
|
|
14
|
-
};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import s from "../getFlatFieldErrors.mjs";
|
|
2
|
-
const t = "root", i = (r) => r === t || r.startsWith(t + "."), n = (r) => {
|
|
3
|
-
const o = s(r);
|
|
4
|
-
return Object.fromEntries(
|
|
5
|
-
Object.entries(o).filter(([e]) => i(e))
|
|
6
|
-
);
|
|
7
|
-
};
|
|
8
|
-
export {
|
|
9
|
-
n as getRootFlatFieldErrors,
|
|
10
|
-
i as isFormErrorPathRoot
|
|
11
|
-
};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import t from "./getFlatFieldErrors.mjs";
|
|
2
|
-
import s from "./isFieldError.mjs";
|
|
3
|
-
import i from "./useFormErrorsOnChange.mjs";
|
|
4
|
-
const f = () => i(l), l = (r) => {
|
|
5
|
-
const o = t(r);
|
|
6
|
-
return Object.fromEntries(
|
|
7
|
-
Object.entries(o).filter(([, e]) => s(e))
|
|
8
|
-
);
|
|
9
|
-
};
|
|
10
|
-
export {
|
|
11
|
-
f as default,
|
|
12
|
-
l as getFlatFieldFormErrors
|
|
13
|
-
};
|
|
File without changes
|