Skip to content

Commit

Permalink
🐞 fix react-hook-form#11590 issue with trigger on validatingFields (r…
Browse files Browse the repository at this point in the history
…eact-hook-form#11613)

* 🐞 fix react-hook-form#11590 issue with trigger on validatingFields

* fix unit tests and lint error
  • Loading branch information
bluebill1049 authored and rafaelcalhau committed May 5, 2024
1 parent 07d19ec commit 68c44da
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 36 deletions.
16 changes: 0 additions & 16 deletions src/__tests__/utils/objectHasTruthyValue.test.ts

This file was deleted.

32 changes: 16 additions & 16 deletions src/logic/createFormControl.ts
Expand Up @@ -64,7 +64,6 @@ import isString from '../utils/isString';
import isUndefined from '../utils/isUndefined';
import isWeb from '../utils/isWeb';
import live from '../utils/live';
import objectHasTruthyValue from '../utils/objectHasTruthyValue';
import set from '../utils/set';
import unset from '../utils/unset';

Expand Down Expand Up @@ -178,18 +177,19 @@ export function createFormControl<
}
};

const _updateIsValidating = (isValidating: boolean, names: string[]) => {
if (!(_proxyFormState.isValidating || _proxyFormState.validatingFields)) {
return;
const _updateIsValidating = (names: string[], isValidating?: boolean) => {
if (_proxyFormState.isValidating || _proxyFormState.validatingFields) {
names.forEach((name) =>
set(_formState.validatingFields, name, !!isValidating),
);
_formState.isValidating = Object.values(_formState.validatingFields).some(
(val) => val,
);
_subjects.state.next({
validatingFields: _formState.validatingFields,
isValidating: _formState.isValidating,
});
}
names.forEach((name) => {
set(_formState.validatingFields, name, isValidating);
});
_formState.isValidating = objectHasTruthyValue(_formState.validatingFields);
_subjects.state.next({
validatingFields: _formState.validatingFields,
isValidating: _formState.isValidating,
});
};

const _updateFieldArray: BatchFieldArrayUpdate = (
Expand Down Expand Up @@ -398,7 +398,6 @@ export function createFormControl<
}

_updateIsValidating(
false,
Object.keys(_formState.validatingFields).filter((key) => key === name),
);
};
Expand Down Expand Up @@ -749,7 +748,7 @@ export function createFormControl<

!isBlurEvent && watched && _subjects.state.next({ ..._formState });

_updateIsValidating(true, [name]);
_updateIsValidating([name], true);

if (_options.resolver) {
const { errors } = await _executeSchema([name]);
Expand Down Expand Up @@ -819,7 +818,7 @@ export function createFormControl<
let validationResult;
const fieldNames = convertToArrayPayload(name) as InternalFieldName[];

_updateIsValidating(true, fieldNames);
_updateIsValidating(fieldNames, true);

if (_options.resolver) {
const errors = await executeSchemaAndUpdateState(
Expand Down Expand Up @@ -853,9 +852,10 @@ export function createFormControl<
: { name }),
...(_options.resolver || !name ? { isValid } : {}),
errors: _formState.errors,
isValidating: false,
});

_updateIsValidating(fieldNames);

options.shouldFocus &&
!validationResult &&
iterateFieldsByAction(
Expand Down
4 changes: 0 additions & 4 deletions src/utils/objectHasTruthyValue.ts

This file was deleted.

0 comments on commit 68c44da

Please sign in to comment.