export class TableColumnDef { prop!: string label!: string width?: string type?: 'selection' | 'index' |'expand' | 'input' minWidth?: string fixed?: 'left' | 'right' sortable?: boolean | 'custom' formatter?: (row: any, column: any, cellValue: string, index: number) => string showOverflowTooltip?: boolean = false align?: 'left' | 'center' | 'right' headerAlign?: 'left' | 'center' | 'right' tooltip?: string [name: string]: any } export interface Sorter { prop: string; asc: boolean; } export interface DataLoader { (params?: Record): Promise; } export interface PagedDataLoader { (req: PagedDataLoaderRequest): Promise>; } export interface PagedDataLoaderRequest { params?: Record; page: number; size: number; sorter: Sorter | null; } export interface PagedDataLoaderResponse { total: number; page: number; size: number; rows: T[]; }