Quellcode durchsuchen

feat(dashboard): Persist list filter settings to userSettings

Michael Bromley vor 8 Monaten
Ursprung
Commit
33c0dc38a5

+ 5 - 1
packages/dashboard/src/lib/framework/page/list-page.tsx

@@ -93,6 +93,7 @@ export function ListPage<
 
     const columnVisibility = pageId ? tableSettings?.columnVisibility : defaultVisibility;
     const columnOrder = pageId ? tableSettings?.columnOrder : defaultColumnOrder;
+    const columnFilters = pageId ? tableSettings?.columnFilters : routeSearch.filters;
 
     const sorting: SortingState = (routeSearch.sort ?? '')
         .split(',')
@@ -151,7 +152,7 @@ export function ListPage<
                         page={pagination.page}
                         itemsPerPage={pagination.itemsPerPage}
                         sorting={sorting}
-                        columnFilters={routeSearch.filters}
+                        columnFilters={columnFilters}
                         onPageChange={(table, page, perPage) => {
                             persistListStateToUrl(table, { page, perPage });
                             if (pageId) {
@@ -163,6 +164,9 @@ export function ListPage<
                         }}
                         onFilterChange={(table, filters) => {
                             persistListStateToUrl(table, { filters });
+                            if (pageId) {
+                                setTableSettings(pageId, 'columnFilters', filters);
+                            }
                         }}
                         onColumnVisibilityChange={(table, columnVisibility) => {
                             if (pageId) {

+ 2 - 0
packages/dashboard/src/lib/providers/user-settings.tsx

@@ -1,9 +1,11 @@
 import React, { createContext, useState, useEffect } from 'react';
 import { Theme } from './theme-provider.js';
+import { ColumnFiltersState } from '@tanstack/react-table';
 
 export interface TableSettings {
     columnVisibility?: Record<string, boolean>;
     columnOrder?: string[];
+    columnFilters?: ColumnFiltersState;
     pageSize?: number;
 }