react-hook-form 7.27.1 → 7.28.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.
@@ -733,13 +733,14 @@ function useFieldArray(props) {
733
733
  }, false);
734
734
  };
735
735
  const update = (index, value) => {
736
- const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, value);
736
+ const updateValue = cloneObject(value);
737
+ const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);
737
738
  ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);
738
739
  updateValues(updatedFieldArrayValues);
739
740
  setFields([...updatedFieldArrayValues]);
740
741
  control._updateFieldArray(name, updatedFieldArrayValues, updateAt, {
741
742
  argA: index,
742
- argB: value,
743
+ argB: updateValue,
743
744
  }, true, false);
744
745
  };
745
746
  const replace = (value) => {
@@ -909,9 +910,7 @@ function unset(object, path) {
909
910
  if (currentPathsLength === index &&
910
911
  ((isObject(objectRef) && isEmptyObject(objectRef)) ||
911
912
  (Array.isArray(objectRef) &&
912
- !objectRef.filter((data) => (isObject(data) && !isEmptyObject(data)) ||
913
- isBoolean(data) ||
914
- (Array.isArray(data) && data.length)).length))) {
913
+ !objectRef.filter((data) => !isUndefined(data)).length))) {
915
914
  previousObjRef ? delete previousObjRef[item] : delete object[item];
916
915
  }
917
916
  previousObjRef = objectRef;
@@ -1344,21 +1343,22 @@ function createFormControl(props = {}) {
1344
1343
  }
1345
1344
  return isValid;
1346
1345
  };
1347
- const _updateFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndErrors = true) => {
1346
+ const _updateFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {
1348
1347
  if (args && method) {
1349
1348
  _stateFlags.action = true;
1350
- if (shouldUpdateFieldsAndErrors && Array.isArray(get(_fields, name))) {
1349
+ if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {
1351
1350
  const fieldValues = method(get(_fields, name), args.argA, args.argB);
1352
1351
  shouldSetValues && set(_fields, name, fieldValues);
1353
1352
  }
1354
1353
  if (_proxyFormState.errors &&
1355
- shouldUpdateFieldsAndErrors &&
1354
+ shouldUpdateFieldsAndState &&
1356
1355
  Array.isArray(get(_formState.errors, name))) {
1357
1356
  const errors = method(get(_formState.errors, name), args.argA, args.argB);
1358
1357
  shouldSetValues && set(_formState.errors, name, errors);
1359
1358
  unsetEmptyArray(_formState.errors, name);
1360
1359
  }
1361
1360
  if (_proxyFormState.touchedFields &&
1361
+ shouldUpdateFieldsAndState &&
1362
1362
  Array.isArray(get(_formState.touchedFields, name))) {
1363
1363
  const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);
1364
1364
  shouldSetValues && set(_formState.touchedFields, name, touchedFields);
@@ -1545,9 +1545,10 @@ function createFormControl(props = {}) {
1545
1545
  else if (fieldReference.refs) {
1546
1546
  if (isCheckBoxInput(fieldReference.ref)) {
1547
1547
  fieldReference.refs.length > 1
1548
- ? fieldReference.refs.forEach((checkboxRef) => (checkboxRef.checked = Array.isArray(fieldValue)
1549
- ? !!fieldValue.find((data) => data === checkboxRef.value)
1550
- : fieldValue === checkboxRef.value))
1548
+ ? fieldReference.refs.forEach((checkboxRef) => !checkboxRef.disabled &&
1549
+ (checkboxRef.checked = Array.isArray(fieldValue)
1550
+ ? !!fieldValue.find((data) => data === checkboxRef.value)
1551
+ : fieldValue === checkboxRef.value))
1551
1552
  : fieldReference.refs[0] &&
1552
1553
  (fieldReference.refs[0].checked = !!fieldValue);
1553
1554
  }
@@ -1667,7 +1668,8 @@ function createFormControl(props = {}) {
1667
1668
  error = (await validateField(field, get(_formValues, name), shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];
1668
1669
  isValid = await _updateValid(true);
1669
1670
  }
1670
- field._f.deps && trigger(field._f.deps);
1671
+ field._f.deps &&
1672
+ trigger(field._f.deps);
1671
1673
  shouldRenderByError(false, name, isValid, error, fieldState);
1672
1674
  }
1673
1675
  };
@@ -1804,7 +1806,7 @@ function createFormControl(props = {}) {
1804
1806
  set(_fields, name, {
1805
1807
  _f: Object.assign(Object.assign({}, field._f), (radioOrCheckbox
1806
1808
  ? {
1807
- refs: refs.concat(fieldRef).filter(live),
1809
+ refs: [...refs.filter(live), fieldRef],
1808
1810
  ref: { type: fieldRef.type, name },
1809
1811
  }
1810
1812
  : { ref: fieldRef })),