luna-data-grid
Version:
Grid for displaying datasets
105 lines (104 loc) • 2.88 kB
TypeScript
import Component, { IComponentOptions } from '../share/Component';
import types from 'licia/types';
export interface IColumn {
id: string;
title: string;
weight?: number;
sortable?: boolean;
visible?: boolean;
comparator?: types.AnyFn;
}
export interface IOptions extends IComponentOptions {
columns: IColumn[];
height?: number;
maxHeight?: number;
minHeight?: number;
filter?: string | RegExp | types.AnyFn;
selectable?: boolean;
headerContextMenu?: boolean;
}
type NodeData = types.PlainObj<string | HTMLElement>;
export interface IDataGridNodeOptions {
selectable?: boolean;
}
export default class DataGrid extends Component<IOptions> {
private id;
private $headerRow;
private $fillerRow;
private fillerRow;
private $tableBody;
private $colgroup;
private $dataContainer;
private $style;
private dataContainer;
private $resizers;
private resizeIdx;
private resizeRightIdx;
private resizeStartX;
private resizeStartLeft;
private resizeDeltaX;
private resizeSensor;
private onResize;
private tableBody;
private nodes;
private displayNodes;
private colWidthsInitialized;
private colMap;
private sortId?;
private selectedNode;
private isAscending;
private sorted;
private colWidths;
private $space;
private $data;
private data;
private space;
private spaceHeight;
private topSpaceHeight;
private lastScrollTop;
private lastTimestamp;
private speedToleranceFactor;
private maxSpeedTolerance;
private minSpeedTolerance;
private scrollTimer;
constructor(container: HTMLElement, options: IOptions);
destroy(): void;
remove(node: DataGridNode): void;
append(data: NodeData, options?: IDataGridNodeOptions): DataGridNode;
setData(data: Array<NodeData | [NodeData, IDataGridNodeOptions]>, uniqueId?: string): void;
clear(): void;
fit(): void;
private clearData;
private updateHeight;
private selectNode;
private getRightIdx;
private onResizeColStart;
private onResizeColMove;
private onResizeColEnd;
private bindEvent;
private sortNodes;
private initWeights;
private updateWeights;
private positionResizers;
private onScroll;
private renderData;
private updateTopSpace;
private updateSpace;
private filterNode;
private renderHeader;
private renderResizers;
private initTpl;
}
export declare class DataGridNode {
container: HTMLElement;
data: types.PlainObj<string | HTMLElement>;
selectable: boolean;
private $container;
private dataGrid;
constructor(dataGrid: DataGrid, data: types.PlainObj<string | HTMLElement>, options: IDataGridNodeOptions);
text(): string;
select(): void;
deselect(): void;
render(): void;
}
export {};