feat: make search filters independent per tab while maintaining persistence

This commit is contained in:
Christian Vidal Wolf
2026-04-24 16:09:49 +02:00
parent f2ed303fed
commit 8d00b7372f
7 changed files with 7 additions and 7 deletions
+1 -1
View File
@@ -54,7 +54,7 @@ export function DimensionsView({ data, headers, onEdit, onSaveRow, onCaptureStat
targetGroupKey: string;
selectedIndices: number[];
} | null>(null);
const [search, setSearch] = usePersistentState('global-search', '');
const [search, setSearch] = usePersistentState('dimensions-search', '');
const [lineFilter, setLineFilter] = usePersistentState<string[]>('dimensions-lineFilter', []);
const [classFilter, setClassFilter] = usePersistentState<string[]>('dimensions-classFilter', []);
const [openFilter, setOpenFilter] = useState<'line' | 'class' | null>(null);
+1 -1
View File
@@ -18,7 +18,7 @@ export function HistoryView({ headers, data, onRevert, onEdit }: HistoryViewProp
const [history, setHistory] = useState<HistoryEntry[]>([]);
const [loading, setLoading] = useState(true);
const [expandedId, setExpandedId] = useState<string | null>(null);
const [search, setSearch] = usePersistentState('global-search', '');
const [search, setSearch] = usePersistentState('history-search', '');
const [isFullscreen, setIsFullscreen] = useState(false);
useEffect(() => {
+1 -1
View File
@@ -14,7 +14,7 @@ interface MatrixViewProps {
export function MatrixView({ data, headers, rowStatuses }: MatrixViewProps) {
const [page, setPage] = useState(1);
const [pageSize, setPageSize] = useState(25);
const [search, setSearch] = usePersistentState('global-search', '');
const [search, setSearch] = usePersistentState('matrix-search', '');
const [columnFilters, setColumnFilters] = usePersistentState<Record<number, string[]>>('matrix-columnFilters', {});
const [openFilterCol, setOpenFilterCol] = useState<number | null>(null);
const [sortCol, setSortCol] = usePersistentState<number | null>('matrix-sortCol', null);
+1 -1
View File
@@ -69,7 +69,7 @@ interface EditingState {
export function MissingDataView({ data, headers, onSaveRow, onCaptureState }: MissingDataViewProps) {
const COLUMNS = useColumns();
const [activeTab, setActiveTab] = usePersistentState<TabType>('missingData-tab', 'missingLaunch');
const [search, setSearch] = usePersistentState('global-search', '');
const [search, setSearch] = usePersistentState('missingData-search', '');
const [sortCol, setSortCol] = usePersistentState<number | null>('missingData-sortCol', null);
const [sortDesc, setSortDesc] = usePersistentState('missingData-sortDesc', false);
const [page, setPage] = useState(1);
+1 -1
View File
@@ -15,7 +15,7 @@ interface PendingValidationViewProps {
export function PendingValidationView({ data, pendingRows, rowStatuses, onRevertRow, onEdit }: PendingValidationViewProps) {
const COLUMNS = useColumns();
const [search, setSearch] = usePersistentState('global-search', '');
const [search, setSearch] = usePersistentState('pending-search', '');
const [isFullscreen, setIsFullscreen] = useState(false);
const pendingEntries = Object.entries(pendingRows);
+1 -1
View File
@@ -55,7 +55,7 @@ function findCol(headers: string[], ...keywords: string[]): number {
export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit, rowStatuses }: PricingViewProps) {
const COLUMNS = useColumns();
const [filterMode, setFilterMode] = usePersistentState<FilterMode>('pricing-filterMode', 'all_errors');
const [search, setSearch] = usePersistentState('global-search', '');
const [search, setSearch] = usePersistentState('pricing-search', '');
const [currentPage, setCurrentPage] = useState(1);
const pageSize = 100;
const [columnWidths, setColumnWidths] = useState<Record<string, number>>({
+1 -1
View File
@@ -21,7 +21,7 @@ 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] = usePersistentState<string>('descriptions-tab', 'all');
const [search, setSearch] = usePersistentState('global-search', '');
const [search, setSearch] = usePersistentState('descriptions-search', '');
const [lineFilter, setLineFilter] = usePersistentState('descriptions-lineFilter', '');
const [licenseFilter, setLicenseFilter] = usePersistentState('descriptions-licenseFilter', '');
const [sortCol, setSortCol] = usePersistentState<number | null>('descriptions-sortCol', null);