@paragrav/rhf-utils 0.0.90 → 0.0.91

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 ADDED
@@ -0,0 +1,65 @@
1
+ # README
2
+
3
+ ## Install
4
+
5
+ ```sh
6
+ npm install @paragrav/rhf-utils # npm
7
+ pnpm install @paragrav/rhf-utils # pnpm
8
+ yarn add @paragrav/rhf-utils # yarn
9
+ ```
10
+
11
+ ## Config
12
+
13
+ To configure, create a file like `src/integrations/paragrav-rhf-utils/config.tsx` with desired config:
14
+
15
+ ```ts
16
+ const config: ClientConfig = {
17
+ defaultOptions: {
18
+ form: {
19
+ devTool: {
20
+ placement: 'top-right',
21
+ },
22
+ },
23
+ },
24
+
25
+ FormComponent: Form.Root,
26
+
27
+ onSubmitError: (error) => {
28
+ if (!(error instanceof TRPCClientError)) throw error;
29
+
30
+
31
+ const errors = trcpClientErrorToRhfErrorTransformer.parse(error);
32
+
33
+ return new FormSubmitError(errors);
34
+ },
35
+
36
+ Children: {
37
+ top: function Top({ options }) {
38
+ // navigation blocker
39
+ useFormRouterBlocker(!!options?.prompter);
40
+
41
+ return null;
42
+ },
43
+ bottom: () => (
44
+ <>
45
+ // global error list
46
+ <RootErrorsListFromFlatFieldErrorsContext />
47
+ </>
48
+ ),
49
+ },
50
+ };
51
+ ```
52
+
53
+ ## Provider
54
+
55
+ And add our context provider to your stack:
56
+
57
+ ```tsx
58
+ <RhfUtilsClientForZodContextProvider config={config}>
59
+ {children}
60
+ </RhfUtilsClientForZodContextProvider>
61
+ ```
62
+
63
+ ## Usage
64
+
65
+ Coming soon.
@@ -1,60 +1,50 @@
1
- import { jsx as d } from "react/jsx-runtime";
2
- import f from "../form/FormWithProviders.mjs";
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import d from "../form/FormWithProviders.mjs";
3
3
  import l from "../form/useForm.mjs";
