@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
TypeScript
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>;