UNPKG

@ackplus/react-tanstack-data-table

Version:

A powerful React data table component built with MUI and TanStack Table

46 lines (45 loc) 2.29 kB
import { Table, TableFeature, RowData, Updater, RowModel } from '@tanstack/react-table'; import type { CustomColumnFilterState } from '../types/table.types'; export interface ColumnFilterRule { id: string; columnId: string; operator: string; value: any; columnType?: string; } export interface CustomColumnFilterOptions { enableCustomColumnFilter?: boolean; onCustomColumnFilterChange?: (updater: Updater<CustomColumnFilterState>) => void; onCustomColumnFilterApply?: (state: CustomColumnFilterState) => void; } export interface CustomColumnFilterTableState { customColumnFilter: CustomColumnFilterState; } declare module '@tanstack/table-core' { interface TableState extends CustomColumnFilterTableState { } interface TableOptionsResolved<TData extends RowData> extends CustomColumnFilterOptions { } interface Table<TData extends RowData> extends CustomColumnFilterInstance<TData> { } } export interface CustomColumnFilterInstance<TData extends RowData> { setCustomColumnFilter: (updater: Updater<CustomColumnFilterState>) => void; addPendingColumnFilter: (columnId: string, operator: string, value: any) => void; updatePendingColumnFilter: (filterId: string, updates: Partial<ColumnFilterRule>) => void; removePendingColumnFilter: (filterId: string) => void; clearAllPendingColumnFilters: () => void; setPendingFilterLogic: (logic: 'AND' | 'OR') => void; applyPendingColumnFilters: () => void; addColumnFilter: (columnId: string, operator: string, value: any) => void; updateColumnFilter: (filterId: string, updates: Partial<ColumnFilterRule>) => void; removeColumnFilter: (filterId: string) => void; clearAllColumnFilters: () => void; setFilterLogic: (logic: 'AND' | 'OR') => void; getActiveColumnFilters: () => ColumnFilterRule[]; getPendingColumnFilters: () => ColumnFilterRule[]; getCustomColumnFilterState: () => CustomColumnFilterState; } export declare const CustomColumnFilterFeature: TableFeature<any>; export declare function matchesCustomColumnFilters<TData extends RowData>(row: any, filters: ColumnFilterRule[], logic?: 'AND' | 'OR'): boolean; export declare const getCombinedFilteredRowModel: <TData>() => (table: Table<TData>) => () => RowModel<TData>;