@connect-soft/form-generator 1.1.0-alpha7 → 1.1.0-alpha8
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 +125 -1
- package/dist/index.js +66 -31
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +63 -33
- package/dist/index.mjs.map +1 -1
- package/dist/types/components/form/form-generator.d.ts +5 -0
- package/dist/types/components/form/form-generator.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/field-registry.d.ts +10 -10
- package/dist/types/lib/field-registry.d.ts.map +1 -1
- package/dist/types/lib/field-types.d.ts +25 -0
- package/dist/types/lib/field-types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
2
|
-
import React, { createElement, Fragment, memo, useCallback,
|
|
2
|
+
import React, { createElement, Fragment, memo, useCallback, useMemo, useRef, useImperativeHandle } from 'react';
|
|
3
3
|
import * as n$1 from 'zod/v4/core';
|
|
4
4
|
import { c } from 'react/compiler-runtime';
|
|
5
5
|
import { z } from 'zod';
|
|
@@ -2775,6 +2775,49 @@ function t(r,e){try{var o=r();}catch(r){return e(r)}return o&&o.then?o.then(void
|
|
|
2775
2775
|
function isArrayField(field) {
|
|
2776
2776
|
return field.type === 'array' && 'fields' in field;
|
|
2777
2777
|
}
|
|
2778
|
+
function createField(field) {
|
|
2779
|
+
return field;
|
|
2780
|
+
}
|
|
2781
|
+
function createArrayField(field) {
|
|
2782
|
+
return {
|
|
2783
|
+
...field,
|
|
2784
|
+
type: 'array'
|
|
2785
|
+
};
|
|
2786
|
+
}
|
|
2787
|
+
function strictFields(fields) {
|
|
2788
|
+
return fields;
|
|
2789
|
+
}
|
|
2790
|
+
function validateFieldType(type, registeredTypes) {
|
|
2791
|
+
if (!registeredTypes.includes(type) && type !== 'array') {
|
|
2792
|
+
throw new Error(`Unregistered field type: "${type}". ` + `Registered types: ${registeredTypes.join(', ')}. ` + `Use registerField("${type}", YourComponent) to register it.`);
|
|
2793
|
+
}
|
|
2794
|
+
return type;
|
|
2795
|
+
}
|
|
2796
|
+
function validateFieldTypes(fields, registeredTypes, options = {}) {
|
|
2797
|
+
const {
|
|
2798
|
+
throwOnError = false,
|
|
2799
|
+
warn = true
|
|
2800
|
+
} = options;
|
|
2801
|
+
const invalidTypes = [];
|
|
2802
|
+
const checkField = field => {
|
|
2803
|
+
if (field.type === 'array' && 'fields' in field) {
|
|
2804
|
+
field.fields.forEach(checkField);
|
|
2805
|
+
} else if (!registeredTypes.includes(field.type) && field.type !== 'array') {
|
|
2806
|
+
invalidTypes.push(field.type);
|
|
2807
|
+
}
|
|
2808
|
+
};
|
|
2809
|
+
fields.forEach(checkField);
|
|
2810
|
+
if (invalidTypes.length > 0) {
|
|
2811
|
+
const uniqueInvalid = [...new Set(invalidTypes)];
|
|
2812
|
+
const message = `Unregistered field type(s): ${uniqueInvalid.map(t => `"${t}"`).join(', ')}. ` + `Registered types: ${registeredTypes.join(', ')}. ` + 'Register custom types with registerField() or use module augmentation for TypeScript support.';
|
|
2813
|
+
if (throwOnError) {
|
|
2814
|
+
throw new Error(message);
|
|
2815
|
+
} else if (warn && typeof console !== 'undefined') {
|
|
2816
|
+
console.warn(`[FormGenerator] ${message}`);
|
|
2817
|
+
}
|
|
2818
|
+
}
|
|
2819
|
+
return fields;
|
|
2820
|
+
}
|
|
2778
2821
|
|
|
2779
2822
|
const fieldRegistry = new Map();
|
|
2780
2823
|
const componentRegistry = {};
|
|
@@ -2937,27 +2980,15 @@ function createDefaultFieldComponent(type) {
|
|
|
2937
2980
|
};
|
|
2938
2981
|
return FallbackComponent;
|
|
2939
2982
|
}
|
|
2940
|
-
function registerField(type, component, options = {}
|
|
2941
|
-
const {
|
|
2942
|
-
override = true
|
|
2943
|
-
} = config;
|
|
2944
|
-
const exists = fieldRegistry.has(type);
|
|
2945
|
-
if (override === 'only' && !exists) return;
|
|
2946
|
-
if (override === false && exists) return;
|
|
2983
|
+
function registerField(type, component, options = {}) {
|
|
2947
2984
|
fieldRegistry.set(type, {
|
|
2948
2985
|
component,
|
|
2949
2986
|
options
|
|
2950
2987
|
});
|
|
2951
2988
|
}
|
|
2952
|
-
function registerFields(fields
|
|
2953
|
-
const {
|
|
2954
|
-
override = true
|
|
2955
|
-
} = config;
|
|
2989
|
+
function registerFields(fields) {
|
|
2956
2990
|
Object.entries(fields).forEach(([type, definition]) => {
|
|
2957
2991
|
var _a;
|
|
2958
|
-
const exists = fieldRegistry.has(type);
|
|
2959
|
-
if (override === 'only' && !exists) return;
|
|
2960
|
-
if (override === false && exists) return;
|
|
2961
2992
|
if (typeof definition === 'function') {
|
|
2962
2993
|
fieldRegistry.set(type, {
|
|
2963
2994
|
component: definition,
|
|
@@ -2992,24 +3023,12 @@ function unregisterField(type) {
|
|
|
2992
3023
|
function getRegisteredFieldTypes() {
|
|
2993
3024
|
return Array.from(fieldRegistry.keys());
|
|
2994
3025
|
}
|
|
2995
|
-
function registerFormComponents(components
|
|
2996
|
-
const {
|
|
2997
|
-
override = true
|
|
2998
|
-
} = config;
|
|
3026
|
+
function registerFormComponents(components) {
|
|
2999
3027
|
Object.keys(components).forEach(key => {
|
|
3000
|
-
const exists = key in componentRegistry;
|
|
3001
|
-
if (override === 'only' && !exists) return;
|
|
3002
|
-
if (override === false && exists) return;
|
|
3003
3028
|
componentRegistry[key] = components[key];
|
|
3004
3029
|
});
|
|
3005
3030
|
}
|
|
3006
|
-
function registerFormComponent(name, component
|
|
3007
|
-
const {
|
|
3008
|
-
override = true
|
|
3009
|
-
} = config;
|
|
3010
|
-
const exists = name in componentRegistry;
|
|
3011
|
-
if (override === 'only' && !exists) return;
|
|
3012
|
-
if (override === false && exists) return;
|
|
3031
|
+
function registerFormComponent(name, component) {
|
|
3013
3032
|
componentRegistry[name] = component;
|
|
3014
3033
|
}
|
|
3015
3034
|
function getFormComponent(name) {
|
|
@@ -3494,8 +3513,19 @@ function FormGeneratorImpl(props) {
|
|
|
3494
3513
|
showReset = false,
|
|
3495
3514
|
resetText = 'Reset',
|
|
3496
3515
|
children,
|
|
3497
|
-
ref
|
|
3516
|
+
ref,
|
|
3517
|
+
validateTypes
|
|
3498
3518
|
} = props;
|
|
3519
|
+
useMemo(() => {
|
|
3520
|
+
if (validateTypes) {
|
|
3521
|
+
const registeredTypes = getRegisteredFieldTypes();
|
|
3522
|
+
const options = typeof validateTypes === 'object' ? validateTypes : {
|
|
3523
|
+
throwOnError: false,
|
|
3524
|
+
warn: true
|
|
3525
|
+
};
|
|
3526
|
+
validateFieldTypes(fields, registeredTypes, options);
|
|
3527
|
+
}
|
|
3528
|
+
}, [fields, validateTypes]);
|
|
3499
3529
|
const userSchema = hasSchema(props) ? props.schema : undefined;
|
|
3500
3530
|
const onSubmit = props.onSubmit;
|
|
3501
3531
|
const formRef = useRef(null);
|
|
@@ -3607,10 +3637,10 @@ function FormGeneratorImpl(props) {
|
|
|
3607
3637
|
}
|
|
3608
3638
|
return result;
|
|
3609
3639
|
}, [SubmitButton, disabled, form.formState.isSubmitting, submitText, showReset, resetText, handleReset]);
|
|
3610
|
-
const renderField = useCallback((field_1,
|
|
3640
|
+
const renderField = useCallback((field_1, options_0) => {
|
|
3611
3641
|
return jsx(FieldRenderer, {
|
|
3612
3642
|
field: field_1,
|
|
3613
|
-
namePrefix:
|
|
3643
|
+
namePrefix: options_0 === null || options_0 === void 0 ? void 0 : options_0.namePrefix
|
|
3614
3644
|
});
|
|
3615
3645
|
}, []);
|
|
3616
3646
|
if (!children) {
|
|
@@ -3675,5 +3705,5 @@ function FormGenerator(props) {
|
|
|
3675
3705
|
return FormGeneratorImpl(props);
|
|
3676
3706
|
}
|
|
3677
3707
|
|
|
3678
|
-
export { ArrayFieldRenderer, Controller, FieldRenderer, FormGenerator, FormProvider, clearAllRegistries, clearFieldRegistry, clearFormComponentRegistry, getFieldComponent, getFormComponent, getFormComponents, getRegisteredFieldTypes, hasFieldType, hasFormComponent, isArrayField, registerField, registerFields, registerFormComponent, registerFormComponents, resetFormComponentRegistry, unregisterField, useArrayField, useFieldArray, useForm, useFormContext, useWatch };
|
|
3708
|
+
export { ArrayFieldRenderer, Controller, FieldRenderer, FormGenerator, FormProvider, clearAllRegistries, clearFieldRegistry, clearFormComponentRegistry, createArrayField, createField, getFieldComponent, getFormComponent, getFormComponents, getRegisteredFieldTypes, hasFieldType, hasFormComponent, isArrayField, registerField, registerFields, registerFormComponent, registerFormComponents, resetFormComponentRegistry, strictFields, unregisterField, useArrayField, useFieldArray, useForm, useFormContext, useWatch, validateFieldType, validateFieldTypes };
|
|
3679
3709
|
//# sourceMappingURL=index.mjs.map
|