diff --git a/frontend/src/pages/Planner/Clusters.tsx b/frontend/src/pages/Planner/Clusters.tsx index b402d315..e3c8c9c5 100644 --- a/frontend/src/pages/Planner/Clusters.tsx +++ b/frontend/src/pages/Planner/Clusters.tsx @@ -433,7 +433,14 @@ export default function Clusters() { }} onBulkDelete={async (ids: number[]) => { const result = await bulkDeleteClusters(ids); - loadClusters(); + // Clear selection first + setSelectedIds([]); + // Reset to page 1 if we deleted all items on current page + if (currentPage > 1 && clusters.length <= ids.length) { + setCurrentPage(1); + } + // Always reload data to refresh the table + await loadClusters(); return result; }} onBulkExport={handleBulkExport} diff --git a/frontend/src/pages/Planner/Ideas.tsx b/frontend/src/pages/Planner/Ideas.tsx index 17f83af2..302bb67e 100644 --- a/frontend/src/pages/Planner/Ideas.tsx +++ b/frontend/src/pages/Planner/Ideas.tsx @@ -352,7 +352,14 @@ export default function Ideas() { }} onBulkDelete={async (ids: number[]) => { const result = await bulkDeleteContentIdeas(ids); - loadIdeas(); + // Clear selection first + setSelectedIds([]); + // Reset to page 1 if we deleted all items on current page + if (currentPage > 1 && ideas.length <= ids.length) { + setCurrentPage(1); + } + // Always reload data to refresh the table + await loadIdeas(); return result; }} onBulkExport={handleBulkExport} diff --git a/frontend/src/pages/Planner/Keywords.tsx b/frontend/src/pages/Planner/Keywords.tsx index 43ab7bbe..e48cf3ab 100644 --- a/frontend/src/pages/Planner/Keywords.tsx +++ b/frontend/src/pages/Planner/Keywords.tsx @@ -786,7 +786,14 @@ export default function Keywords() { }} onBulkDelete={async (ids: number[]) => { const result = await bulkDeleteKeywords(ids); - loadKeywords(); + // Clear selection first + setSelectedIds([]); + // Reset to page 1 if we deleted all items on current page + if (currentPage > 1 && keywords.length <= ids.length) { + setCurrentPage(1); + } + // Always reload data to refresh the table + await loadKeywords(); return result; }} onBulkExport={handleBulkExport} diff --git a/frontend/src/pages/Writer/Tasks.tsx b/frontend/src/pages/Writer/Tasks.tsx index 7f6a7d31..d4e77f32 100644 --- a/frontend/src/pages/Writer/Tasks.tsx +++ b/frontend/src/pages/Writer/Tasks.tsx @@ -587,7 +587,14 @@ export default function Tasks() { }} onBulkDelete={async (ids: number[]) => { const result = await bulkDeleteTasks(ids); - loadTasks(); + // Clear selection first + setSelectedIds([]); + // Reset to page 1 if we deleted all items on current page + if (currentPage > 1 && tasks.length <= ids.length) { + setCurrentPage(1); + } + // Always reload data to refresh the table + await loadTasks(); return result; }} onBulkExport={handleBulkExport} diff --git a/frontend/src/templates/TablePageTemplate.tsx b/frontend/src/templates/TablePageTemplate.tsx index 5927dcac..e2facaaa 100644 --- a/frontend/src/templates/TablePageTemplate.tsx +++ b/frontend/src/templates/TablePageTemplate.tsx @@ -275,7 +275,7 @@ export default function TablePageTemplate({ } setDeleteModal({ isOpen: false, items: [], isBulk: false, isLoading: false }); - // Refresh data - parent component should handle this via selection callback or data reload + // Clear selection - parent component should handle data reload if (selection) { selection.onSelectionChange([]); }