From fb4ead7b17381486464a1bb5acbcabcf9f9e45ab Mon Sep 17 00:00:00 2001 From: Aunshon <32583103+Aunshon@users.noreply.github.com> Date: Fri, 6 Mar 2026 10:35:53 +0600 Subject: [PATCH 1/2] fix: add root class to SheetPortal for consistent styling --- src/components/ui/sheet.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ui/sheet.tsx b/src/components/ui/sheet.tsx index 8f4253b..11958ae 100644 --- a/src/components/ui/sheet.tsx +++ b/src/components/ui/sheet.tsx @@ -44,7 +44,7 @@ function SheetContent({ showCloseButton?: boolean }) { return ( - + Date: Fri, 6 Mar 2026 11:07:53 +0600 Subject: [PATCH 2/2] fix: improve loading state handling in SettingsProvider to ensure accurate dirty tracking --- src/components/settings/settings-context.tsx | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/components/settings/settings-context.tsx b/src/components/settings/settings-context.tsx index 6836c77..cf6eb53 100644 --- a/src/components/settings/settings-context.tsx +++ b/src/components/settings/settings-context.tsx @@ -177,15 +177,24 @@ export function SettingsProvider({ return map; }, [scopeFieldKeysMap]); + // Track previous loading state to detect when loading finishes. + const [prevLoading, setPrevLoading] = useState(loading); + // Sync internal values when external values change. - // NOTE: Do NOT reset initialValues here — that would break dirty tracking, + // NOTE: Do NOT reset initialValues on every change — that would break dirty tracking, // because the consumer typically updates externalValues in their onChange handler - // (controlled component pattern). initialValues is captured once on mount - // and only reset after a save via resetPageDirty. + // (controlled component pattern). However, when loading transitions from true→false, + // we re-snapshot initialValues so dirty tracking compares against the real saved data + // (not just schema defaults captured at mount time before async data arrived). useEffect(() => { const merged = { ...defaultValues, ...(externalValues || {}) }; setInternalValues(merged); - }, [defaultValues, externalValues]); + + if (prevLoading && !loading) { + setInitialValues(merged); + } + setPrevLoading(loading); + }, [defaultValues, externalValues, loading, prevLoading]); // Auto-select first page/subpage on schema load useEffect(() => {