react-hook-form 7.82.0 → 7.84.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 +2 -2
- package/dist/fieldArray.d.ts +2 -1
- package/dist/fieldArray.d.ts.map +1 -1
- package/dist/form.d.ts +1 -1
- package/dist/form.d.ts.map +1 -1
- package/dist/formStateSubscribe.d.ts +8 -3
- package/dist/formStateSubscribe.d.ts.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.mjs +150 -82
- 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/collectDirtyFieldNames.d.ts +3 -0
- package/dist/logic/collectDirtyFieldNames.d.ts.map +1 -0
- package/dist/logic/createFormControl.d.ts.map +1 -1
- package/dist/logic/getEventValue.d.ts.map +1 -1
- package/dist/logic/getFieldValue.d.ts.map +1 -1
- package/dist/logic/getValueAndMessage.d.ts +1 -4
- package/dist/logic/getValueAndMessage.d.ts.map +1 -1
- package/dist/logic/iterateFieldsByAction.d.ts.map +1 -1
- package/dist/logic/shouldRenderFormState.d.ts.map +1 -1
- package/dist/react-server.esm.mjs +69 -27
- package/dist/react-server.esm.mjs.map +1 -1
- package/dist/types/errors.d.ts +2 -2
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/form.d.ts +62 -61
- package/dist/types/form.d.ts.map +1 -1
- package/dist/types/path/common.d.ts +6 -0
- package/dist/types/path/common.d.ts.map +1 -1
- package/dist/types/path/eager.d.ts +15 -11
- package/dist/types/path/eager.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 +1 -1
- package/dist/types/validator.d.ts.map +1 -1
- package/dist/types/watch.d.ts +1 -1
- package/dist/types/watch.d.ts.map +1 -1
- package/dist/useFormState.d.ts +2 -2
- package/dist/useWatch.d.ts +14 -14
- package/dist/utils/formData.d.ts +3 -0
- package/dist/utils/formData.d.ts.map +1 -0
- package/dist/utils/json.d.ts +9 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/package.json +1 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectDirtyFieldNames.d.ts","sourceRoot":"","sources":["../../src/logic/collectDirtyFieldNames.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAQ5C,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,SAAS,EAAE,WAAW,EACtB,iBAAiB,EAAE,WAAW,EAC9B,MAAM,SAAK,EACX,KAAK,GAAE,MAAM,EAAO,YAiBrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createFormControl.d.ts","sourceRoot":"","sources":["../../src/logic/createFormControl.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAcV,WAAW,EAkBX,YAAY,EAKZ,aAAa,EAYd,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"createFormControl.d.ts","sourceRoot":"","sources":["../../src/logic/createFormControl.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAcV,WAAW,EAkBX,YAAY,EAKZ,aAAa,EAYd,MAAM,UAAU,CAAC;AAwElB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;CAY9B,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,QAAQ,GAAG,GAAG,EACd,kBAAkB,GAAG,YAAY,EAEjC,KAAK,GAAE,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,CAAM,GACnE,IAAI,CACL,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,CAAC,EACzD,WAAW,CACZ,GAAG;IACF,WAAW,EAAE,IAAI,CACf,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,CAAC,EACzD,WAAW,CACZ,CAAC;CACH,CA83DA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getEventValue.d.ts","sourceRoot":"","sources":["../../src/logic/getEventValue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getEventValue.d.ts","sourceRoot":"","sources":["../../src/logic/getEventValue.ts"],"names":[],"mappings":"yBAMgB,OAAO,OAAO;AAA9B,wBAOY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFieldValue.d.ts","sourceRoot":"","sources":["../../src/logic/getFieldValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"getFieldValue.d.ts","sourceRoot":"","sources":["../../src/logic/getFieldValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAUtC,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,OAoBpD"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import type { ValidationRule } from '../types';
|
|
2
|
-
declare const _default: (validationData?: ValidationRule) =>
|
|
3
|
-
value: string | number | boolean | RegExp | undefined;
|
|
4
|
-
message: string;
|
|
5
|
-
};
|
|
2
|
+
declare const _default: (validationData?: ValidationRule) => import("..").ValidationValueMessage<import("..").ValidationValue>;
|
|
6
3
|
export default _default;
|
|
7
4
|
//# sourceMappingURL=getValueAndMessage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getValueAndMessage.d.ts","sourceRoot":"","sources":["../../src/logic/getValueAndMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;yBAI/B,iBAAiB,cAAc
|
|
1
|
+
{"version":3,"file":"getValueAndMessage.d.ts","sourceRoot":"","sources":["../../src/logic/getValueAndMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;yBAI/B,iBAAiB,cAAc;AAA/C,wBAMQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iterateFieldsByAction.d.ts","sourceRoot":"","sources":["../../src/logic/iterateFieldsByAction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAIlE,QAAA,MAAM,qBAAqB,GACzB,QAAQ,SAAS,EACjB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,IAAI,EACxD,cAAc,GAAG,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,EAAE,GAAG,CAAC,EAC9D,aAAa,OAAO,
|
|
1
|
+
{"version":3,"file":"iterateFieldsByAction.d.ts","sourceRoot":"","sources":["../../src/logic/iterateFieldsByAction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAIlE,QAAA,MAAM,qBAAqB,GACzB,QAAQ,SAAS,EACjB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,IAAI,EACxD,cAAc,GAAG,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,EAAE,GAAG,CAAC,EAC9D,aAAa,OAAO,qBA8BrB,CAAC;AACF,eAAe,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shouldRenderFormState.d.ts","sourceRoot":"","sources":["../../src/logic/shouldRenderFormState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,aAAa,EACd,MAAM,UAAU,CAAC;yBAEF,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,aAAa,EAC5D,eAAe,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG;IACrC,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,CAAC;CACZ,EACD,iBAAiB,CAAC,EAClB,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAC3D,SAAS,OAAO;AAPlB,
|
|
1
|
+
{"version":3,"file":"shouldRenderFormState.d.ts","sourceRoot":"","sources":["../../src/logic/shouldRenderFormState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,aAAa,EACd,MAAM,UAAU,CAAC;yBAEF,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,aAAa,EAC5D,eAAe,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG;IACrC,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,CAAC;CACZ,EACD,iBAAiB,CAAC,EAClB,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAC3D,SAAS,OAAO;AAPlB,wBAqBE"}
|
|
@@ -281,7 +281,7 @@ var set = (object, path, value) => {
|
|
|
281
281
|
};
|
|
282
282
|
|
|
283
283
|
function baseGet(object, updatePath) {
|
|
284
|
-
const length = updatePath.
|
|
284
|
+
const length = updatePath.length - 1;
|
|
285
285
|
let index = 0;
|
|
286
286
|
while (index < length) {
|
|
287
287
|
if (isNullOrUndefined(object)) {
|
|
@@ -328,6 +328,24 @@ function unset(object, path) {
|
|
|
328
328
|
return object;
|
|
329
329
|
}
|
|
330
330
|
|
|
331
|
+
function isDirtyContainer(value) {
|
|
332
|
+
return Array.isArray(value) || isObject(value);
|
|
333
|
+
}
|
|
334
|
+
function collectDirtyFieldNames(dirtyTree, cachedDirtyFields, prefix = '', names = []) {
|
|
335
|
+
for (const key in dirtyTree) {
|
|
336
|
+
const path = prefix ? `${prefix}.${key}` : key;
|
|
337
|
+
const value = dirtyTree[key];
|
|
338
|
+
if (isDirtyContainer(value) &&
|
|
339
|
+
isDirtyContainer(get(cachedDirtyFields, path))) {
|
|
340
|
+
collectDirtyFieldNames(value, cachedDirtyFields, path, names);
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
names.push(path);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return names;
|
|
347
|
+
}
|
|
348
|
+
|
|
331
349
|
var generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {
|
|
332
350
|
if (isString(names)) {
|
|
333
351
|
isGlobal && _names.watch.add(names);
|
|
@@ -419,7 +437,9 @@ function getDirtyFields(data, formValues, dirtyFieldsFromValues, fieldRefs) {
|
|
|
419
437
|
var getEventValue = (event) => isObject(event) && event.target
|
|
420
438
|
? isCheckBoxInput(event.target)
|
|
421
439
|
? event.target.checked
|
|
422
|
-
: event.target
|
|
440
|
+
: isFileInput(event.target)
|
|
441
|
+
? event.target.files
|
|
442
|
+
: event.target.value
|
|
423
443
|
: event;
|
|
424
444
|
|
|
425
445
|
const defaultResult = {
|
|
@@ -488,7 +508,7 @@ function getFieldValue(_f) {
|
|
|
488
508
|
if (isCheckBoxInput(ref)) {
|
|
489
509
|
return getCheckboxValue(_f.refs).value;
|
|
490
510
|
}
|
|
491
|
-
return getFieldValueAs(
|
|
511
|
+
return getFieldValueAs(ref.value, _f);
|
|
492
512
|
}
|
|
493
513
|
|
|
494
514
|
var getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {
|
|
@@ -570,9 +590,12 @@ var isWatched = (name, _names, isBlurEvent) => {
|
|
|
570
590
|
|
|
571
591
|
const iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {
|
|
572
592
|
for (const key of fieldsNames || Object.keys(fields)) {
|
|
573
|
-
|
|
593
|
+
if (key === '_f') {
|
|
594
|
+
continue;
|
|
595
|
+
}
|
|
596
|
+
const field = fieldsNames ? get(fields, key) : fields[key];
|
|
574
597
|
if (field) {
|
|
575
|
-
const { _f
|
|
598
|
+
const { _f } = field;
|
|
576
599
|
if (_f) {
|
|
577
600
|
if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {
|
|
578
601
|
return true;
|
|
@@ -581,13 +604,13 @@ const iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {
|
|
|
581
604
|
return true;
|
|
582
605
|
}
|
|
583
606
|
else {
|
|
584
|
-
if (iterateFieldsByAction(
|
|
607
|
+
if (iterateFieldsByAction(field, action)) {
|
|
585
608
|
break;
|
|
586
609
|
}
|
|
587
610
|
}
|
|
588
611
|
}
|
|
589
|
-
else if (isObject(
|
|
590
|
-
if (iterateFieldsByAction(
|
|
612
|
+
else if (isObject(field) || Array.isArray(field)) {
|
|
613
|
+
if (iterateFieldsByAction(field, action)) {
|
|
591
614
|
break;
|
|
592
615
|
}
|
|
593
616
|
}
|
|
@@ -633,8 +656,7 @@ function schemaErrorLookup(errors, _fields, name) {
|
|
|
633
656
|
|
|
634
657
|
var shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, isRoot) => {
|
|
635
658
|
updateFormState(formStateData);
|
|
636
|
-
const
|
|
637
|
-
const keys = Object.keys(formState);
|
|
659
|
+
const keys = Object.keys(formStateData).filter((key) => key !== 'name');
|
|
638
660
|
return (!keys.length ||
|
|
639
661
|
(isRoot && keys.length >= Object.keys(_proxyFormState).length) ||
|
|
640
662
|
keys.find((key) => _proxyFormState[key] ===
|
|
@@ -886,6 +908,14 @@ const defaultOptions = {
|
|
|
886
908
|
shouldFocusError: true,
|
|
887
909
|
};
|
|
888
910
|
const FORM_ERROR_TYPE = 'form';
|
|
911
|
+
const updateDirtyFields = (dirtyFields, nextDirtyFields) => {
|
|
912
|
+
for (const key in dirtyFields) {
|
|
913
|
+
if (!(key in nextDirtyFields)) {
|
|
914
|
+
delete dirtyFields[key];
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
Object.assign(dirtyFields, nextDirtyFields);
|
|
918
|
+
};
|
|
889
919
|
const DEFAULT_FORM_STATE = {
|
|
890
920
|
submitCount: 0,
|
|
891
921
|
isDirty: false,
|
|
@@ -1128,7 +1158,7 @@ function createFormControl(props = {}) {
|
|
|
1128
1158
|
}
|
|
1129
1159
|
isPreviousDirty = !!get(_formState.dirtyFields, name);
|
|
1130
1160
|
if (isCurrentFieldPristine !== _formState.isDirty) {
|
|
1131
|
-
_formState.dirtyFields
|
|
1161
|
+
updateDirtyFields(_formState.dirtyFields, getDirtyFields(_defaultValues, _formValues, undefined, _fields));
|
|
1132
1162
|
}
|
|
1133
1163
|
else {
|
|
1134
1164
|
isCurrentFieldPristine
|
|
@@ -1389,6 +1419,12 @@ function createFormControl(props = {}) {
|
|
|
1389
1419
|
});
|
|
1390
1420
|
};
|
|
1391
1421
|
const setFieldValues = (name, value, options, skipClone = false, skipRender = false) => {
|
|
1422
|
+
if (_names.array.has(name)) {
|
|
1423
|
+
_subjects.array.next({
|
|
1424
|
+
name,
|
|
1425
|
+
values: skipClone ? _formValues : cloneObject(_formValues),
|
|
1426
|
+
});
|
|
1427
|
+
}
|
|
1392
1428
|
for (const fieldKey in value) {
|
|
1393
1429
|
if (!value.hasOwnProperty(fieldKey)) {
|
|
1394
1430
|
return;
|
|
@@ -1685,8 +1721,9 @@ function createFormControl(props = {}) {
|
|
|
1685
1721
|
});
|
|
1686
1722
|
}
|
|
1687
1723
|
else {
|
|
1724
|
+
_formState.errors = {};
|
|
1688
1725
|
_subjects.state.next({
|
|
1689
|
-
errors:
|
|
1726
|
+
errors: _formState.errors,
|
|
1690
1727
|
});
|
|
1691
1728
|
}
|
|
1692
1729
|
};
|
|
@@ -1871,20 +1908,23 @@ function createFormControl(props = {}) {
|
|
|
1871
1908
|
: fieldRef === field._f.ref) {
|
|
1872
1909
|
return;
|
|
1873
1910
|
}
|
|
1911
|
+
const newField = {
|
|
1912
|
+
...field._f,
|
|
1913
|
+
};
|
|
1914
|
+
if (radioOrCheckbox) {
|
|
1915
|
+
newField.refs = [
|
|
1916
|
+
...refs.filter(live),
|
|
1917
|
+
fieldRef,
|
|
1918
|
+
...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),
|
|
1919
|
+
];
|
|
1920
|
+
newField.ref = { type: fieldRef.type, name };
|
|
1921
|
+
}
|
|
1922
|
+
else {
|
|
1923
|
+
newField.ref = fieldRef;
|
|
1924
|
+
delete newField.refs;
|
|
1925
|
+
}
|
|
1874
1926
|
set(_fields, name, {
|
|
1875
|
-
_f:
|
|
1876
|
-
...field._f,
|
|
1877
|
-
...(radioOrCheckbox
|
|
1878
|
-
? {
|
|
1879
|
-
refs: [
|
|
1880
|
-
...refs.filter(live),
|
|
1881
|
-
fieldRef,
|
|
1882
|
-
...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),
|
|
1883
|
-
],
|
|
1884
|
-
ref: { type: fieldRef.type, name },
|
|
1885
|
-
}
|
|
1886
|
-
: { ref: fieldRef }),
|
|
1887
|
-
},
|
|
1927
|
+
_f: newField,
|
|
1888
1928
|
});
|
|
1889
1929
|
updateValidAndValue(name, false, undefined, fieldRef);
|
|
1890
1930
|
}
|
|
@@ -1920,6 +1960,7 @@ function createFormControl(props = {}) {
|
|
|
1920
1960
|
}
|
|
1921
1961
|
};
|
|
1922
1962
|
const handleSubmit = (onValid, onInvalid) => async (e) => {
|
|
1963
|
+
let result = undefined;
|
|
1923
1964
|
let onValidError = undefined;
|
|
1924
1965
|
if (e) {
|
|
1925
1966
|
e.preventDefault && e.preventDefault();
|
|
@@ -1953,7 +1994,7 @@ function createFormControl(props = {}) {
|
|
|
1953
1994
|
errors: {},
|
|
1954
1995
|
});
|
|
1955
1996
|
try {
|
|
1956
|
-
await onValid(fieldValues, e);
|
|
1997
|
+
result = await onValid(fieldValues, e);
|
|
1957
1998
|
}
|
|
1958
1999
|
catch (error) {
|
|
1959
2000
|
onValidError = error;
|
|
@@ -1976,6 +2017,7 @@ function createFormControl(props = {}) {
|
|
|
1976
2017
|
if (onValidError) {
|
|
1977
2018
|
throw onValidError;
|
|
1978
2019
|
}
|
|
2020
|
+
return result;
|
|
1979
2021
|
};
|
|
1980
2022
|
const resetField = (name, options = {}) => {
|
|
1981
2023
|
if (get(_fields, name)) {
|
|
@@ -2015,7 +2057,7 @@ function createFormControl(props = {}) {
|
|
|
2015
2057
|
if (keepStateOptions.keepDirtyValues) {
|
|
2016
2058
|
const fieldsToCheck = new Set([
|
|
2017
2059
|
..._names.mount,
|
|
2018
|
-
...
|
|
2060
|
+
...collectDirtyFieldNames(getDirtyFields(_defaultValues, _formValues, undefined, fieldRefs), _formState.dirtyFields),
|
|
2019
2061
|
]);
|
|
2020
2062
|
for (const fieldName of Array.from(fieldsToCheck)) {
|
|
2021
2063
|
const isDirty = get(_formState.dirtyFields, fieldName);
|