e-virt-table
Version:
A powerful data table based on canvas. You can use it as data grid、Microsoft Excel or Google sheets. It supports virtual scroll、cell edit etc.
104 lines (103 loc) • 3.93 kB
TypeScript
import { ChangeItem, Column, ConfigType, CustomHeader, EventCallback, EVirtTableOptions, FilterMethod, Position, RowParams, ValidateField, ValidateItemError } from './types';
import Context from './Context';
import { mergeColCell, mergeRowCell, getSpanArrByRow, getSpanObjByColumn } from './util';
import './style.css';
export default class EVirtTable {
private options;
private scroller;
private header;
private body;
private footer;
private selector;
private autofill;
private tooltip;
private editor;
private empty;
private overlayer;
private contextMenu;
private loading;
private finderBar;
private animationFrameId;
private animationFrameId2;
ctx: Context;
constructor(target: HTMLDivElement, options: EVirtTableOptions);
private createContainer;
draw(ignoreOverlayer?: boolean): void;
loadConfig(_config: ConfigType): void;
loadColumns(columns: Column[]): void;
loadData(data: any[]): void;
loadFooterData(data: any[]): void;
setCustomHeader(customHeader: CustomHeader, ignoreEmit?: boolean): void;
getCustomHeader(): {
columns: Column[];
customHeader: CustomHeader;
};
setLoading(loading: boolean): void;
on(event: string, callback: EventCallback): void;
emit(event: string, ...args: any[]): void;
off(event: string, callback: EventCallback): void;
filterMethod(func: FilterMethod): void;
editCell(rowIndex: number, colIndex: number): void;
setItemValue(rowKey: string, key: string, value: any, history?: boolean, reDraw?: boolean, isEditor?: boolean): void;
batchSetItemValue(list: ChangeItem[], history?: boolean): void;
setItemValueByEditor(rowKey: string, key: string, value: any, history?: boolean, reDraw?: boolean): void;
clearEditableData(value?: null): ChangeItem[];
clearEditor(): void;
doLayout(): void;
getChangedData(): {
rowKey: string;
colKey: string;
row: any;
originalValue: any;
value: any;
}[];
getChangedRows(): any[];
setCurrentRowByRowIndex(rowIndex: number): void;
setCurrentRow(rowKey: string): void;
getCurrentRow(): RowParams | undefined;
clearValidate(): void;
validateFields(ValidateFields: ValidateField[], scrollError?: boolean): Promise<unknown>;
validate(scrollError?: boolean): Promise<unknown>;
setValidations(errors: ValidateItemError[]): void;
getValidations(): Promise<unknown>;
hasValidationError(): boolean;
scrollTo(x: number, y: number): void;
scrollXTo(x: number): void;
scrollToColkey(key: string): void;
scrollToRowkey(key: string): void;
scrollToColIndex(colIndex: number): void;
scrollToRowIndex(rowIndex: number): void;
scrollYTo(y: number): void;
setExpandRowKeys(keys: any[], expand?: boolean): void;
getExpandRowKeys(): string[];
clearSelection(): void;
toggleRowSelection(row: any): void;
setSelectionByRows(rows: any[], selected?: boolean): void;
setSelectionByRowKeys(keys: string[], selected?: boolean): void;
toggleAllSelection(): void;
toggleRowExpand(rowKey: string, expand: boolean): void;
toggleExpandAll(expand: boolean): void;
getSelectionRows(): any[];
getPositionForRowIndex(rowIndex: number): Position;
getCellValue(rowKey: string, key: string): any;
getCellValueByIndex(rowIndex: number, colIndex: number): {
rowKey: string;
key: string;
value: any;
} | null;
clearSort(): void;
clearMaxRowHeight(): void;
contextMenuHide(): void;
getUtils(): {
mergeColCell: typeof mergeColCell;
mergeRowCell: typeof mergeRowCell;
getSpanArrByRow: typeof getSpanArrByRow;
getSpanObjByColumn: typeof getSpanObjByColumn;
};
getColumnByKey(key: string): Column | undefined;
clearChangeData(): void;
/**
* 销毁
*/
destroy(): void;
}