react-hook-form 7.31.2 → 7.32.1
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 +28 -24
- 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/focusFieldBy.d.ts +2 -2
- package/dist/logic/focusFieldBy.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/getCheckboxValue.d.ts +1 -1
- package/dist/logic/getCheckboxValue.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/getRadioValue.d.ts +1 -1
- package/dist/logic/getRadioValue.d.ts.map +1 -1
- package/dist/logic/getResolverOptions.d.ts +2 -2
- 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/getValueAndMessage.d.ts +1 -1
- package/dist/logic/getValueAndMessage.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/shouldRenderFormState.d.ts +1 -1
- package/dist/logic/shouldRenderFormState.d.ts.map +1 -1
- package/dist/logic/shouldSubscribeByName.d.ts +1 -1
- package/dist/logic/shouldSubscribeByName.d.ts.map +1 -1
- package/dist/logic/validateField.d.ts +1 -1
- package/dist/logic/validateField.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 +13 -13
- 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/getValidationModes.d.ts +2 -1
- package/dist/utils/getValidationModes.d.ts.map +1 -1
- package/dist/utils/isHTMLElement.d.ts.map +1 -1
- package/dist/utils/remove.d.ts +1 -1
- package/dist/utils/remove.d.ts.map +1 -1
- package/package.json +14 -13
package/dist/index.esm.mjs
CHANGED
@@ -558,6 +558,10 @@ function append(data, value) {
|
|
558
558
|
return [...data, ...convertToArrayPayload(value)];
|
559
559
|
}
|
560
560
|
|
561
|
+
var isWeb = typeof window !== 'undefined' &&
|
562
|
+
typeof window.HTMLElement !== 'undefined' &&
|
563
|
+
typeof document !== 'undefined';
|
564
|
+
|
561
565
|
function cloneObject(data) {
|
562
566
|
let copy;
|
563
567
|
const isArray = Array.isArray(data);
|
@@ -567,16 +571,15 @@ function cloneObject(data) {
|
|
567
571
|
else if (data instanceof Set) {
|
568
572
|
copy = new Set(data);
|
569
573
|
}
|
570
|
-
else if (
|
571
|
-
|
572
|
-
}
|
573
|
-
else if (globalThis.FileList && data instanceof FileList) {
|
574
|
-
copy = data;
|
575
|
-
}
|
576
|
-
else if (isArray || isObject(data)) {
|
574
|
+
else if (!(isWeb && (data instanceof Blob || data instanceof FileList)) &&
|
575
|
+
(isArray || isObject(data))) {
|
577
576
|
copy = isArray ? [] : {};
|
578
577
|
for (const key in data) {
|
579
|
-
|
578
|
+
if (isFunction(data[key])) {
|
579
|
+
copy = data;
|
580
|
+
break;
|
581
|
+
}
|
582
|
+
copy[key] = cloneObject(data[key]);
|
580
583
|
}
|
581
584
|
}
|
582
585
|
else {
|
@@ -939,7 +942,11 @@ var isBoolean = (value) => typeof value === 'boolean';
|
|
939
942
|
|
940
943
|
var isFileInput = (element) => element.type === 'file';
|
941
944
|
|
942
|
-
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
|
+
};
|
943
950
|
|
944
951
|
var isMultipleSelect = (element) => element.type === `select-multiple`;
|
945
952
|
|
@@ -947,10 +954,6 @@ var isRadioInput = (element) => element.type === 'radio';
|
|
947
954
|
|
948
955
|
var isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);
|
949
956
|
|
950
|
-
var isWeb = typeof window !== 'undefined' &&
|
951
|
-
typeof window.HTMLElement !== 'undefined' &&
|
952
|
-
typeof document !== 'undefined';
|
953
|
-
|
954
957
|
var live = (ref) => isHTMLElement(ref) && ref.isConnected;
|
955
958
|
|
956
959
|
function markFieldsDirty(data, fields = {}) {
|
@@ -1022,7 +1025,7 @@ var getCheckboxValue = (options) => {
|
|
1022
1025
|
var getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)
|
1023
1026
|
? value
|
1024
1027
|
: valueAsNumber
|
1025
|
-
? value === ''
|
1028
|
+
? value === '' || isNullOrUndefined(value)
|
1026
1029
|
? NaN
|
1027
1030
|
: +value
|
1028
1031
|
: valueAsDate && isString(value)
|
@@ -1222,7 +1225,7 @@ var validateField = async (field, inputValue, validateAllFieldCriteria, shouldUs
|
|
1222
1225
|
let exceedMin;
|
1223
1226
|
const maxOutput = getValueAndMessage(max);
|
1224
1227
|
const minOutput = getValueAndMessage(min);
|
1225
|
-
if (!isNaN(inputValue)) {
|
1228
|
+
if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {
|
1226
1229
|
const valueNumber = ref.valueAsNumber || +inputValue;
|
1227
1230
|
if (!isNullOrUndefined(maxOutput.value)) {
|
1228
1231
|
exceedMax = valueNumber > maxOutput.value;
|
@@ -1383,9 +1386,9 @@ function createFormControl(props = {}) {
|
|
1383
1386
|
const validationModeBeforeSubmit = getValidationModes(_options.mode);
|
1384
1387
|
const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);
|
1385
1388
|
const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;
|
1386
|
-
const debounce = (callback
|
1389
|
+
const debounce = (callback) => (wait) => {
|
1387
1390
|
clearTimeout(timer);
|
1388
|
-
timer = window.setTimeout(
|
1391
|
+
timer = window.setTimeout(callback, wait);
|
1389
1392
|
};
|
1390
1393
|
const _updateValid = async (shouldSkipRender) => {
|
1391
1394
|
let isValid = false;
|
@@ -1485,24 +1488,24 @@ function createFormControl(props = {}) {
|
|
1485
1488
|
isFieldDirty && shouldRender && _subjects.state.next(output);
|
1486
1489
|
return isFieldDirty ? output : {};
|
1487
1490
|
};
|
1488
|
-
const shouldRenderByError = async (
|
1491
|
+
const shouldRenderByError = async (name, isValid, error, fieldState) => {
|
1489
1492
|
const previousFieldError = get(_formState.errors, name);
|
1490
1493
|
const shouldUpdateValid = _proxyFormState.isValid && _formState.isValid !== isValid;
|
1491
1494
|
if (props.delayError && error) {
|
1492
1495
|
delayErrorCallback =
|
1493
|
-
delayErrorCallback || debounce(updateErrors,
|
1494
|
-
delayErrorCallback(
|
1496
|
+
delayErrorCallback || debounce(() => updateErrors(name, error));
|
1497
|
+
delayErrorCallback(props.delayError);
|
1495
1498
|
}
|
1496
1499
|
else {
|
1497
1500
|
clearTimeout(timer);
|
1501
|
+
delayErrorCallback = null;
|
1498
1502
|
error
|
1499
1503
|
? set(_formState.errors, name, error)
|
1500
1504
|
: unset(_formState.errors, name);
|
1501
1505
|
}
|
1502
|
-
if ((
|
1506
|
+
if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||
|
1503
1507
|
!isEmptyObject(fieldState) ||
|
1504
|
-
shouldUpdateValid)
|
1505
|
-
!shouldSkipRender) {
|
1508
|
+
shouldUpdateValid) {
|
1506
1509
|
const updatedFormState = {
|
1507
1510
|
...fieldState,
|
1508
1511
|
...(shouldUpdateValid ? { isValid } : {}),
|
@@ -1704,6 +1707,7 @@ function createFormControl(props = {}) {
|
|
1704
1707
|
set(_formValues, name, fieldValue);
|
1705
1708
|
if (isBlurEvent) {
|
1706
1709
|
field._f.onBlur && field._f.onBlur(event);
|
1710
|
+
delayErrorCallback && delayErrorCallback(0);
|
1707
1711
|
}
|
1708
1712
|
else if (field._f.onChange) {
|
1709
1713
|
field._f.onChange(event);
|
@@ -1738,7 +1742,7 @@ function createFormControl(props = {}) {
|
|
1738
1742
|
}
|
1739
1743
|
field._f.deps &&
|
1740
1744
|
trigger(field._f.deps);
|
1741
|
-
shouldRenderByError(
|
1745
|
+
shouldRenderByError(name, isValid, error, fieldState);
|
1742
1746
|
}
|
1743
1747
|
};
|
1744
1748
|
const trigger = async (name, options = {}) => {
|