react-hook-form 7.31.3 → 7.32.2
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 +4 -2
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.mjs +26 -16
- 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/createFormControl.d.ts.map +1 -1
- package/dist/logic/getFieldValueAs.d.ts.map +1 -1
- package/dist/logic/getProxyFormState.d.ts +2 -2
- package/dist/logic/getProxyFormState.d.ts.map +1 -1
- package/dist/logic/getResolverOptions.d.ts +2 -2
- package/dist/logic/getResolverOptions.d.ts.map +1 -1
- package/dist/types/fieldArray.d.ts +5 -5
- package/dist/types/fieldArray.d.ts.map +1 -1
- package/dist/types/form.d.ts +12 -12
- package/dist/types/form.d.ts.map +1 -1
- package/dist/types/resolvers.d.ts +1 -1
- package/dist/types/resolvers.d.ts.map +1 -1
- package/dist/utils/cloneObject.d.ts.map +1 -1
- package/dist/utils/isHTMLElement.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.mjs
CHANGED
@@ -575,7 +575,11 @@ function cloneObject(data) {
|
|
575
575
|
(isArray || isObject(data))) {
|
576
576
|
copy = isArray ? [] : {};
|
577
577
|
for (const key in data) {
|
578
|
-
|
578
|
+
if (isFunction(data[key])) {
|
579
|
+
copy = data;
|
580
|
+
break;
|
581
|
+
}
|
582
|
+
copy[key] = cloneObject(data[key]);
|
579
583
|
}
|
580
584
|
}
|
581
585
|
else {
|
@@ -938,7 +942,11 @@ var isBoolean = (value) => typeof value === 'boolean';
|
|
938
942
|
|
939
943
|
var isFileInput = (element) => element.type === 'file';
|
940
944
|
|
941
|
-
var isHTMLElement = (value) =>
|
945
|
+
var isHTMLElement = (value) => {
|
946
|
+
const owner = value ? value.ownerDocument : 0;
|
947
|
+
const ElementClass = owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement;
|
948
|
+
return value instanceof ElementClass;
|
949
|
+
};
|
942
950
|
|
943
951
|
var isMultipleSelect = (element) => element.type === `select-multiple`;
|
944
952
|
|
@@ -1017,7 +1025,7 @@ var getCheckboxValue = (options) => {
|
|
1017
1025
|
var getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)
|
1018
1026
|
? value
|
1019
1027
|
: valueAsNumber
|
1020
|
-
? value === ''
|
1028
|
+
? value === '' || isNullOrUndefined(value)
|
1021
1029
|
? NaN
|
1022
1030
|
: +value
|
1023
1031
|
: valueAsDate && isString(value)
|
@@ -1217,7 +1225,7 @@ var validateField = async (field, inputValue, validateAllFieldCriteria, shouldUs
|
|
1217
1225
|
let exceedMin;
|
1218
1226
|
const maxOutput = getValueAndMessage(max);
|
1219
1227
|
const minOutput = getValueAndMessage(min);
|
1220
|
-
if (!isNaN(inputValue)) {
|
1228
|
+
if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {
|
1221
1229
|
const valueNumber = ref.valueAsNumber || +inputValue;
|
1222
1230
|
if (!isNullOrUndefined(maxOutput.value)) {
|
1223
1231
|
exceedMax = valueNumber > maxOutput.value;
|
@@ -1378,9 +1386,9 @@ function createFormControl(props = {}) {
|
|
1378
1386
|
const validationModeBeforeSubmit = getValidationModes(_options.mode);
|
1379
1387
|
const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);
|
1380
1388
|
const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;
|
1381
|
-
const debounce = (callback
|
1389
|
+
const debounce = (callback) => (wait) => {
|
1382
1390
|
clearTimeout(timer);
|
1383
|
-
timer = window.setTimeout(
|
1391
|
+
timer = window.setTimeout(callback, wait);
|
1384
1392
|
};
|
1385
1393
|
const _updateValid = async (shouldSkipRender) => {
|
1386
1394
|
let isValid = false;
|
@@ -1431,10 +1439,12 @@ function createFormControl(props = {}) {
|
|
1431
1439
|
set(_formValues, name, values);
|
1432
1440
|
}
|
1433
1441
|
};
|
1434
|
-
const updateErrors = (name, error) =>
|
1442
|
+
const updateErrors = (name, error) => {
|
1443
|
+
set(_formState.errors, name, error);
|
1435
1444
|
_subjects.state.next({
|
1436
1445
|
errors: _formState.errors,
|
1437
|
-
})
|
1446
|
+
});
|
1447
|
+
};
|
1438
1448
|
const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {
|
1439
1449
|
const field = get(_fields, name);
|
1440
1450
|
if (field) {
|
@@ -1480,24 +1490,23 @@ function createFormControl(props = {}) {
|
|
1480
1490
|
isFieldDirty && shouldRender && _subjects.state.next(output);
|
1481
1491
|
return isFieldDirty ? output : {};
|
1482
1492
|
};
|
1483
|
-
const shouldRenderByError = async (
|
1493
|
+
const shouldRenderByError = async (name, isValid, error, fieldState) => {
|
1484
1494
|
const previousFieldError = get(_formState.errors, name);
|
1485
1495
|
const shouldUpdateValid = _proxyFormState.isValid && _formState.isValid !== isValid;
|
1486
1496
|
if (props.delayError && error) {
|
1487
|
-
delayErrorCallback =
|
1488
|
-
|
1489
|
-
delayErrorCallback(name, error);
|
1497
|
+
delayErrorCallback = debounce(() => updateErrors(name, error));
|
1498
|
+
delayErrorCallback(props.delayError);
|
1490
1499
|
}
|
1491
1500
|
else {
|
1492
1501
|
clearTimeout(timer);
|
1502
|
+
delayErrorCallback = null;
|
1493
1503
|
error
|
1494
1504
|
? set(_formState.errors, name, error)
|
1495
1505
|
: unset(_formState.errors, name);
|
1496
1506
|
}
|
1497
|
-
if ((
|
1507
|
+
if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||
|
1498
1508
|
!isEmptyObject(fieldState) ||
|
1499
|
-
shouldUpdateValid)
|
1500
|
-
!shouldSkipRender) {
|
1509
|
+
shouldUpdateValid) {
|
1501
1510
|
const updatedFormState = {
|
1502
1511
|
...fieldState,
|
1503
1512
|
...(shouldUpdateValid ? { isValid } : {}),
|
@@ -1699,6 +1708,7 @@ function createFormControl(props = {}) {
|
|
1699
1708
|
set(_formValues, name, fieldValue);
|
1700
1709
|
if (isBlurEvent) {
|
1701
1710
|
field._f.onBlur && field._f.onBlur(event);
|
1711
|
+
delayErrorCallback && delayErrorCallback(0);
|
1702
1712
|
}
|
1703
1713
|
else if (field._f.onChange) {
|
1704
1714
|
field._f.onChange(event);
|
@@ -1733,7 +1743,7 @@ function createFormControl(props = {}) {
|
|
1733
1743
|
}
|
1734
1744
|
field._f.deps &&
|
1735
1745
|
trigger(field._f.deps);
|
1736
|
-
shouldRenderByError(
|
1746
|
+
shouldRenderByError(name, isValid, error, fieldState);
|
1737
1747
|
}
|
1738
1748
|
};
|
1739
1749
|
const trigger = async (name, options = {}) => {
|