react-hook-form 7.72.0 → 7.72.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/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.mjs +58 -46
- 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/isNameInFieldArray.d.ts.map +1 -1
- package/dist/react-server.esm.mjs +19 -8
- package/dist/react-server.esm.mjs.map +1 -1
- package/dist/types/form.d.ts +1 -0
- package/dist/types/form.d.ts.map +1 -1
- package/dist/useFormContext.d.ts.map +1 -1
- package/package.json +20 -20
package/dist/index.esm.mjs
CHANGED
|
@@ -18,9 +18,9 @@ var getEventValue = (event) => isObject(event) && event.target
|
|
|
18
18
|
: event.target.value
|
|
19
19
|
: event;
|
|
20
20
|
|
|
21
|
-
var
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
var isNameInFieldArray = (names, name) => name
|
|
22
|
+
.split('.')
|
|
23
|
+
.some((part, index, arr) => !isNaN(Number(part)) && names.has(arr.slice(0, index).join('.')));
|
|
24
24
|
|
|
25
25
|
var isPlainObject = (tempObject) => {
|
|
26
26
|
const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;
|
|
@@ -264,8 +264,8 @@ function deepEqual(object1, object2, _internal_visited = new WeakSet()) {
|
|
|
264
264
|
if (key !== 'ref') {
|
|
265
265
|
const val2 = object2[key];
|
|
266
266
|
if ((isDateObject(val1) && isDateObject(val2)) ||
|
|
267
|
-
(isObject(val1)
|
|
268
|
-
|
|
267
|
+
((isObject(val1) || Array.isArray(val1)) &&
|
|
268
|
+
(isObject(val2) || Array.isArray(val2)))
|
|
269
269
|
? !deepEqual(val1, val2, _internal_visited)
|
|
270
270
|
: !Object.is(val1, val2)) {
|
|
271
271
|
return false;
|
|
@@ -640,42 +640,43 @@ const useFormContext = () => React.useContext(HookFormContext);
|
|
|
640
640
|
*/
|
|
641
641
|
const FormProvider = (props) => {
|
|
642
642
|
const { children, watch, getValues, getFieldState, setError, clearErrors, setValue, trigger, formState, resetField, reset, handleSubmit, unregister, control, register, setFocus, subscribe, } = props;
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
643
|
+
const memoizedValue = React.useMemo(() => ({
|
|
644
|
+
watch,
|
|
645
|
+
getValues,
|
|
646
|
+
getFieldState,
|
|
647
|
+
setError,
|
|
648
|
+
clearErrors,
|
|
649
|
+
setValue,
|
|
650
|
+
trigger,
|
|
651
|
+
formState,
|
|
652
|
+
resetField,
|
|
653
|
+
reset,
|
|
654
|
+
handleSubmit,
|
|
655
|
+
unregister,
|
|
656
|
+
control,
|
|
657
|
+
register,
|
|
658
|
+
setFocus,
|
|
659
|
+
subscribe,
|
|
660
|
+
}), [
|
|
661
|
+
clearErrors,
|
|
662
|
+
control,
|
|
663
|
+
formState,
|
|
664
|
+
getFieldState,
|
|
665
|
+
getValues,
|
|
666
|
+
handleSubmit,
|
|
667
|
+
register,
|
|
668
|
+
reset,
|
|
669
|
+
resetField,
|
|
670
|
+
setError,
|
|
671
|
+
setFocus,
|
|
672
|
+
setValue,
|
|
673
|
+
subscribe,
|
|
674
|
+
trigger,
|
|
675
|
+
unregister,
|
|
676
|
+
watch,
|
|
677
|
+
]);
|
|
678
|
+
return (React.createElement(HookFormContext.Provider, { value: memoizedValue },
|
|
679
|
+
React.createElement(HookFormControlContext.Provider, { value: memoizedValue.control }, children)));
|
|
679
680
|
};
|
|
680
681
|
|
|
681
682
|
const POST_REQUEST = 'post';
|
|
@@ -1014,6 +1015,8 @@ function getFieldValue(_f) {
|
|
|
1014
1015
|
return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);
|
|
1015
1016
|
}
|
|
1016
1017
|
|
|
1018
|
+
var getNodeParentName = (name) => name.substring(0, name.search(/\.\d+(\.|$)/)) || name;
|
|
1019
|
+
|
|
1017
1020
|
var getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {
|
|
1018
1021
|
const fields = {};
|
|
1019
1022
|
for (const name of fieldsNames) {
|
|
@@ -1420,6 +1423,7 @@ function createFormControl(props = {}) {
|
|
|
1420
1423
|
unMount: new Set(),
|
|
1421
1424
|
array: new Set(),
|
|
1422
1425
|
watch: new Set(),
|
|
1426
|
+
registerName: new Set(),
|
|
1423
1427
|
};
|
|
1424
1428
|
let delayErrorCallback;
|
|
1425
1429
|
let timer = 0;
|
|
@@ -1493,6 +1497,11 @@ function createFormControl(props = {}) {
|
|
|
1493
1497
|
});
|
|
1494
1498
|
}
|
|
1495
1499
|
};
|
|
1500
|
+
const _updateDirtyFields = (name) => {
|
|
1501
|
+
const fullDirtyFields = getDirtyFields(_defaultValues, _formValues);
|
|
1502
|
+
const rootName = getNodeParentName(name);
|
|
1503
|
+
set(_formState.dirtyFields, rootName, get(fullDirtyFields, rootName));
|
|
1504
|
+
};
|
|
1496
1505
|
const _setFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {
|
|
1497
1506
|
if (args && method && !_options.disabled) {
|
|
1498
1507
|
_state.action = true;
|
|
@@ -1514,9 +1523,7 @@ function createFormControl(props = {}) {
|
|
|
1514
1523
|
shouldSetValues && set(_formState.touchedFields, name, touchedFields);
|
|
1515
1524
|
}
|
|
1516
1525
|
if (_proxyFormState.dirtyFields || _proxySubscribeFormState.dirtyFields) {
|
|
1517
|
-
|
|
1518
|
-
const rootName = getNodeParentName(name);
|
|
1519
|
-
set(_formState.dirtyFields, rootName, get(fullDirtyFields, rootName));
|
|
1526
|
+
_updateDirtyFields(name);
|
|
1520
1527
|
}
|
|
1521
1528
|
_subjects.state.next({
|
|
1522
1529
|
name,
|
|
@@ -1845,9 +1852,10 @@ function createFormControl(props = {}) {
|
|
|
1845
1852
|
_proxySubscribeFormState.isDirty ||
|
|
1846
1853
|
_proxySubscribeFormState.dirtyFields) &&
|
|
1847
1854
|
options.shouldDirty) {
|
|
1855
|
+
_updateDirtyFields(name);
|
|
1848
1856
|
_subjects.state.next({
|
|
1849
1857
|
name,
|
|
1850
|
-
dirtyFields:
|
|
1858
|
+
dirtyFields: _formState.dirtyFields,
|
|
1851
1859
|
isDirty: _getDirty(name, cloneValue),
|
|
1852
1860
|
});
|
|
1853
1861
|
}
|
|
@@ -2157,6 +2165,7 @@ function createFormControl(props = {}) {
|
|
|
2157
2165
|
const register = (name, options = {}) => {
|
|
2158
2166
|
let field = get(_fields, name);
|
|
2159
2167
|
const disabledIsDefined = isBoolean(options.disabled) || isBoolean(_options.disabled);
|
|
2168
|
+
const shouldRevalidateRemount = !_names.registerName.has(name) && field && !field._f.mount;
|
|
2160
2169
|
set(_fields, name, {
|
|
2161
2170
|
...(field || {}),
|
|
2162
2171
|
_f: {
|
|
@@ -2167,7 +2176,7 @@ function createFormControl(props = {}) {
|
|
|
2167
2176
|
},
|
|
2168
2177
|
});
|
|
2169
2178
|
_names.mount.add(name);
|
|
2170
|
-
if (field) {
|
|
2179
|
+
if (field && !shouldRevalidateRemount) {
|
|
2171
2180
|
_setDisabledField({
|
|
2172
2181
|
disabled: isBoolean(options.disabled)
|
|
2173
2182
|
? options.disabled
|
|
@@ -2197,7 +2206,9 @@ function createFormControl(props = {}) {
|
|
|
2197
2206
|
onBlur: onChange,
|
|
2198
2207
|
ref: (ref) => {
|
|
2199
2208
|
if (ref) {
|
|
2209
|
+
_names.registerName.add(name);
|
|
2200
2210
|
register(name, options);
|
|
2211
|
+
_names.registerName.delete(name);
|
|
2201
2212
|
field = get(_fields, name);
|
|
2202
2213
|
const fieldRef = isUndefined(ref.value)
|
|
2203
2214
|
? ref.querySelectorAll
|
|
@@ -2410,6 +2421,7 @@ function createFormControl(props = {}) {
|
|
|
2410
2421
|
mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),
|
|
2411
2422
|
unMount: new Set(),
|
|
2412
2423
|
array: new Set(),
|
|
2424
|
+
registerName: new Set(),
|
|
2413
2425
|
disabled: new Set(),
|
|
2414
2426
|
watch: new Set(),
|
|
2415
2427
|
watchAll: false,
|