Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/form-core/src/FieldApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1242,6 +1242,7 @@ export class FieldApi<
info.instance = this as never

this.update(this.options as never)

const { onMount } = this.options.validators || {}

if (onMount) {
Expand Down
31 changes: 15 additions & 16 deletions packages/form-core/src/FormApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1663,16 +1663,20 @@ export class FormApi<

const errorMapKey = getErrorMapKey(validateObj.cause)

for (const field of Object.keys(
this.state.fieldMeta,
) as DeepKeys<TFormData>[]) {
if (this.baseStore.state.fieldMetaBase[field] === undefined) {
const allFieldsToProcess = new Set([
...Object.keys(this.state.fieldMeta),
...Object.keys(fieldErrors || {}),
] as DeepKeys<TFormData>[])

for (const field of allFieldsToProcess) {
if (
this.baseStore.state.fieldMetaBase[field] === undefined &&
!fieldErrors?.[field]
) {
continue
}

const fieldMeta = this.getFieldMeta(field)
if (!fieldMeta) continue

const fieldMeta = this.getFieldMeta(field) ?? defaultFieldMeta
const {
errorMap: currentErrorMap,
errorSourceMap: currentErrorMapSource,
Expand All @@ -1684,10 +1688,8 @@ export class FormApi<
determineFormLevelErrorSourceAndValue({
newFormValidatorError,
isPreviousErrorFromFormValidator:
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
currentErrorMapSource?.[errorMapKey] === 'form',
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
previousErrorValue: currentErrorMap?.[errorMapKey],
currentErrorMapSource[errorMapKey] === 'form',
previousErrorValue: currentErrorMap[errorMapKey],
})

if (newSource === 'form') {
Expand All @@ -1697,11 +1699,8 @@ export class FormApi<
}
}

if (
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
currentErrorMap?.[errorMapKey] !== newErrorValue
) {
this.setFieldMeta(field, (prev) => ({
if (currentErrorMap[errorMapKey] !== newErrorValue) {
this.setFieldMeta(field, (prev = defaultFieldMeta) => ({
...prev,
errorMap: {
...prev.errorMap,
Expand Down
Loading
Loading