fix: do not pass undefined data through buildStateFromSchema for tab fields

This commit is contained in:
Alessio Gravili
2024-03-29 17:32:40 -04:00
parent 0aeba954d4
commit 535aa56627
2 changed files with 12 additions and 12 deletions

View File

@@ -517,13 +517,13 @@ export const addFieldStatePromise = async (args: AddFieldStatePromiseArgs): Prom
state,
})
} else if (field.type === 'tabs') {
const promises = field.tabs.map((tab) =>
iterateFields({
const promises = field.tabs.map((tab) => {
return iterateFields({
id,
// passthrough parent functionality
addErrorPathToParent: addErrorPathToParentArg,
anyParentLocalized: tab.localized || anyParentLocalized,
data: tabHasName(tab) ? data?.[tab.name] : data,
data: tabHasName(tab) ? data?.[tab.name] || {} : data,
fields: tab.fields,
filter,
forceFullValue,
@@ -538,8 +538,8 @@ export const addFieldStatePromise = async (args: AddFieldStatePromiseArgs): Prom
skipConditionChecks,
skipValidation,
state,
}),
)
})
})
await Promise.all(promises)
}

View File

@@ -65,6 +65,13 @@ export const useField = <T,>(options: Options): FieldType<T> => {
(e, disableModifyingForm = false) => {
const val = e && e.target ? e.target.value : e
dispatchField({
type: 'UPDATE',
disableFormData: disableFormData || (hasRows && val > 0),
path,
value: val,
})
if (!disableModifyingForm) {
if (typeof setModified === 'function') {
// Only update setModified to true if the form is not already set to modified. Otherwise the following could happen:
@@ -89,13 +96,6 @@ export const useField = <T,>(options: Options): FieldType<T> => {
}
}
}
dispatchField({
type: 'UPDATE',
disableFormData: disableFormData || (hasRows && val > 0),
path,
value: val,
})
},
[setModified, path, dispatchField, disableFormData, hasRows, modified],
)