@k3-tech/react-kit 0.0.54 → 0.0.56
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/index.js +531 -1691
- package/dist/kit/builder/form/components/FormBuilder.d.ts +1 -1
- package/dist/kit/builder/form/components/FormBuilder.d.ts.map +1 -1
- package/dist/kit/builder/form/components/FormBuilderField.d.ts.map +1 -1
- package/dist/kit/builder/form/hooks/useFormBuilder.d.ts +1 -0
- package/dist/kit/builder/form/hooks/useFormBuilder.d.ts.map +1 -1
- package/dist/kit/builder/form/types.d.ts +2 -1
- package/dist/kit/builder/form/types.d.ts.map +1 -1
- package/dist/kit/themes/base.css +1 -1
- package/dist/kit/themes/clean-slate.css +1 -1
- package/dist/kit/themes/default.css +1 -1
- package/dist/kit/themes/minimal-modern.css +1 -1
- package/dist/kit/themes/spotify.css +1 -1
- package/dist/shadcn/ui/form.d.ts +1 -1
- package/dist/shadcn/ui/form.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/kit/builder/form/components/FormBuilder.tsx +2 -5
- package/src/kit/builder/form/components/FormBuilderField.tsx +6 -1
- package/src/kit/builder/form/hooks/useFormBuilder.ts +8 -2
- package/src/kit/builder/form/types.ts +4 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { FieldValues } from 'react-hook-form';
|
|
2
2
|
import { FormBuilderProps } from '../types';
|
|
3
|
-
export declare function FormBuilder<TFieldValues extends FieldValues = FieldValues>({ sections, schema, defaultValues, onSubmit, onCancel, onReset, onFieldChange, submitLabel, cancelLabel, resetLabel, isSubmitting, className, formClassName, actionsClassName, showActions, customActions, showActionsSeparator, form, }: FormBuilderProps<TFieldValues>): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export declare function FormBuilder<TFieldValues extends FieldValues = FieldValues>({ sections, schema, defaultValues, onSubmit, onCancel, onReset, onFieldChange, submitLabel, cancelLabel, resetLabel, isSubmitting, className, formClassName, actionsClassName, showActions, customActions, showActionsSeparator, form, extendValidation, }: FormBuilderProps<TFieldValues>): import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
//# sourceMappingURL=FormBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/components/FormBuilder.tsx"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,WAAW,EAAa,MAAM,iBAAiB,CAAC;AASxE,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,UAAU,CAAC;AAGlB,wBAAgB,WAAW,CAAC,YAAY,SAAS,WAAW,GAAG,WAAW,EAAE,EAC1E,QAAQ,EACR,MAAM,EACN,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,aAAa,EACb,WAAsB,EACtB,WAAsB,EACtB,UAAoB,EACpB,YAAoB,EACpB,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,WAAkB,EAClB,aAAa,EACb,oBAA2B,EAC3B,IAAI,
|
|
1
|
+
{"version":3,"file":"FormBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/components/FormBuilder.tsx"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,WAAW,EAAa,MAAM,iBAAiB,CAAC;AASxE,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,UAAU,CAAC;AAGlB,wBAAgB,WAAW,CAAC,YAAY,SAAS,WAAW,GAAG,WAAW,EAAE,EAC1E,QAAQ,EACR,MAAM,EACN,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,aAAa,EACb,WAAsB,EACtB,WAAsB,EACtB,UAAoB,EACpB,YAAoB,EACpB,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,WAAkB,EAClB,aAAa,EACb,oBAA2B,EAC3B,IAAI,EACJ,gBAAgB,GACjB,EAAE,gBAAgB,CAAC,YAAY,CAAC,2CAmQhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormBuilderField.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/components/FormBuilderField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAQ,MAAM,iBAAiB,CAAC;AAIlE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAwBvD,MAAM,WAAW,qBAAqB,CACpC,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,MAAM,GAAG,MAAM;IAE7B,KAAK,EAAE,sBAAsB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACnD,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC1D,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,OAAO,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,EAC3D,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,YAAY,KACpB,IAAI,CAAC;IACV,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAC9B,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,EACA,KAAK,EACL,OAAO,EACP,QAAQ,EACR,UAAU,GACX,EAAE,qBAAqB,CAAC,YAAY,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"FormBuilderField.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/components/FormBuilderField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAQ,MAAM,iBAAiB,CAAC;AAIlE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAwBvD,MAAM,WAAW,qBAAqB,CACpC,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,MAAM,GAAG,MAAM;IAE7B,KAAK,EAAE,sBAAsB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACnD,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC1D,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,OAAO,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,EAC3D,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,YAAY,KACpB,IAAI,CAAC;IACV,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAC9B,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,EACA,KAAK,EACL,OAAO,EACP,QAAQ,EACR,UAAU,GACX,EAAE,qBAAqB,CAAC,YAAY,EAAE,KAAK,CAAC,2WAsZ5C;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -5,6 +5,7 @@ export interface UseFormBuilderOptions<TFieldValues extends FieldValues = FieldV
|
|
|
5
5
|
sections: FormBuilderSectionConfig<TFieldValues>[];
|
|
6
6
|
defaultValues?: Partial<TFieldValues>;
|
|
7
7
|
schema?: z.ZodType<TFieldValues>;
|
|
8
|
+
extendValidation?: (originalSchema: z.ZodType<TFieldValues>) => z.ZodType<TFieldValues>;
|
|
8
9
|
}
|
|
9
10
|
export interface UseFormBuilderReturn<TFieldValues extends FieldValues = FieldValues> {
|
|
10
11
|
form: UseFormReturn<TFieldValues>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/hooks/useFormBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAEV,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,qBAAqB,CACpC,YAAY,SAAS,WAAW,GAAG,WAAW;IAE9C,QAAQ,EAAE,wBAAwB,CAAC,YAAY,CAAC,EAAE,CAAC;IACnD,aAAa,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"useFormBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/hooks/useFormBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAEV,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,qBAAqB,CACpC,YAAY,SAAS,WAAW,GAAG,WAAW;IAE9C,QAAQ,EAAE,wBAAwB,CAAC,YAAY,CAAC,EAAE,CAAC;IACnD,aAAa,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAEjC,gBAAgB,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;CACxF;AAED,MAAM,WAAW,oBAAoB,CACnC,YAAY,SAAS,WAAW,GAAG,WAAW;IAE9C,IAAI,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAClC,QAAQ,EAAE,wBAAwB,CAAC,YAAY,CAAC,EAAE,CAAC;IACnD,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5B;AAED,wBAAgB,cAAc,CAAC,YAAY,SAAS,WAAW,GAAG,WAAW,EAC3E,OAAO,EAAE,qBAAqB,CAAC,YAAY,CAAC,GAC3C,oBAAoB,CAAC,YAAY,CAAC,CA2apC"}
|
|
@@ -78,7 +78,7 @@ export interface FormBuilderFieldConfig<TFieldValues extends FieldValues = Field
|
|
|
78
78
|
* and can pass/block changes based on returned
|
|
79
79
|
* boolean.
|
|
80
80
|
*/
|
|
81
|
-
onChangeOverride?: (value: unknown, extras: unknown
|
|
81
|
+
onChangeOverride?: (value: unknown, ...extras: unknown[]) => boolean;
|
|
82
82
|
className?: string;
|
|
83
83
|
gridCols?: number;
|
|
84
84
|
rows?: number;
|
|
@@ -193,6 +193,7 @@ export interface FormBuilderProps<TFieldValues extends FieldValues = FieldValues
|
|
|
193
193
|
showActions?: boolean;
|
|
194
194
|
customActions?: React.ReactNode;
|
|
195
195
|
showActionsSeparator?: boolean;
|
|
196
|
+
extendValidation?: (originalSchema: z.ZodType<TFieldValues>) => z.ZodType<TFieldValues>;
|
|
196
197
|
}
|
|
197
198
|
export type { SectionNode } from '../section/types';
|
|
198
199
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/kit/builder/form/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/kit/builder/form/types.ts"],"names":[],"mappings":"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"}
|
package/dist/kit/themes/base.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! tailwindcss v4.1.
|
|
1
|
+
/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */
|
|
2
2
|
@layer properties {
|
|
3
3
|
@supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
|
|
4
4
|
*, :before, :after, ::backdrop {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! tailwindcss v4.1.
|
|
1
|
+
/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */
|
|
2
2
|
@layer properties {
|
|
3
3
|
@supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
|
|
4
4
|
*, :before, :after, ::backdrop {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! tailwindcss v4.1.
|
|
1
|
+
/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */
|
|
2
2
|
@layer properties {
|
|
3
3
|
@supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
|
|
4
4
|
*, :before, :after, ::backdrop {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! tailwindcss v4.1.
|
|
1
|
+
/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */
|
|
2
2
|
@layer properties {
|
|
3
3
|
@supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
|
|
4
4
|
*, :before, :after, ::backdrop {
|
package/dist/shadcn/ui/form.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Slot } from '@radix-ui/react-slot';
|
|
|
2
2
|
import { ControllerProps, FieldPath, FieldValues } from 'react-hook-form';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import type * as LabelPrimitive from '@radix-ui/react-label';
|
|
5
|
-
declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: import('react-hook-form').FormProviderProps<TFieldValues, TContext, TTransformedValues>) =>
|
|
5
|
+
declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: import('react-hook-form').FormProviderProps<TFieldValues, TContext, TTransformedValues>) => import("react").JSX.Element;
|
|
6
6
|
declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>) => import("react/jsx-runtime").JSX.Element;
|
|
7
7
|
declare const useFormField: () => {
|
|
8
8
|
invalid: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../src/shadcn/ui/form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,KAAK,cAAc,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAKzB,QAAA,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../src/shadcn/ui/form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,KAAK,cAAc,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAKzB,QAAA,MAAM,IAAI,sNAAe,CAAC;AAa1B,QAAA,MAAM,SAAS,GACb,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,cAEC,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,4CAMtC,CAAC;AAEF,QAAA,MAAM,YAAY;;;;;;;;;;;CAqBjB,CAAC;AAUF,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAYrE;AAED,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,2CAYlD;AAED,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,2CAiBnE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,2CAW1E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,kDAkBtE;AAED,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,eAAe,EACf,WAAW,EACX,SAAS,GACV,CAAC"}
|
package/package.json
CHANGED
|
@@ -34,12 +34,14 @@ export function FormBuilder<TFieldValues extends FieldValues = FieldValues>({
|
|
|
34
34
|
customActions,
|
|
35
35
|
showActionsSeparator = true,
|
|
36
36
|
form,
|
|
37
|
+
extendValidation,
|
|
37
38
|
}: FormBuilderProps<TFieldValues>) {
|
|
38
39
|
// Always call useFormBuilder hook (hooks must be called unconditionally)
|
|
39
40
|
const { form: generatedForm } = useFormBuilder({
|
|
40
41
|
sections,
|
|
41
42
|
schema,
|
|
42
43
|
defaultValues: defaultValues ?? undefined,
|
|
44
|
+
extendValidation
|
|
43
45
|
});
|
|
44
46
|
|
|
45
47
|
// Use provided form or fall back to generated form
|
|
@@ -172,11 +174,6 @@ export function FormBuilder<TFieldValues extends FieldValues = FieldValues>({
|
|
|
172
174
|
...extras: unknown[]
|
|
173
175
|
) => {
|
|
174
176
|
if (field.onChange) {
|
|
175
|
-
if (field.onChangeOverride) {
|
|
176
|
-
if (field.onChangeOverride(value, extras, setValue, getValues))
|
|
177
|
-
field.onChange(value, extras, setValue, getValues);
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
177
|
field.onChange(value, extras, setValue, getValues);
|
|
181
178
|
}
|
|
182
179
|
},
|
|
@@ -66,12 +66,17 @@ export function FormBuilderField<
|
|
|
66
66
|
|
|
67
67
|
const handleChange = useCallback(
|
|
68
68
|
(value: unknown, ...extras: unknown[]) => {
|
|
69
|
+
// Check for onChangeOverride, block any change to RHF
|
|
70
|
+
// if onChangeOverride returns exactly false
|
|
71
|
+
if (typeof (field.onChangeOverride) === "function"
|
|
72
|
+
&& field.onChangeOverride(value, ...extras) === false)
|
|
73
|
+
return;
|
|
69
74
|
// Only patch the RHF value with the first argument (the canonical value)
|
|
70
75
|
controllerField.onChange(value);
|
|
71
76
|
// Forward any extra metadata upstream (e.g., option, raw)
|
|
72
77
|
onChange?.(value, ...extras);
|
|
73
78
|
},
|
|
74
|
-
[controllerField, onChange],
|
|
79
|
+
[controllerField, field.onChangeOverride, onChange],
|
|
75
80
|
);
|
|
76
81
|
const baseClassName = cn(
|
|
77
82
|
error && 'border-destructive focus-visible:ring-destructive',
|
|
@@ -13,6 +13,8 @@ export interface UseFormBuilderOptions<
|
|
|
13
13
|
sections: FormBuilderSectionConfig<TFieldValues>[];
|
|
14
14
|
defaultValues?: Partial<TFieldValues>;
|
|
15
15
|
schema?: z.ZodType<TFieldValues>;
|
|
16
|
+
// Validation extender
|
|
17
|
+
extendValidation?: (originalSchema: z.ZodType<TFieldValues>) => z.ZodType<TFieldValues>
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
export interface UseFormBuilderReturn<
|
|
@@ -26,7 +28,7 @@ export interface UseFormBuilderReturn<
|
|
|
26
28
|
export function useFormBuilder<TFieldValues extends FieldValues = FieldValues>(
|
|
27
29
|
options: UseFormBuilderOptions<TFieldValues>,
|
|
28
30
|
): UseFormBuilderReturn<TFieldValues> {
|
|
29
|
-
const { sections, defaultValues, schema: providedSchema } = options;
|
|
31
|
+
const { sections, defaultValues, schema: providedSchema, extendValidation } = options;
|
|
30
32
|
|
|
31
33
|
// Generate schema from field configs if not provided
|
|
32
34
|
const generatedSchema = useMemo(() => {
|
|
@@ -332,8 +334,12 @@ export function useFormBuilder<TFieldValues extends FieldValues = FieldValues>(
|
|
|
332
334
|
|
|
333
335
|
forEachField(sections);
|
|
334
336
|
|
|
337
|
+
if (typeof extendValidation === "function") {
|
|
338
|
+
return extendValidation(z.object(schemaObject) as z.ZodType<TFieldValues>);
|
|
339
|
+
}
|
|
340
|
+
|
|
335
341
|
return z.object(schemaObject) as unknown as z.ZodType<TFieldValues>;
|
|
336
|
-
}, [sections, providedSchema]);
|
|
342
|
+
}, [sections, providedSchema, extendValidation]);
|
|
337
343
|
|
|
338
344
|
// Generate default values from field configs
|
|
339
345
|
const generatedDefaultValues = useMemo(() => {
|
|
@@ -127,9 +127,7 @@ export interface FormBuilderFieldConfig<
|
|
|
127
127
|
*/
|
|
128
128
|
onChangeOverride?: (
|
|
129
129
|
value: unknown,
|
|
130
|
-
extras: unknown
|
|
131
|
-
setValue: UseFormSetValue<TFieldValues>,
|
|
132
|
-
getValues: UseFormGetValues<TFieldValues>
|
|
130
|
+
...extras: unknown[]
|
|
133
131
|
) => boolean;
|
|
134
132
|
className?: string;
|
|
135
133
|
gridCols?: number;
|
|
@@ -265,6 +263,9 @@ export interface FormBuilderProps<
|
|
|
265
263
|
showActions?: boolean;
|
|
266
264
|
customActions?: React.ReactNode;
|
|
267
265
|
showActionsSeparator?: boolean;
|
|
266
|
+
|
|
267
|
+
// Validation extender
|
|
268
|
+
extendValidation?: (originalSchema: z.ZodType<TFieldValues>) => z.ZodType<TFieldValues>,
|
|
268
269
|
}
|
|
269
270
|
|
|
270
271
|
// Re-export for external consumers that build custom section nodes
|