@bombillazo/rhf-plus 7.57.0-plus.0 → 7.59.0-plus.0
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 +1 -0
- package/dist/__typetest__/form.test-d.d.ts +1 -1
- package/dist/__typetest__/form.test-d.d.ts.map +1 -1
- package/dist/controller.d.ts +15 -14
- package/dist/controller.d.ts.map +1 -1
- package/dist/form.d.ts +1 -1
- package/dist/form.d.ts.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.mjs +59 -36
- package/dist/index.esm.mjs.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/logic/appendErrors.d.ts +1 -1
- package/dist/logic/appendErrors.d.ts.map +1 -1
- package/dist/logic/createFormControl.d.ts +1 -1
- package/dist/logic/createFormControl.d.ts.map +1 -1
- package/dist/logic/generateId.d.ts.map +1 -1
- package/dist/logic/generateWatchOutput.d.ts +1 -1
- package/dist/logic/generateWatchOutput.d.ts.map +1 -1
- package/dist/logic/getFieldValue.d.ts +1 -1
- package/dist/logic/getFieldValue.d.ts.map +1 -1
- package/dist/logic/getFieldValueAs.d.ts +1 -1
- package/dist/logic/getFieldValueAs.d.ts.map +1 -1
- package/dist/logic/getFocusFieldName.d.ts +1 -1
- package/dist/logic/getFocusFieldName.d.ts.map +1 -1
- package/dist/logic/getProxyFormState.d.ts +1 -1
- package/dist/logic/getProxyFormState.d.ts.map +1 -1
- package/dist/logic/getResolverOptions.d.ts +1 -1
- package/dist/logic/getResolverOptions.d.ts.map +1 -1
- package/dist/logic/getRuleValue.d.ts +1 -1
- package/dist/logic/getRuleValue.d.ts.map +1 -1
- package/dist/logic/getValidateError.d.ts +1 -1
- package/dist/logic/getValidateError.d.ts.map +1 -1
- package/dist/logic/getValidationModes.d.ts +1 -1
- package/dist/logic/getValidationModes.d.ts.map +1 -1
- package/dist/logic/getValueAndMessage.d.ts +1 -1
- package/dist/logic/getValueAndMessage.d.ts.map +1 -1
- package/dist/logic/hasPromiseValidation.d.ts +1 -1
- package/dist/logic/hasPromiseValidation.d.ts.map +1 -1
- package/dist/logic/hasValidation.d.ts +1 -1
- package/dist/logic/hasValidation.d.ts.map +1 -1
- package/dist/logic/isNameInFieldArray.d.ts +1 -1
- package/dist/logic/isNameInFieldArray.d.ts.map +1 -1
- package/dist/logic/isWatched.d.ts +1 -1
- package/dist/logic/isWatched.d.ts.map +1 -1
- package/dist/logic/iterateFieldsByAction.d.ts +1 -1
- package/dist/logic/iterateFieldsByAction.d.ts.map +1 -1
- package/dist/logic/schemaErrorLookup.d.ts +1 -1
- package/dist/logic/schemaErrorLookup.d.ts.map +1 -1
- package/dist/logic/shouldRenderFormState.d.ts +1 -1
- package/dist/logic/shouldRenderFormState.d.ts.map +1 -1
- package/dist/logic/skipValidation.d.ts +1 -1
- package/dist/logic/skipValidation.d.ts.map +1 -1
- package/dist/logic/updateFieldArrayRootError.d.ts +1 -1
- package/dist/logic/updateFieldArrayRootError.d.ts.map +1 -1
- package/dist/logic/validateField.d.ts +1 -1
- package/dist/logic/validateField.d.ts.map +1 -1
- package/dist/react-server.esm.mjs +19 -10
- package/dist/react-server.esm.mjs.map +1 -1
- package/dist/types/controller.d.ts +13 -10
- package/dist/types/controller.d.ts.map +1 -1
- package/dist/types/errors.d.ts +3 -3
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/fieldArray.d.ts +4 -4
- package/dist/types/fieldArray.d.ts.map +1 -1
- package/dist/types/fields.d.ts +2 -2
- package/dist/types/fields.d.ts.map +1 -1
- package/dist/types/form.d.ts +16 -15
- package/dist/types/form.d.ts.map +1 -1
- package/dist/types/path/common.d.ts +1 -1
- package/dist/types/path/common.d.ts.map +1 -1
- package/dist/types/path/eager.d.ts +16 -3
- package/dist/types/path/eager.d.ts.map +1 -1
- package/dist/types/path/index.d.ts +1 -1
- package/dist/types/path/index.d.ts.map +1 -1
- package/dist/types/resolvers.d.ts +3 -3
- package/dist/types/resolvers.d.ts.map +1 -1
- package/dist/types/utils.d.ts +1 -1
- package/dist/types/utils.d.ts.map +1 -1
- package/dist/types/validator.d.ts +4 -4
- package/dist/types/validator.d.ts.map +1 -1
- package/dist/useController.d.ts +1 -1
- package/dist/useController.d.ts.map +1 -1
- package/dist/useFieldArray.d.ts +1 -1
- package/dist/useFieldArray.d.ts.map +1 -1
- package/dist/useForm.d.ts +1 -1
- package/dist/useForm.d.ts.map +1 -1
- package/dist/useFormContext.d.ts +1 -1
- package/dist/useFormContext.d.ts.map +1 -1
- package/dist/useFormState.d.ts +1 -1
- package/dist/useFormState.d.ts.map +1 -1
- package/dist/useWatch.d.ts +15 -15
- package/dist/useWatch.d.ts.map +1 -1
- package/dist/utils/createSubject.d.ts +1 -1
- package/dist/utils/createSubject.d.ts.map +1 -1
- package/dist/utils/deepEqual.d.ts +1 -1
- package/dist/utils/deepEqual.d.ts.map +1 -1
- package/dist/utils/flatten.d.ts +1 -1
- package/dist/utils/flatten.d.ts.map +1 -1
- package/dist/utils/get.d.ts.map +1 -1
- package/dist/utils/isCheckBoxInput.d.ts +1 -1
- package/dist/utils/isCheckBoxInput.d.ts.map +1 -1
- package/dist/utils/isEmptyObject.d.ts +1 -1
- package/dist/utils/isEmptyObject.d.ts.map +1 -1
- package/dist/utils/isFileInput.d.ts +1 -1
- package/dist/utils/isFileInput.d.ts.map +1 -1
- package/dist/utils/isMessage.d.ts +1 -1
- package/dist/utils/isMessage.d.ts.map +1 -1
- package/dist/utils/isMultipleSelect.d.ts +1 -1
- package/dist/utils/isMultipleSelect.d.ts.map +1 -1
- package/dist/utils/isPrimitive.d.ts +1 -1
- package/dist/utils/isPrimitive.d.ts.map +1 -1
- package/dist/utils/isRadioInput.d.ts +1 -1
- package/dist/utils/isRadioInput.d.ts.map +1 -1
- package/dist/utils/isRadioOrCheckbox.d.ts +1 -1
- package/dist/utils/isRadioOrCheckbox.d.ts.map +1 -1
- package/dist/utils/live.d.ts +1 -1
- package/dist/utils/live.d.ts.map +1 -1
- package/dist/utils/set.d.ts +1 -1
- package/dist/utils/set.d.ts.map +1 -1
- package/package.json +13 -13
package/dist/index.esm.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import React__default from 'react';
|
|
3
|
-
import crypto from 'crypto';
|
|
3
|
+
import crypto$1 from 'crypto';
|
|
4
4
|
|
|
5
5
|
var isCheckBoxInput = (element) => element.type === 'checkbox';
|
|
6
6
|
|
|
@@ -63,15 +63,19 @@ function cloneObject(data) {
|
|
|
63
63
|
return copy;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
var
|
|
66
|
+
var isKey = (value) => /^\w*$/.test(value);
|
|
67
67
|
|
|
68
68
|
var isUndefined = (val) => val === undefined;
|
|
69
69
|
|
|
70
|
+
var compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];
|
|
71
|
+
|
|
72
|
+
var stringToPath = (input) => compact(input.replace(/["|']|\]/g, '').split(/\.|\[/));
|
|
73
|
+
|
|
70
74
|
var get = (object, path, defaultValue) => {
|
|
71
75
|
if (!path || !isObject(object)) {
|
|
72
76
|
return defaultValue;
|
|
73
77
|
}
|
|
74
|
-
const result =
|
|
78
|
+
const result = (isKey(path) ? [path] : stringToPath(path)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], object);
|
|
75
79
|
return isUndefined(result) || result === object
|
|
76
80
|
? isUndefined(object[path])
|
|
77
81
|
? defaultValue
|
|
@@ -81,10 +85,6 @@ var get = (object, path, defaultValue) => {
|
|
|
81
85
|
|
|
82
86
|
var isBoolean = (value) => typeof value === 'boolean';
|
|
83
87
|
|
|
84
|
-
var isKey = (value) => /^\w*$/.test(value);
|
|
85
|
-
|
|
86
|
-
var stringToPath = (input) => compact(input.replace(/["|']|\]/g, '').split(/\.|\[/));
|
|
87
|
-
|
|
88
88
|
var set = (object, path, value) => {
|
|
89
89
|
let index = -1;
|
|
90
90
|
const tempPath = isKey(path) ? [path] : stringToPath(path);
|
|
@@ -504,25 +504,29 @@ function useController(props) {
|
|
|
504
504
|
* <Controller
|
|
505
505
|
* control={control}
|
|
506
506
|
* name="test"
|
|
507
|
-
*
|
|
508
|
-
*
|
|
509
|
-
*
|
|
510
|
-
*
|
|
511
|
-
*
|
|
512
|
-
*
|
|
513
|
-
*
|
|
514
|
-
*
|
|
515
|
-
*
|
|
516
|
-
*
|
|
517
|
-
*
|
|
518
|
-
*
|
|
519
|
-
*
|
|
507
|
+
* >
|
|
508
|
+
* ({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (
|
|
509
|
+
* <>
|
|
510
|
+
* <input
|
|
511
|
+
* onChange={onChange} // send value to hook form
|
|
512
|
+
* onBlur={onBlur} // notify when input is touched
|
|
513
|
+
* value={value} // return updated value
|
|
514
|
+
* ref={ref} // set ref for focus management
|
|
515
|
+
* />
|
|
516
|
+
* <p>{formState.isSubmitted ? "submitted" : ""}</p>
|
|
517
|
+
* <p>{fieldState.isTouched ? "touched" : ""}</p>
|
|
518
|
+
* </>
|
|
519
|
+
* )
|
|
520
|
+
* </Controller>
|
|
520
521
|
* </form>
|
|
521
522
|
* );
|
|
522
523
|
* }
|
|
523
524
|
* ```
|
|
524
525
|
*/
|
|
525
|
-
const Controller = (props) =>
|
|
526
|
+
const Controller = (props) => {
|
|
527
|
+
const renderedController = useController(props);
|
|
528
|
+
return ('children' in props ? props.children : props.render)(renderedController);
|
|
529
|
+
};
|
|
526
530
|
|
|
527
531
|
const flatten = (obj) => {
|
|
528
532
|
const output = {};
|
|
@@ -656,7 +660,7 @@ var uuid = () => {
|
|
|
656
660
|
typeof window.crypto.randomUUID === 'function') {
|
|
657
661
|
return window.crypto.randomUUID();
|
|
658
662
|
}
|
|
659
|
-
return crypto.randomBytes(16).toString('hex');
|
|
663
|
+
return crypto$1.randomBytes(16).toString('hex');
|
|
660
664
|
};
|
|
661
665
|
|
|
662
666
|
var createId = (id) => id || `form-${uuid()}`;
|
|
@@ -691,7 +695,7 @@ var createSubject = () => {
|
|
|
691
695
|
|
|
692
696
|
var isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);
|
|
693
697
|
|
|
694
|
-
function deepEqual(object1, object2) {
|
|
698
|
+
function deepEqual(object1, object2, _internal_visited = new WeakSet()) {
|
|
695
699
|
if (isPrimitive(object1) || isPrimitive(object2)) {
|
|
696
700
|
return object1 === object2;
|
|
697
701
|
}
|
|
@@ -703,6 +707,11 @@ function deepEqual(object1, object2) {
|
|
|
703
707
|
if (keys1.length !== keys2.length) {
|
|
704
708
|
return false;
|
|
705
709
|
}
|
|
710
|
+
if (_internal_visited.has(object1) || _internal_visited.has(object2)) {
|
|
711
|
+
return true;
|
|
712
|
+
}
|
|
713
|
+
_internal_visited.add(object1);
|
|
714
|
+
_internal_visited.add(object2);
|
|
706
715
|
for (const key of keys1) {
|
|
707
716
|
const val1 = object1[key];
|
|
708
717
|
if (!keys2.includes(key)) {
|
|
@@ -713,7 +722,7 @@ function deepEqual(object1, object2) {
|
|
|
713
722
|
if ((isDateObject(val1) && isDateObject(val2)) ||
|
|
714
723
|
(isObject(val1) && isObject(val2)) ||
|
|
715
724
|
(Array.isArray(val1) && Array.isArray(val2))
|
|
716
|
-
? !deepEqual(val1, val2)
|
|
725
|
+
? !deepEqual(val1, val2, _internal_visited)
|
|
717
726
|
: val1 !== val2) {
|
|
718
727
|
return false;
|
|
719
728
|
}
|
|
@@ -2067,14 +2076,14 @@ function createFormControl(props = {}) {
|
|
|
2067
2076
|
if (_options.resolver) {
|
|
2068
2077
|
const { errors, values } = await _runSchema();
|
|
2069
2078
|
_formState.errors = errors;
|
|
2070
|
-
fieldValues = values;
|
|
2079
|
+
fieldValues = cloneObject(values);
|
|
2071
2080
|
}
|
|
2072
2081
|
else {
|
|
2073
2082
|
await executeBuiltInValidation(_fields);
|
|
2074
2083
|
}
|
|
2075
2084
|
if (_names.disabled.size) {
|
|
2076
2085
|
for (const name of _names.disabled) {
|
|
2077
|
-
|
|
2086
|
+
unset(fieldValues, name);
|
|
2078
2087
|
}
|
|
2079
2088
|
}
|
|
2080
2089
|
unset(_formState.errors, 'root');
|
|
@@ -2171,7 +2180,11 @@ function createFormControl(props = {}) {
|
|
|
2171
2180
|
}
|
|
2172
2181
|
}
|
|
2173
2182
|
for (const fieldName of _names.mount) {
|
|
2174
|
-
|
|
2183
|
+
const value = get(values, fieldName, get(_defaultValues, fieldName));
|
|
2184
|
+
if (!isUndefined(value)) {
|
|
2185
|
+
set(values, fieldName, value);
|
|
2186
|
+
setValue(fieldName, get(values, fieldName));
|
|
2187
|
+
}
|
|
2175
2188
|
}
|
|
2176
2189
|
}
|
|
2177
2190
|
_formValues = cloneObject(values);
|
|
@@ -2388,6 +2401,9 @@ function createFormControl(props = {}) {
|
|
|
2388
2401
|
}
|
|
2389
2402
|
|
|
2390
2403
|
var generateId = () => {
|
|
2404
|
+
if (typeof crypto !== 'undefined' && crypto.randomUUID) {
|
|
2405
|
+
return crypto.randomUUID();
|
|
2406
|
+
}
|
|
2391
2407
|
const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;
|
|
2392
2408
|
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
|
|
2393
2409
|
const r = (Math.random() * 16 + d) % 16 | 0;
|
|
@@ -2503,7 +2519,7 @@ function useFieldArray(props) {
|
|
|
2503
2519
|
control._names.array.add(name);
|
|
2504
2520
|
rules &&
|
|
2505
2521
|
control.register(name, rules);
|
|
2506
|
-
|
|
2522
|
+
useIsomorphicLayoutEffect(() => control._subjects.array.subscribe({
|
|
2507
2523
|
next: ({ values, name: fieldArrayName, }) => {
|
|
2508
2524
|
if (fieldArrayName === _name.current || !fieldArrayName) {
|
|
2509
2525
|
const fieldValues = get(values, _name.current);
|
|
@@ -2749,14 +2765,21 @@ function useForm(props = {}) {
|
|
|
2749
2765
|
{},
|
|
2750
2766
|
});
|
|
2751
2767
|
if (!_formControl.current) {
|
|
2752
|
-
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
props.defaultValues &&
|
|
2758
|
-
|
|
2759
|
-
|
|
2768
|
+
if (props.formControl) {
|
|
2769
|
+
_formControl.current = {
|
|
2770
|
+
...props.formControl,
|
|
2771
|
+
formState,
|
|
2772
|
+
};
|
|
2773
|
+
if (props.defaultValues && !isFunction(props.defaultValues)) {
|
|
2774
|
+
props.formControl.reset(props.defaultValues, props.resetOptions);
|
|
2775
|
+
}
|
|
2776
|
+
}
|
|
2777
|
+
else {
|
|
2778
|
+
const { formControl, ...rest } = createFormControl(props);
|
|
2779
|
+
_formControl.current = {
|
|
2780
|
+
...rest,
|
|
2781
|
+
formState,
|
|
2782
|
+
};
|
|
2760
2783
|
}
|
|
2761
2784
|
}
|
|
2762
2785
|
const control = _formControl.current.control;
|