feat: persistent search and filters across all tabs via FilterContext

This commit is contained in:
Christian Vidal Wolf
2026-04-24 14:19:09 +02:00
parent 29d5994d6a
commit 917bb08d9f
9 changed files with 111 additions and 54 deletions
+9 -8
View File
@@ -4,6 +4,7 @@ import { useColumns } from '../contexts/ColumnsContext';
import { Search, Filter, Edit2, ChevronDown, ChevronUp, X, Maximize2 } from 'lucide-react';
import { cn } from '../lib/utils';
import { ColumnFilterPopover } from './ColumnFilterPopover';
import { usePersistentState } from '../contexts/FilterContext';
interface ProductDescriptionsProps {
data: ExcelRow[];
@@ -19,15 +20,15 @@ export function ProductDescriptions({ data, headers, asinColumnIndex, onEdit, ro
// Description columns that should only have Present/Missing filters
const DESCRIPTION_COLUMNS = [COLUMNS.LONG_DE, COLUMNS.LONG_EN, COLUMNS.SHORT_DE, COLUMNS.SHORT_EN, COLUMNS.DETAILS_DE, COLUMNS.DETAILS_EN];
const [activeTab, setActiveTab] = useState<TabType>('all');
const [search, setSearch] = useState('');
const [lineFilter, setLineFilter] = useState('');
const [licenseFilter, setLicenseFilter] = useState('');
const [sortCol, setSortCol] = useState<number | null>(null);
const [sortDesc, setSortDesc] = useState(false);
const [pageSize, setPageSize] = useState(100);
const [activeTab, setActiveTab] = usePersistentState<string>('descriptions-tab', 'all');
const [search, setSearch] = usePersistentState('global-search', '');
const [lineFilter, setLineFilter] = usePersistentState('descriptions-lineFilter', '');
const [licenseFilter, setLicenseFilter] = usePersistentState('descriptions-licenseFilter', '');
const [sortCol, setSortCol] = usePersistentState<number | null>('descriptions-sortCol', null);
const [sortDesc, setSortDesc] = usePersistentState('descriptions-sortDesc', false);
const [pageSize, setPageSize] = usePersistentState('descriptions-pageSize', 100);
const [page, setPage] = useState(1);
const [columnFilters, setColumnFilters] = useState<Record<number, string[]>>({});
const [columnFilters, setColumnFilters] = usePersistentState<Record<number, string[]>>('descriptions-columnFilters', {});
const [openFilterCol, setOpenFilterCol] = useState<number | null>(null);
const [columnWidths, setColumnWidths] = useState<Record<number, number>>({
[COLUMNS.ARTICLE_NO]: 110,