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.
@@ -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
- ? disabledIsDefined &&
2036
- set(_formValues, name, options.disabled
2037
- ? undefined
2038
- : get(_formValues, name, getFieldValue(field._f)))
2039
- : updateValidAndValue(name, true, options.value);
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 || _defaultValues;
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,