UNPKG

vanillajs-excelike-table

Version:

A user-friendly pure JavaScript table library with Excel-like features, preset configurations, and intuitive column helpers. Vanilla JS implementation - no frameworks required!

74 lines (66 loc) 2.55 kB
declare class ExceLikeTable { constructor(container: string | HTMLElement, options?: ExceLikeTableOptions); setData(data: any[]): void; updateData(data: any[]): void; getFilters(): Record<string, any>; setFilters(filters: Record<string, any>): void; clearFilters(): void; clearAllFilters(): void; setFontSize(size: FontSize): void; setCellPadding(padding: CellPadding): void; saveSettings(): Promise<boolean>; loadSettings(): Promise<boolean>; clearSettings(): Promise<boolean>; destroy(): void; } interface ExceLikeTableOptions { data?: any[]; columns?: ExceLikeTableColumn[]; preset?: 'simple' | 'standard' | 'advanced' | 'excel'; features?: Feature[]; rowKey?: string; pagination?: PaginationOptions | false; bordered?: boolean; size?: 'small' | 'middle' | 'large'; loading?: boolean; tableId?: string; persistSettings?: boolean; storageAdapter?: TableStorageAdapter; } interface PaginationOptions { pageSize?: number; showSizeChanger?: boolean; showTotal?: (total: number, range: [number, number]) => string; current?: number; } interface ExceLikeTableColumn { key: string; title: string; dataIndex: string; width?: number; sortable?: boolean; filterable?: boolean; filterType?: 'text' | 'date-hierarchy' | 'range'; render?: (value: any, record: any) => string; onFilter?: (value: any, record: any) => boolean; sorter?: (a: any, b: any) => number; } interface TableStorageAdapter { save(key: string, settings: any): Promise<boolean>; load(key: string): Promise<any>; remove(key: string): Promise<boolean>; isAvailable(): boolean; } declare namespace ColumnHelpers { function text(key: string, title: string, options?: any): ExceLikeTableColumn; function number(key: string, title: string, options?: any): ExceLikeTableColumn; function date(key: string, title: string, options?: any): ExceLikeTableColumn; function status(key: string, title: string, statusColors?: Record<string, string>, options?: any): ExceLikeTableColumn; function actions(title: string, actions: Array<{key: string, label: string}>, options?: any): ExceLikeTableColumn; } type Feature = 'sorting' | 'filtering' | 'pagination' | 'columnSettings' | 'persistSettings' | 'columnResizing' | 'columnPinning'; type FontSize = 'smallest' | 'small' | 'medium' | 'large' | 'largest'; type CellPadding = 'narrow' | 'standard' | 'wide'; export = ExceLikeTable; export as namespace ExceLikeTable; export { ColumnHelpers, TableStorageAdapter, ExceLikeTableOptions, ExceLikeTableColumn };