@syncfusion/ej2-grids
Version:
Feature-rich JavaScript datagrid (datatable) control with built-in support for editing, filtering, grouping, paging, sorting, and exporting to Excel.
133 lines (132 loc) • 3.96 kB
TypeScript
import { IGrid, IRenderer, NotifyArgs } from '../base/interface';
import { ContentRender } from './content-renderer';
import { ServiceLocator } from '../services/service-locator';
import { InterSectionObserver } from '../services/intersection-observer';
/**
* @hidden
*/
export declare class DomVirtualElementHandler {
wrapper: HTMLElement;
placeholder: HTMLElement;
content: HTMLElement;
table: HTMLElement;
verticalScrollbar: HTMLElement;
verticalScrollerContainer: HTMLElement;
gridContent: HTMLElement;
renderWrapper(height?: number): void;
renderPlaceHolder(): void;
renderVerticalScrollbar(): void;
adjustTable(yValue: number): void;
setVirtualHeight(height?: number): void;
}
/**
* @hidden
*/
export declare class DomVirtualContentRenderer extends ContentRender implements IRenderer {
virtualEle: DomVirtualElementHandler;
content: HTMLElement;
private totalRecords;
private rowHeight;
private currentScrollTop;
private prevScrollTop;
private prevStartIndex;
/**
* @hidden
*/
currentStartIndex: number;
private preventScroll;
private locator;
private widthServices;
private expandedDetailRows;
private pendingSelectIndex;
private storedVirtualHeight;
private rowHeightCache;
private dynamicHeightSum;
private dynamicRowCount;
/** @hidden */
observer: InterSectionObserver;
private activeKey;
rowIndex: number;
cellIndex: number;
private isCancel;
/** @hidden */
offsets: {
[x: number]: number;
};
/** @hidden */
offsetKeys: string[];
private actions;
private count;
private maxPage;
private previousPage;
private pageSkip;
private pageTake;
private isNormaledit;
private editedRowIndex;
private isAdd;
/** @hidden */
virtualData: Object;
private emptyRowData;
private boundActionComplete;
private boundActionBegin;
constructor(parent: IGrid, locator?: ServiceLocator);
renderTable(): void;
refreshContentRows(args?: NotifyArgs): void;
appendContent(tbody: Element, frag: DocumentFragment, args: NotifyArgs, tableName?: string): void;
renderEmpty(tbody: HTMLElement): void;
private bindScrollEvents;
private domScrollListener;
private checkAndFetchCrossPageData;
private onEntered;
protected onDataReady(e?: NotifyArgs): void;
private setDomVirtualPageQuery;
/**
* @returns {void}
* @hidden */
refreshOffsets(): void;
private getPageFromIndex;
private isAutoRowHeight;
private hasRowHeightCallback;
private isDynamicHeight;
private measureRowHeights;
private getAvgRowHeight;
private getDataRowIndexByScrollTop;
private getStartIndex;
private getEndIndex;
private getVisibleRowCount;
private getBufferRowCount;
private initializeRowHeight;
private setVirtualDimensions;
getRowTopOffset(dataRowIndex: number): number;
updateDetailRowHeight(rowIndex: number, isExpand: boolean, detailRowHeight?: number): void;
clearExpandedDetailRows(): void;
removeEventListeners(): void;
destroy(): void;
private domVirtualCellFocus;
private focusCell;
private resetVirtualFocus;
private onGroupExpandCollapse;
private onApplyDomVirtualRowHeight;
private selectVirtualRow;
private scrollAfterEdit;
private restoreEdit;
private restoreAdd;
private editActionBegin;
private addActionBegin;
private getVirtualEditedData;
getVirtualData(data: {
virtualData: Object;
isAdd: boolean;
isCancel: boolean;
isScroll: boolean;
}): void;
getVirtualRowIndex(index: number): number;
private editCancel;
private editSuccess;
private updateCurrentViewData;
private createEmptyRowdata;
private resetIsedit;
private resetScrollPosition;
private actionComplete;
private actionBegin;
}