@bombillazo/rhf-plus 7.72.0-plus.0 → 7.72.1-plus.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.
@@ -19,9 +19,9 @@ var getEventValue = (event) => isObject(event) && event.target
19
19
  : event.target.value
20
20
  : event;
21
21
 
22
- var getNodeParentName = (name) => name.substring(0, name.search(/\.\d+(\.|$)/)) || name;
23
-
24
- var isNameInFieldArray = (names, name) => names.has(getNodeParentName(name));
22
+ var isNameInFieldArray = (names, name) => name
23
+ .split('.')
24
+ .some((part, index, arr) => !isNaN(Number(part)) && names.has(arr.slice(0, index).join('.')));
25
25
 
26
26
  var isPlainObject = (tempObject) => {
27
27
  const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;
@@ -285,8 +285,8 @@ function deepEqual(object1, object2, _internal_visited = new WeakSet()) {
285
285
  if (key !== 'ref') {
286
286
  const val2 = object2[key];
287
287
  if ((isDateObject(val1) && isDateObject(val2)) ||
288
- (isObject(val1) && isObject(val2)) ||
289
- (Array.isArray(val1) && Array.isArray(val2))
288
+ ((isObject(val1) || Array.isArray(val1)) &&
289
+ (isObject(val2) || Array.isArray(val2)))
290
290
  ? !deepEqual(val1, val2, _internal_visited)
291
291
  : !Object.is(val1, val2)) {
292
292
  return false;
@@ -740,46 +740,47 @@ const useFormContext = () => React.useContext(HookFormContext);
740
740
  */
741
741
  const FormProvider = (props) => {
742
742
  const { children, watch, getValues, getFieldState, setError, clearErrors, setValue, trigger, formState, resetField, reset, handleSubmit, unregister, control, register, setFocus, subscribe, id, submit, } = props;
743
- return (React.createElement(HookFormContext.Provider, { value: React.useMemo(() => ({
744
- watch,
745
- getValues,
746
- getFieldState,
747
- setError,
748
- clearErrors,
749
- setValue,
750
- trigger,
751
- formState,
752
- resetField,
753
- reset,
754
- handleSubmit,
755
- unregister,
756
- control,
757
- register,
758
- setFocus,
759
- subscribe,
760
- id,
761
- submit,
762
- }), [
763
- clearErrors,
764
- control,
765
- formState,
766
- getFieldState,
767
- getValues,
768
- handleSubmit,
769
- id,
770
- register,
771
- reset,
772
- resetField,
773
- setError,
774
- setFocus,
775
- setValue,
776
- submit,
777
- subscribe,
778
- trigger,
779
- unregister,
780
- watch,
781
- ]) },
782
- React.createElement(HookFormControlContext.Provider, { value: control }, children)));
743
+ const memoizedValue = React.useMemo(() => ({
744
+ watch,
745
+ getValues,
746
+ getFieldState,
747
+ setError,
748
+ clearErrors,
749
+ setValue,
750
+ trigger,
751
+ formState,
752
+ resetField,
753
+ reset,
754
+ handleSubmit,
755
+ unregister,
756
+ control,
757
+ register,
758
+ setFocus,
759
+ subscribe,
760
+ id,
761
+ submit,
762
+ }), [
763
+ clearErrors,
764
+ control,
765
+ formState,
766
+ getFieldState,
767
+ getValues,
768
+ handleSubmit,
769
+ id,
770
+ register,
771
+ reset,
772
+ resetField,
773
+ setError,
774
+ setFocus,
775
+ setValue,
776
+ submit,
777
+ subscribe,
778
+ trigger,
779
+ unregister,
780
+ watch,
781
+ ]);
782
+ return (React.createElement(HookFormContext.Provider, { value: memoizedValue },
783
+ React.createElement(HookFormControlContext.Provider, { value: memoizedValue.control }, children)));
783
784
  };
784
785
 
785
786
  const POST_REQUEST = 'post';
@@ -1160,6 +1161,8 @@ function getFieldValue(_f) {
1160
1161
  return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);
1161
1162
  }
1162
1163
 
1164
+ var getNodeParentName = (name) => name.substring(0, name.search(/\.\d+(\.|$)/)) || name;
1165
+
1163
1166
  var getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {
1164
1167
  const fields = {};
1165
1168
  for (const name of fieldsNames) {
@@ -1599,6 +1602,7 @@ function createFormControl(props = {}) {
1599
1602
  unMount: new Set(),
1600
1603
  array: new Set(),
1601
1604
  watch: new Set(),
1605
+ registerName: new Set(),
1602
1606
  };
1603
1607
  let delayErrorCallback;
1604
1608
  let timer = 0;
@@ -1678,6 +1682,11 @@ function createFormControl(props = {}) {
1678
1682
  });
1679
1683
  }
1680
1684
  };
1685
+ const _updateDirtyFields = (name) => {
1686
+ const fullDirtyFields = getDirtyFields(_defaultValues, _formValues);
1687
+ const rootName = getNodeParentName(name);
1688
+ set(_formState.dirtyFields, rootName, get(fullDirtyFields, rootName));
1689
+ };
1681
1690
  const _setFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {
1682
1691
  if (args && method && !_options.disabled) {
1683
1692
  _state.action = true;
@@ -1699,9 +1708,7 @@ function createFormControl(props = {}) {
1699
1708
  shouldSetValues && set(_formState.touchedFields, name, touchedFields);
1700
1709
  }
1701
1710
  if (_proxyFormState.dirtyFields || _proxySubscribeFormState.dirtyFields) {
1702
- const fullDirtyFields = getDirtyFields(_defaultValues, _formValues);
1703
- const rootName = getNodeParentName(name);
1704
- set(_formState.dirtyFields, rootName, get(fullDirtyFields, rootName));
1711
+ _updateDirtyFields(name);
1705
1712
  }
1706
1713
  _subjects.state.next({
1707
1714
  name,
@@ -2077,9 +2084,10 @@ function createFormControl(props = {}) {
2077
2084
  _proxyFormState.isDirtySinceSubmit ||
2078
2085
  _proxySubscribeFormState.isDirtySinceSubmit) &&
2079
2086
  options.shouldDirty) {
2087
+ _updateDirtyFields(name);
2080
2088
  _subjects.state.next({
2081
2089
  name,
2082
- dirtyFields: getDirtyFields(_defaultValues, _formValues),
2090
+ dirtyFields: _formState.dirtyFields,
2083
2091
  isDirty: _getDirty(name, cloneValue),
2084
2092
  ...((_formState.isSubmitted || _hasBeenSubmitted) &&
2085
2093
  !_formState.isDirtySinceSubmit
@@ -2473,6 +2481,7 @@ function createFormControl(props = {}) {
2473
2481
  const disabledIsDefined = isBoolean(options.disabled) ||
2474
2482
  isBoolean(_options.disabled) ||
2475
2483
  Array.isArray(_options.disabled);
2484
+ const shouldRevalidateRemount = !_names.registerName.has(name) && field && !field._f.mount;
2476
2485
  set(_fields, name, {
2477
2486
  ...(field || {}),
2478
2487
  _f: {
@@ -2483,7 +2492,7 @@ function createFormControl(props = {}) {
2483
2492
  },
2484
2493
  });
2485
2494
  _names.mount.add(name);
2486
- if (field) {
2495
+ if (field && !shouldRevalidateRemount) {
2487
2496
  _setDisabledField({
2488
2497
  disabled: isBoolean(options.disabled)
2489
2498
  ? options.disabled
@@ -2522,7 +2531,9 @@ function createFormControl(props = {}) {
2522
2531
  onFocus: onChange,
2523
2532
  ref: (ref) => {
2524
2533
  if (ref) {
2534
+ _names.registerName.add(name);
2525
2535
  register(name, options);
2536
+ _names.registerName.delete(name);
2526
2537
  field = get(_fields, name);
2527
2538
  const fieldRef = isUndefined(ref.value)
2528
2539
  ? ref.querySelectorAll
@@ -2768,6 +2779,7 @@ function createFormControl(props = {}) {
2768
2779
  mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),
2769
2780
  unMount: new Set(),
2770
2781
  array: new Set(),
2782
+ registerName: new Set(),
2771
2783
  disabled: new Set(),
2772
2784
  readonly: new Set(),
2773
2785
  watch: new Set(),