diff --git a/src/routes/cases.index.tsx b/src/routes/cases.index.tsx index 6099ea6..5eb5c82 100644 --- a/src/routes/cases.index.tsx +++ b/src/routes/cases.index.tsx @@ -159,9 +159,16 @@ function CasesList() { if (await setArchived("cases", id, archived)) load(); }; + // Pagination — reset when filters/view change. + useEffect(() => { setPage(1); }, [view, q, statusFilter, sortKey, sortDir]); + const totalPages = Math.max(1, Math.ceil(sorted.length / PAGE_SIZE)); + const currentPage = Math.min(page, totalPages); + const pageStart = (currentPage - 1) * PAGE_SIZE; + const paged = useMemo(() => sorted.slice(pageStart, pageStart + PAGE_SIZE), [sorted, pageStart]); + // Selection helpers — clear when switching views. useEffect(() => { setSelected(new Set()); }, [view]); - const visibleIds = useMemo(() => sorted.map((c) => c.id), [sorted]); + const visibleIds = useMemo(() => paged.map((c) => c.id), [paged]); const allSelected = visibleIds.length > 0 && visibleIds.every((id) => selected.has(id)); const someSelected = selected.size > 0 && !allSelected; const toggleAll = () => setSelected(allSelected ? new Set() : new Set(visibleIds));