diff --git a/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/page.tsx b/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/page.tsx index 727a7698b..b7eb2eca7 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/page.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/page.tsx @@ -224,6 +224,7 @@ const columns: ColumnDef[] = [ ); }, size: 180, + enableColumnFilter: true, }, { header: "Content Summary", @@ -404,25 +405,29 @@ export default function DocumentsTable() { // Get unique status values const uniqueStatusValues = useMemo(() => { const statusColumn = table.getColumn("document_type"); + if (!data.length) return []; // Don't compute until data is present if (!statusColumn) return []; const values = Array.from(statusColumn.getFacetedUniqueValues().keys()); return values.sort(); - }, [table.getColumn]); + }, [table.getColumn, data]); // Get counts for each status const statusCounts = useMemo(() => { const statusColumn = table.getColumn("document_type"); + if (!data.length) return new Map(); // Don't compute until data is present if (!statusColumn) return new Map(); return statusColumn.getFacetedUniqueValues(); - }, [table.getColumn]); + }, [table.getColumn, data, columnFilters]); const selectedStatuses = useMemo(() => { const filterValue = table.getColumn("document_type")?.getFilterValue() as string[]; + if (!data.length) return []; // Don't compute until data is present + return filterValue ?? []; - }, [table.getColumn]); + }, [table.getColumn, data, columnFilters]); const handleStatusChange = (checked: boolean, value: string) => { const filterValue = table.getColumn("document_type")?.getFilterValue() as string[]; @@ -437,6 +442,13 @@ export default function DocumentsTable() { } } + setColumnFilters([ + { + id: "document_type", + value: newFilterValue, + }, + ]); + table .getColumn("document_type") ?.setFilterValue(newFilterValue.length ? newFilterValue : undefined);