@ackplus/react-tanstack-data-table
Version:
A powerful React data table component built with MUI and TanStack Table
64 lines (63 loc) • 1.68 kB
TypeScript
import { SortingState } from '@tanstack/react-table';
import { ColumnFilterRule, SelectionState } from '../features';
export type TableSize = 'small' | 'medium';
export interface TableState {
customColumnsFilter: CustomColumnFilterState;
selectionState?: SelectionState;
globalFilter?: string;
sorting?: SortingState;
pagination?: {
pageIndex: number;
pageSize: number;
};
columnOrder?: string[];
columnPinning?: {
left?: string[];
right?: string[];
};
columnVisibility?: Record<string, boolean>;
columnSizing?: Record<string, number>;
}
export interface TableFilters {
globalFilter: string;
customColumnsFilter: CustomColumnFilterState;
sorting: SortingState;
pagination: {
pageIndex: number;
pageSize: number;
};
columnOrder: string[];
columnPinning: {
left?: string[];
right?: string[];
};
}
export interface TableFiltersForFetch {
search?: string;
page?: number;
pageSize?: number;
sorting?: SortingState;
customColumnsFilter?: CustomColumnFilterState;
}
export interface CustomColumnFilterState {
filters: ColumnFilterRule[];
logic: 'AND' | 'OR';
pendingFilters: ColumnFilterRule[];
pendingLogic: 'AND' | 'OR';
}
export interface TablePerformanceMetrics {
renderTime: number;
dataProcessingTime: number;
totalRows: number;
visibleRows: number;
memoryUsage?: number;
}
export interface TableMetrics {
totalRows: number;
visibleRows: number;
totalColumns?: number;
visibleColumns?: number;
pinnedColumns?: number;
renderTime: number;
lastUpdated?: Date;
}