From 07ee6acddb562902c1adb6a679380a8f3a3ce4f4 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Wed, 1 Jul 2026 00:27:39 +0700 Subject: [PATCH] fix(data-table): prevent unnecessary page reset on data change Updated the data table component to only reset the page index to 0 when it is not already at 0, improving user experience during data updates. Additionally, refactored the module selection logic to prune invalid selected module IDs more efficiently, enhancing the overall functionality of the module management interface. --- .../patterns/data-table/app-data-table.svelte | 2 +- apps/web/src/routes/modules/+page.svelte | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/web/src/lib/components/patterns/data-table/app-data-table.svelte b/apps/web/src/lib/components/patterns/data-table/app-data-table.svelte index 561508f..a1560d8 100644 --- a/apps/web/src/lib/components/patterns/data-table/app-data-table.svelte +++ b/apps/web/src/lib/components/patterns/data-table/app-data-table.svelte @@ -73,7 +73,7 @@ $effect(() => { rows; - pageIndex = 0; + if (pageIndex !== 0) pageIndex = 0; }); function toggleSort(col: DataTableColumn) { diff --git a/apps/web/src/routes/modules/+page.svelte b/apps/web/src/routes/modules/+page.svelte index a29dc58..e8d13d8 100644 --- a/apps/web/src/routes/modules/+page.svelte +++ b/apps/web/src/routes/modules/+page.svelte @@ -105,9 +105,19 @@ void queryClient.invalidateQueries({ queryKey: modulesKeys.all }); } - $effect(() => { + function pruneSelectedModuleIds() { const validIds = new Set(rows.map((item) => item.id)); - selectedModuleIds = new Set([...selectedModuleIds].filter((id) => validIds.has(id))); + for (const id of selectedModuleIds) { + if (!validIds.has(id)) { + selectedModuleIds = new Set([...selectedModuleIds].filter((id) => validIds.has(id))); + return; + } + } + } + + $effect(() => { + rows; + pruneSelectedModuleIds(); }); function toggleModuleSelection(id: string) {