UNPKG

@ackplus/react-tanstack-data-table

Version:

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

100 lines (99 loc) 2.83 kB
import { TableState } from './table.types'; export interface ServerExportColumn<T = any> { id: string; header: string; accessor: keyof T | string; formatter?: (value: any, row: T) => string; } export interface ExportOptions { filename?: string; format: 'csv' | 'excel'; includeHeaders?: boolean; onlyVisibleColumns?: boolean; onlyFilteredData?: boolean; chunkSize?: number; onProgress?: (progress: ExportProgress) => void; onComplete?: (result: ExportResult) => void; onError?: (error: ExportError) => void; signal?: AbortSignal; } export interface ExportProgress { processedRows: number; totalRows: number; percentage: number; currentChunk: number; totalChunks: number; estimatedTimeRemaining?: number; } export interface ExportResult { success: boolean; filename: string; totalRows: number; totalColumns: number; processingTime: number; fileSize?: number; } export interface ExportError { message: string; code: 'CANCELLED' | 'MEMORY_ERROR' | 'PROCESSING_ERROR' | 'UNKNOWN'; details?: any; } export interface ExportConfig { enabled: boolean; formats: ('csv' | 'excel')[]; filename?: string; includeHeaders?: boolean; onlyVisibleColumns?: boolean; onlyFilteredData?: boolean; chunkSize?: number; enableProgressTracking?: boolean; maxMemoryThreshold?: number; } export interface ExportState { isExporting: boolean; progress?: ExportProgress; controller?: AbortController; startTime?: number; } export interface ChunkProcessingConfig { chunkSize: number; delayBetweenChunks: number; useWebWorker: boolean; } export interface PinnedColumnStyleOptions { width?: number | string; isPinned?: 'left' | 'right' | false; pinnedPosition?: number; pinnedRightPosition?: number; zIndex?: number; disableStickyHeader?: boolean; isLastLeftPinnedColumn?: boolean; isFirstRightPinnedColumn?: boolean; } export interface SimpleExportOptions { filename?: string; format: 'csv' | 'excel'; includeHeaders?: boolean; onlyVisibleColumns?: boolean; onlySelectedRows?: boolean; } export interface SelectionExportData { selectAllMatching?: boolean; excludedIds?: string[]; selectedIds?: string[]; hasSelection?: boolean; } export interface ServerExportOptions extends SimpleExportOptions { fetchData: (filters?: Partial<TableState>, selection?: SelectionExportData) => Promise<{ data: any[]; total: number; }>; currentFilters?: any; pageSize?: number; selection?: SelectionExportData; } export interface ExportCallbacks { onProgress?: (progress: ExportProgress) => void; onComplete?: (result: ExportResult) => void; onError?: (error: ExportError) => void; }