Skip to content

Commit

Permalink
Fix invalid state of form and refactor code
Browse files Browse the repository at this point in the history
  • Loading branch information
fabian-hiller committed Nov 2, 2022
1 parent 13b5767 commit c1a55d1
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 10 deletions.
1 change: 1 addition & 0 deletions packages/solid/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ All notable changes to the library will be documented in this file.
- Add `clearResponse`, `hasField` and `hasFieldArray` method
- Improve and refactor `getValues`, `reset` and `validate` method
- Add missing export of `setError` and `setValue` method
- Fix invalid state of form (field arrays were not considered before)

## v0.3.0 (October 30, 2022)

Expand Down
5 changes: 3 additions & 2 deletions packages/solid/src/methods/setError.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,9 @@ export function setError<
// Update invalid state of form
form.internal.setInvalid(
!!error ||
[...form.internal.fields].some(
([_, field]) => field.getActive() && field.getError()
[...form.internal.fields, ...form.internal.fieldArrays].some(
([, fieldOrFieldArray]) =>
fieldOrFieldArray.getActive() && fieldOrFieldArray.getError()
)
);
});
Expand Down
5 changes: 3 additions & 2 deletions packages/solid/src/methods/validate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,9 @@ export async function validate<

// Update invalid state of form
form.internal.setInvalid(
[...form.internal.fields].some(
([_, field]) => field.getActive() && field.getError()
[...form.internal.fields, ...form.internal.fieldArrays].some(
([, fieldOrFieldArray]) =>
fieldOrFieldArray.getActive() && fieldOrFieldArray.getError()
)
);

Expand Down
2 changes: 1 addition & 1 deletion packages/solid/src/utils/updateDirty.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export function updateDirty<TFieldValues extends FieldValues>(
form.internal.setDirty(
dirty ||
[...form.internal.fields, ...form.internal.fieldArrays].some(
([_, field]) => field.getActive() && field.getDirty()
([, field]) => field.getActive() && field.getDirty()
)
);
});
Expand Down
10 changes: 5 additions & 5 deletions packages/solid/src/utils/updateState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,18 @@ export function updateState<TFieldValues extends FieldValues>(
// Ignores tracking of reactive dependencies
untrack(() => {
// Check each field and field array and update state if necessary
for (const [_, field] of [
for (const [, fieldOrFieldArray] of [
...form.internal.fields,
...form.internal.fieldArrays,
]) {
if (field.getActive()) {
if (field.getTouched()) {
if (fieldOrFieldArray.getActive()) {
if (fieldOrFieldArray.getTouched()) {
touched = true;
}
if (field.getDirty()) {
if (fieldOrFieldArray.getDirty()) {
dirty = true;
}
if (field.getError()) {
if (fieldOrFieldArray.getError()) {
invalid = true;
}
}
Expand Down

0 comments on commit c1a55d1

Please sign in to comment.