4
- const p = (s) => (r) => {
5
- const n = a(
6
- s,
4
+ const v = (t) => (r) => {
5
+ const i = u(
6
+ t,
7
7
  r
8
8
  );
9
9
  return {
10
- useForm: (o, t, e, i, u) => {
11
- const m = Array.isArray(t) ? t : [t, void 0, void 0];
12
- return l(
13
- n(o, {
14
- onSubmit: m[0],
15
- onSubmitError: m[1],
16
- onSubmitInvalid: m[2],
17
- defaultValues: e,
18
- Fields: i,
19
- ...u
20
- })
21
- );
22
- },
23
- FormWithProviders: h(s, r)
10
+ useForm: (e, o) => l(
11
+ i(e, o)
12
+ ),
13
+ FormWithProviders: F(t, r)
24
14
  };
25
- }, h = (s, r) => function({
26
- schema: o,
27
- children: t,
28
- ...e
15
+ }, F = (t, r) => function({
16
+ schema: e,
17
+ children: o,
18
+ ...s
29
19
  }) {
30
- const i = a(s, r);
31
- return /* @__PURE__ */ d(
32
- f,
20
+ const n = u(t, r);
21
+ return /* @__PURE__ */ a(
22
+ d,
33
23
  {
34
- ...i(o, e),
35
- children: t
24
+ ...n(e, s),
25
+ children: o
36
26
  }
37
27
  );
38
- }, a = (s, r) => (n, o) => {
39
- var t, e, i, u, m;
28
+ }, u = (t, r) => function(e, o) {
29
+ var s, n, m, f, h;
40
30
  return {
41
31
  ...o,
42
32
  config: r,
43
33
  rhf: {
44
- ...(t = r.defaultOptions) == null ? void 0 : t.rhf,
34
+ ...(s = r.defaultOptions) == null ? void 0 : s.rhf,
45
35
  ...o.rhf,
46
- resolver: s(n)
36
+ resolver: t(e)
47
37
  },
48
38
  options: {
49
- ...(e = r.defaultOptions) == null ? void 0 : e.form,
39
+ ...(n = r.defaultOptions) == null ? void 0 : n.form,
50
40
  ...o.options,
51
41
  classNames: [
52
- ...((u = (i = r.defaultOptions) == null ? void 0 : i.form) == null ? void 0 : u.classNames) ?? [],
53
- ...((m = o.options) == null ? void 0 : m.classNames) ?? []
42
+ ...((f = (m = r.defaultOptions) == null ? void 0 : m.form) == null ? void 0 : f.classNames) ?? [],
43
+ ...((h = o.options) == null ? void 0 : h.classNames) ?? []
54
44
  ]
55
45
  }
56
46
  };
57
47
  };
58
48
  export {
59
- p as createRhfUtilsClient
49
+ v as createRhfUtilsClient
60
50
  };
@@ -1,6 +1,7 @@
1
- import t from "../../../utils/createContext.mjs";
2
- const [, o, n] = t(), r = o;
1
+ import o from "../../../utils/createContext.mjs";
2
+ const [, t, s] = o(), r = t, n = () => t().useForm;
3
3
  export {
4
- n as _RhfUtilsClientForZodContextProvider,
5
- r as default
4
+ s as _RhfUtilsClientForZodContextProvider,
5
+ r as default,
6
+ n as useRhfUtilsForm
6
7
  };
@@ -1,88 +1,89 @@
1
1
  import { default as e } from "./client/zod/context/RhfUtilsClientForZodContextProvider.mjs";
2
- import { default as s } from "./client/zod/context/useRhfUtilsClientForZodContext.mjs";
3
- import { default as u } from "./client/zod/createRhfUtilsClientForZod.mjs";
4
- import { default as m } from "./devtool/LazyDevTool.mjs";
5
- import { default as d } from "./errors/flat/context/FlatFieldErrorsContextProvider.mjs";
6
- import { default as x } from "./errors/flat/context/useFlatFieldErrorsContext.mjs";
7
- import { default as i } from "./errors/flat/FlatFieldErrorsList.mjs";
8
- import { default as E } from "./errors/message/FormErrorMessage.mjs";
9
- import { default as h } from "./errors/message/FormErrorMessageByPath.mjs";
10
- import { default as S } from "./errors/nonfield/FormNonFieldErrorMarker.mjs";
11
- import { default as P } from "./errors/nonfield/FormNonFieldErrorMarkerHtmlAttribute.mjs";
2
+ import { default as s, useRhfUtilsForm as a } from "./client/zod/context/useRhfUtilsClientForZodContext.mjs";
3
+ import { default as f } from "./client/zod/createRhfUtilsClientForZod.mjs";
4
+ import { default as l } from "./devtool/LazyDevTool.mjs";
5
+ import { default as p } from "./errors/flat/context/FlatFieldErrorsContextProvider.mjs";
6
+ import { default as F } from "./errors/flat/context/useFlatFieldErrorsContext.mjs";
7
+ import { default as n } from "./errors/flat/FlatFieldErrorsList.mjs";
8
+ import { default as C } from "./errors/message/FormErrorMessage.mjs";
9
+ import { default as c } from "./errors/message/FormErrorMessageByPath.mjs";
10
+ import { default as b } from "./errors/nonfield/FormNonFieldErrorMarker.mjs";
11
+ import { default as R } from "./errors/nonfield/FormNonFieldErrorMarkerHtmlAttribute.mjs";
12
12
  import { default as M } from "./errors/orphan/useFormHasOnlyOrphanFieldErrorsMemo.mjs";
13
- import { default as R } from "./errors/orphan/useOrphanFormErrorsMemo.mjs";
14
- import { default as v } from "./errors/orphan/useOrphanFormErrorsToConsole.mjs";
15
- import { default as T } from "./errors/root/RootErrorsListFromFlatFieldErrorsContext.mjs";
16
- import { default as k } from "./errors/root/useRootFormFieldErrorsMemo.mjs";
13
+ import { default as G } from "./errors/orphan/useOrphanFormErrorsMemo.mjs";
14
+ import { default as I } from "./errors/orphan/useOrphanFormErrorsToConsole.mjs";
15
+ import { default as g } from "./errors/root/RootErrorsListFromFlatFieldErrorsContext.mjs";
16
+ import { default as B } from "./errors/root/useRootFormFieldErrorsMemo.mjs";
17
17
  import { default as A } from "./errors/useFormErrorConsoleDebug.mjs";
18
- import { default as D } from "./errors/useFormErrorsEffect.mjs";
19
- import { default as Z } from "./errors/useFormErrorsIfAny.mjs";
20
- import { default as N } from "./errors/useFormErrorsTransformMemo.mjs";
21
- import { default as z } from "./errors/useFormRequestSubmit.mjs";
22
- import { default as j } from "./form/Form.mjs";
23
- import { default as J } from "./form/FormProviders.mjs";
24
- import { default as Q } from "./form/FormWithProviders.mjs";
25
- import { default as X } from "./form/useForm.mjs";
26
- import { default as _ } from "./form/context/utils/FormUtilsContextProvider.mjs";
27
- import { default as rr } from "./form/context/utils/useFormUtilsContext.mjs";
28
- import { default as er } from "./form/context/group/FormGroupContextProvider.mjs";
29
- import { default as sr } from "./form/context/group/useFormGroupChildIsMountedTracker.mjs";
30
- import { default as ur } from "./form/context/group/useFormGroupChildIsSubmittingTracker.mjs";
31
- import { default as mr } from "./form/context/group/useFormGroupChildTracker.mjs";
32
- import { default as dr } from "./form/context/group/useFormGroupIsAnyBusy.mjs";
33
- import { default as xr } from "./form/context/group/useFormGroupIsChildBusy.mjs";
34
- import { default as ir } from "./form/context/group/useFormGroupIsParentBusy.mjs";
35
- import { default as Er } from "./form/context/group/useFormGroupParentTracker.mjs";
36
- import { default as hr } from "./form/context/group/useFormOrParentIsBusy.mjs";
37
- import { default as Sr } from "./form/utils/getSubmitterButtonData.mjs";
38
- import { FormSubmitError as Pr } from "./submit/error/FormSubmitError.mjs";
18
+ import { default as L } from "./errors/useFormErrorsEffect.mjs";
19
+ import { default as H } from "./errors/useFormErrorsIfAny.mjs";
20
+ import { default as q } from "./errors/useFormErrorsTransformMemo.mjs";
21
+ import { default as W } from "./errors/useFormRequestSubmit.mjs";
22
+ import { default as w } from "./form/Form.mjs";
23
+ import { default as K } from "./form/FormProviders.mjs";
24
+ import { default as V } from "./form/FormWithProviders.mjs";
25
+ import { default as Y } from "./form/useForm.mjs";
26
+ import { default as $ } from "./form/context/utils/FormUtilsContextProvider.mjs";
27
+ import { default as or } from "./form/context/utils/useFormUtilsContext.mjs";
28
+ import { default as tr } from "./form/context/group/FormGroupContextProvider.mjs";
29
+ import { default as ar } from "./form/context/group/useFormGroupChildIsMountedTracker.mjs";
30
+ import { default as fr } from "./form/context/group/useFormGroupChildIsSubmittingTracker.mjs";
31
+ import { default as lr } from "./form/context/group/useFormGroupChildTracker.mjs";
32
+ import { default as pr } from "./form/context/group/useFormGroupIsAnyBusy.mjs";
33
+ import { default as Fr } from "./form/context/group/useFormGroupIsChildBusy.mjs";
34
+ import { default as nr } from "./form/context/group/useFormGroupIsParentBusy.mjs";
35
+ import { default as Cr } from "./form/context/group/useFormGroupParentTracker.mjs";
36
+ import { default as cr } from "./form/context/group/useFormOrParentIsBusy.mjs";
37
+ import { default as br } from "./form/utils/getSubmitterButtonData.mjs";
38
+ import { FormSubmitError as Rr } from "./submit/error/FormSubmitError.mjs";
39
39
  import { default as Mr } from "./submit/useFormOnSubmitSuccessful.mjs";
40
- import { default as Rr } from "./submit/useFormOnSubmitSuccessfulAndReset.mjs";
41
- import { default as vr } from "./submit/useResetFormOnSubmitError.mjs";
42
- import { default as Tr } from "./submit/useResetFormOnSubmitSuccessful.mjs";
43
- import { default as kr } from "./submit/useSubmitFormOnChange.mjs";
40
+ import { default as Gr } from "./submit/useFormOnSubmitSuccessfulAndReset.mjs";
41
+ import { default as Ir } from "./submit/useResetFormOnSubmitError.mjs";
42
+ import { default as gr } from "./submit/useResetFormOnSubmitSuccessful.mjs";
43
+ import { default as Br } from "./submit/useSubmitFormOnChange.mjs";
44
44
  export {
45
- d as FlatFieldErrorsContextProvider,
46
- i as FlatFieldErrorsList,
47
- j as Form,
48
- E as FormErrorMessage,
49
- h as FormErrorMessageByPath,
50
- er as FormGroupContextProvider,
51
- S as FormNonFieldErrorMarker,
52
- P as FormNonFieldErrorMarkerHtmlAttribute,
53
- J as FormProviders,
54
- Pr as FormSubmitError,
55
- _ as FormUtilsContextProvider,
56
- Q as FormWithProviders,
57
- m as LazyDevTool,
45
+ p as FlatFieldErrorsContextProvider,
46
+ n as FlatFieldErrorsList,
47
+ w as Form,
48
+ C as FormErrorMessage,
49
+ c as FormErrorMessageByPath,
50
+ tr as FormGroupContextProvider,
51
+ b as FormNonFieldErrorMarker,
52
+ R as FormNonFieldErrorMarkerHtmlAttribute,
53
+ K as FormProviders,
54
+ Rr as FormSubmitError,
55
+ $ as FormUtilsContextProvider,
56
+ V as FormWithProviders,
57
+ l as LazyDevTool,
58
58
  e as RhfUtilsClientForZodContextProvider,
59
- T as RootErrorsListFromFlatFieldErrorsContext,
60
- u as createRhfUtilsClientForZod,
61
- Sr as getSubmitterButtonData,
62
- x as useFlatFieldErrorsContext,
63
- X as useForm,
59
+ g as RootErrorsListFromFlatFieldErrorsContext,
60
+ f as createRhfUtilsClientForZod,
61
+ br as getSubmitterButtonData,
62
+ F as useFlatFieldErrorsContext,
63
+ Y as useForm,
64
64
  A as useFormErrorConsoleDebug,
65
- D as useFormErrorsEffect,
66
- Z as useFormErrorsIfAny,
67
- N as useFormErrorsTransformMemo,
68
- sr as useFormGroupChildIsMountedTracker,
69
- ur as useFormGroupChildIsSubmittingTracker,
70
- mr as useFormGroupChildTracker,
71
- dr as useFormGroupIsAnyBusy,
72
- xr as useFormGroupIsChildBusy,
73
- ir as useFormGroupIsParentBusy,
74
- Er as useFormGroupParentTracker,
65
+ L as useFormErrorsEffect,
66
+ H as useFormErrorsIfAny,
67
+ q as useFormErrorsTransformMemo,
68
+ ar as useFormGroupChildIsMountedTracker,
69
+ fr as useFormGroupChildIsSubmittingTracker,
70
+ lr as useFormGroupChildTracker,
71
+ pr as useFormGroupIsAnyBusy,
72
+ Fr as useFormGroupIsChildBusy,
73
+ nr as useFormGroupIsParentBusy,
74
+ Cr as useFormGroupParentTracker,
75
75
  M as useFormHasOnlyOrphanFieldErrorsMemo,
76
76
  Mr as useFormOnSubmitSuccessful,
77
- Rr as useFormOnSubmitSuccessfulAndReset,
78
- hr as useFormOrParentIsBusy,
79
- z as useFormRequestSubmit,
80
- rr as useFormUtilsContext,
81
- R as useOrphanFormErrorsMemo,
82
- v as useOrphanFormErrorsToConsole,
83
- Tr as useResetFormAfterSubmitSuccessful,
84
- vr as useResetFormOnSubmitError,
77
+ Gr as useFormOnSubmitSuccessfulAndReset,
78
+ cr as useFormOrParentIsBusy,
79
+ W as useFormRequestSubmit,
80
+ or as useFormUtilsContext,
81
+ G as useOrphanFormErrorsMemo,
82
+ I as useOrphanFormErrorsToConsole,
83
+ gr as useResetFormAfterSubmitSuccessful,
84
+ Ir as useResetFormOnSubmitError,
85
85
  s as useRhfUtilsClientForZodContext,
86
- k as useRootFormFieldErrorsMemo,
87
- kr as useSubmitFormOnChange
86
+ a as useRhfUtilsForm,
87
+ B as useRootFormFieldErrorsMemo,
88
+ Br as useSubmitFormOnChange
88
89
  };
@@ -13,11 +13,7 @@ export type ObjectSchema<TInputKey extends string, TOutputKey extends string> =
13
13
  [key in TOutputKey]: SafeFieldValues;
14
14
  };
15
15
  export type CreateRhfUtilsClient<TObjectSchema extends ObjectSchema<TObjectSchemaInputKey, TObjectSchemaOutputKey>, TObjectSchemaInputKey extends string, TObjectSchemaOutputKey extends string> = {
16
- useForm: <TSchema extends TObjectSchema, TSchemaInput extends SafeFieldValues = TSchema[TObjectSchemaInputKey], TSchemaOutput extends SafeFieldValues = TSchema[TObjectSchemaOutputKey], UseFormPropsForm extends UseFormProps<TSchemaInput, TSchemaOutput> = UseFormProps<TSchemaInput, TSchemaOutput>>(schema: TSchema, handlers: NonNullable<UseFormPropsForm['onSubmit']> | [
17
- NonNullable<UseFormPropsForm['onSubmit']>,
18
- UseFormPropsForm['onSubmitError'],
19
- UseFormPropsForm['onSubmitInvalid']
20
- ], defaultValues: UseFormPropsForm['defaultValues'], Fields: UseFormPropsForm['Fields'], props?: UseFormProps<TSchemaInput, TSchemaOutput>) => UseFormReturn<TSchemaInput, TSchemaOutput>;
16
+ useForm: <TSchema extends TObjectSchema, TSchemaInput extends SafeFieldValues = TSchema[TObjectSchemaInputKey], TSchemaOutput extends SafeFieldValues = TSchema[TObjectSchemaOutputKey], UseFormPropsForm extends UseFormProps<TSchemaInput, TSchemaOutput> = UseFormProps<TSchemaInput, TSchemaOutput>>(schema: TSchema, form: Omit<UseFormPropsForm, 'config'>) => UseFormReturn<TSchemaInput, TSchemaOutput>;
21
17
  FormWithProviders: <TSchema extends TObjectSchema, TSchemaInput extends SafeFieldValues = TSchema[TObjectSchemaInputKey], TSchemaOutput extends SafeFieldValues = TSchema[TObjectSchemaOutputKey]>(props: {
22
18
  schema: TSchema;
23
19
  } & FormWithProvidersProps<TSchemaInput, TSchemaOutput>) => JSX.Element;
@@ -4,3 +4,4 @@ export type RhfUtilsClientForZodContext = ReturnType<typeof createRhfUtilsClient
4
4
  declare const useRhfUtilsClientForZodContext: () => import('../..').CreateRhfUtilsClient<import('../createRhfUtilsClientForZod').ZodTypeFieldValues, "_input", "_output">, _RhfUtilsClientForZodContextProvider: import('react').Provider<import('../..').CreateRhfUtilsClient<import('../createRhfUtilsClientForZod').ZodTypeFieldValues, "_input", "_output"> | undefined>;
5
5
  export default useRhfUtilsClientForZodContext;
6
6
  export { _RhfUtilsClientForZodContextProvider };
7
+ export declare const useRhfUtilsForm: () => <TSchema extends import('../createRhfUtilsClientForZod').ZodTypeFieldValues, TSchemaInput extends import('../../../exports').SafeFieldValues = TSchema["_input"], TSchemaOutput extends import('../../../exports').SafeFieldValues = TSchema["_output"], UseFormPropsForm extends import('../../../form/useForm').UseFormProps<TSchemaInput, TSchemaOutput> = import('../../../form/useForm').UseFormProps<TSchemaInput, TSchemaOutput>>(schema: TSchema, form: Omit<UseFormPropsForm, "config">) => import('../../../form/useForm').UseFormReturn<TSchemaInput, TSchemaOutput>;
@@ -9,8 +9,10 @@ export declare const getFormNonFieldErrorMarkerQuerySelector: (path: string, opt
9
9
  * Do not look for match as nested field.
10
10
  *
11
11
  * By default this is enabled to facilitate looking for fields that may be nested inside objects.
12
+ * This is only a problem when a front-end field is nested more deeply than back-end.
12
13
  * For example, field arrays require objects as items, so actual field may be `field.value`.
13
14
  * This should be safe, as fields are by definition leaf nodes, so will not have nested fields.
15
+ * (If this check should need to be more precise in the future, it may be ideal to distinguish between client/server errors or paths.)
14
16
  */
15
17
  excludeNested?: boolean;
16
18
  }) => string;
@@ -1,7 +1,7 @@
1
1
  export type { Register } from './register';
2
2
  export type { ClientConfig } from './client/config';
3
3
  export { default as RhfUtilsClientForZodContextProvider } from './client/zod/context/RhfUtilsClientForZodContextProvider';
4
- export { default as useRhfUtilsClientForZodContext } from './client/zod/context/useRhfUtilsClientForZodContext';
4
+ export { default as useRhfUtilsClientForZodContext, useRhfUtilsForm, } from './client/zod/context/useRhfUtilsClientForZodContext';
5
5
  export { default as createRhfUtilsClientForZod } from './client/zod/createRhfUtilsClientForZod';
6
6
  export { default as LazyDevTool } from './devtool/LazyDevTool';
7
7
  export { default as FlatFieldErrorsContextProvider } from './errors/flat/context/FlatFieldErrorsContextProvider';
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.90",
5
+ "version": "0.0.91",
6
6
  "description": "Integration utilities for react-hook-form.",
7
7
  "type": "module",
8
8
  "sideEffects": false,