From 535aa56627809ef02be369ce64ccca512bb5d693 Mon Sep 17 00:00:00 2001 From: Alessio Gravili Date: Fri, 29 Mar 2024 17:32:40 -0400 Subject: [PATCH] fix: do not pass undefined data through buildStateFromSchema for tab fields --- .../buildStateFromSchema/addFieldStatePromise.ts | 10 +++++----- packages/ui/src/forms/useField/index.tsx | 14 +++++++------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/ui/src/forms/buildStateFromSchema/addFieldStatePromise.ts b/packages/ui/src/forms/buildStateFromSchema/addFieldStatePromise.ts index ec8009ae8..35315af05 100644 --- a/packages/ui/src/forms/buildStateFromSchema/addFieldStatePromise.ts +++ b/packages/ui/src/forms/buildStateFromSchema/addFieldStatePromise.ts @@ -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) } diff --git a/packages/ui/src/forms/useField/index.tsx b/packages/ui/src/forms/useField/index.tsx index 59aa67954..3b56c9bfd 100644 --- a/packages/ui/src/forms/useField/index.tsx +++ b/packages/ui/src/forms/useField/index.tsx @@ -65,6 +65,13 @@ export const useField = (options: Options): FieldType => { (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 = (options: Options): FieldType => { } } } - - dispatchField({ - type: 'UPDATE', - disableFormData: disableFormData || (hasRows && val > 0), - path, - value: val, - }) }, [setModified, path, dispatchField, disableFormData, hasRows, modified], )