@ackplus/react-tanstack-data-table
Version:
A powerful React data table component built with MUI and TanStack Table
57 lines (56 loc) • 2.03 kB
TypeScript
import { ColumnOrderState, ColumnPinningState, SortingState, Table } from '@tanstack/react-table';
import { Ref } from 'react';
import { CustomColumnFilterState, TableFilters, TableState } from '../types';
import { DataTableApi } from '../types/data-table-api';
import { SelectionState } from '../features';
interface UseDataTableApiProps<T> {
table: Table<T>;
data: T[];
idKey: keyof T;
globalFilter: string;
customColumnsFilter: CustomColumnFilterState;
sorting: SortingState;
pagination: {
pageIndex: number;
pageSize: number;
};
columnOrder: ColumnOrderState;
columnPinning: ColumnPinningState;
enhancedColumns: any[];
enablePagination: boolean;
enableColumnPinning: boolean;
initialPageIndex: number;
initialPageSize?: number;
pageSize: number;
selectMode?: 'page' | 'all';
onSelectionChange?: (state: SelectionState) => void;
handleColumnFilterStateChange: (filterState: CustomColumnFilterState) => void;
onDataStateChange?: (state: Partial<TableState>) => void;
onFetchData?: (filters: Partial<TableFilters>) => void;
onDataChange?: (newData: T[]) => void;
exportFilename?: string;
onExportProgress?: (progress: {
processedRows: number;
totalRows: number;
percentage: number;
}) => void;
onExportComplete?: (result: {
success: boolean;
filename: string;
totalRows: number;
}) => void;
onExportError?: (error: {
message: string;
code: string;
}) => void;
onServerExport?: (filters?: Partial<TableFilters>, selection?: any) => Promise<{
data: any[];
total: number;
}>;
exportController?: AbortController | null;
setExportController?: (controller: AbortController | null) => void;
isExporting?: boolean;
dataMode?: 'client' | 'server';
}
export declare function useDataTableApi<T extends Record<string, any>>(props: UseDataTableApiProps<T>, ref: Ref<DataTableApi<T>>): void;
export {};