react-hook-form 7.45.4 → 7.46.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 +6 -6
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.mjs +33 -10
- 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/iterateFieldsByAction.d.ts +4 -0
- package/dist/logic/iterateFieldsByAction.d.ts.map +1 -0
- package/dist/logic/shouldSubscribeByName.d.ts.map +1 -1
- package/dist/types/controller.d.ts +2 -0
- package/dist/types/controller.d.ts.map +1 -1
- package/dist/types/form.d.ts +11 -1
- package/dist/types/form.d.ts.map +1 -1
- package/dist/useController.d.ts.map +1 -1
- package/package.json +1 -2
package/dist/index.esm.mjs
CHANGED
@@ -198,7 +198,9 @@ var shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, is
|
|
198
198
|
var convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);
|
199
199
|
|
200
200
|
var shouldSubscribeByName = (name, signalName, exact) => exact && signalName
|
201
|
-
? name === signalName
|
201
|
+
? name === signalName ||
|
202
|
+
(Array.isArray(name) &&
|
203
|
+
name.some((currentName) => currentName && exact && currentName === signalName))
|
202
204
|
: !name ||
|
203
205
|
!signalName ||
|
204
206
|
name === signalName ||
|
@@ -390,7 +392,7 @@ function set(object, path, value) {
|
|
390
392
|
*/
|
391
393
|
function useController(props) {
|
392
394
|
const methods = useFormContext();
|
393
|
-
const { name, control = methods.control, shouldUnregister } = props;
|
395
|
+
const { name, disabled, control = methods.control, shouldUnregister } = props;
|
394
396
|
const isArrayField = isNameInFieldArray(control._names.array, name);
|
395
397
|
const value = useWatch({
|
396
398
|
control,
|
@@ -431,6 +433,13 @@ function useController(props) {
|
|
431
433
|
: updateMounted(name, false);
|
432
434
|
};
|
433
435
|
}, [name, control, isArrayField, shouldUnregister]);
|
436
|
+
React.useEffect(() => {
|
437
|
+
control._updateDisabledField({
|
438
|
+
disabled,
|
439
|
+
fields: control._fields,
|
440
|
+
name,
|
441
|
+
});
|
442
|
+
}, [disabled, name, control]);
|
434
443
|
return {
|
435
444
|
field: {
|
436
445
|
name,
|
@@ -1690,7 +1699,7 @@ function createFormControl(props = {}, flushRootRender) {
|
|
1690
1699
|
};
|
1691
1700
|
const _executeSchema = async (name) => _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));
|
1692
1701
|
const executeSchemaAndUpdateState = async (names) => {
|
1693
|
-
const { errors } = await _executeSchema();
|
1702
|
+
const { errors } = await _executeSchema(names);
|
1694
1703
|
if (names) {
|
1695
1704
|
for (const name of names) {
|
1696
1705
|
const error = get(errors, name);
|
@@ -2018,6 +2027,15 @@ function createFormControl(props = {}, flushRootRender) {
|
|
2018
2027
|
});
|
2019
2028
|
!options.keepIsValid && _updateValid();
|
2020
2029
|
};
|
2030
|
+
const _updateDisabledField = ({ disabled, name, field, fields, }) => {
|
2031
|
+
if (isBoolean(disabled)) {
|
2032
|
+
const value = disabled
|
2033
|
+
? undefined
|
2034
|
+
: get(_formValues, name, getFieldValue(field ? field._f : get(fields, name)._f));
|
2035
|
+
set(_formValues, name, value);
|
2036
|
+
updateTouchAndDirty(name, value, false, false, true);
|
2037
|
+
}
|
2038
|
+
};
|
2021
2039
|
const register = (name, options = {}) => {
|
2022
2040
|
let field = get(_fields, name);
|
2023
2041
|
const disabledIsDefined = isBoolean(options.disabled);
|
@@ -2031,12 +2049,16 @@ function createFormControl(props = {}, flushRootRender) {
|
|
2031
2049
|
},
|
2032
2050
|
});
|
2033
2051
|
_names.mount.add(name);
|
2034
|
-
field
|
2035
|
-
|
2036
|
-
|
2037
|
-
|
2038
|
-
|
2039
|
-
|
2052
|
+
if (field) {
|
2053
|
+
_updateDisabledField({
|
2054
|
+
field,
|
2055
|
+
disabled: options.disabled,
|
2056
|
+
name,
|
2057
|
+
});
|
2058
|
+
}
|
2059
|
+
else {
|
2060
|
+
updateValidAndValue(name, true, options.value);
|
2061
|
+
}
|
2040
2062
|
return {
|
2041
2063
|
...(disabledIsDefined ? { disabled: options.disabled } : {}),
|
2042
2064
|
...(_options.progressive
|
@@ -2164,7 +2186,7 @@ function createFormControl(props = {}, flushRootRender) {
|
|
2164
2186
|
}
|
2165
2187
|
};
|
2166
2188
|
const _reset = (formValues, keepStateOptions = {}) => {
|
2167
|
-
const updatedValues = formValues
|
2189
|
+
const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;
|
2168
2190
|
const cloneUpdatedValues = cloneObject(updatedValues);
|
2169
2191
|
const values = formValues && !isEmptyObject(formValues)
|
2170
2192
|
? cloneUpdatedValues
|
@@ -2289,6 +2311,7 @@ function createFormControl(props = {}, flushRootRender) {
|
|
2289
2311
|
_updateValid,
|
2290
2312
|
_removeUnmounted,
|
2291
2313
|
_updateFieldArray,
|
2314
|
+
_updateDisabledField,
|
2292
2315
|
_getFieldArray,
|
2293
2316
|
_reset,
|
2294
2317
|
_resetDefaultValues,
|