@true-directive/grid
Version:
Angular Data Grid from Yopsilon.
174 lines (173 loc) • 6.1 kB
TypeScript
/**
* Copyright (c) 2018-2019 Aleksey Melnikov, True Directive Company.
* @link https://truedirective.com/
* @license MIT
*/
import { ElementRef, EventEmitter, Renderer2, Injector, OnDestroy, AfterContentInit, DoCheck, OnChanges, ComponentFactoryResolver, ApplicationRef, SimpleChange } from '@angular/core';
import { GridLayout } from '@true-directive/base';
import { Column } from '@true-directive/base';
import { RowCell } from './row-cell.class';
import { GridStateService } from './grid-state.service';
/**
* Grid row directive. It's all about speed.
*/
export declare class RowDirective implements OnDestroy, AfterContentInit, DoCheck, OnChanges {
protected _renderer: Renderer2;
protected _cfResolver: ComponentFactoryResolver;
protected _appRef: ApplicationRef;
protected _injector: Injector;
elementRef: ElementRef;
/**
* Row for rendering
*/
row: any;
/**
* Grid's state
*/
state: GridStateService;
/**
* Index in the list of displayed rows
*/
axI: number;
/**
* Layout info
*/
layout: GridLayout;
/**
* Indicates we're an empty line and we don't need to do anything.
*/
empty: boolean;
/**
* Horizontal scroll position
*/
viewPortLeft: number;
/**
* Scrollbox width
*/
viewPortWidth: number;
/**
* Locale
*/
locale: string;
/**
* Event - clicking on the checkbox - will cause the value to change
*/
toggleCheckbox: EventEmitter<any>;
/**
* Data of the displayed row
*/
protected readonly rowData: any;
private _left_rendered;
private _right_rendered;
/**
* Cell list
*/
private readonly cells;
/**
* Cell selection levels
*/
private selectionMap;
/**
* View was initialized
*/
private _viewInitialized;
/**
* One of the cells was in edit mode before destroying the row
*/
private _wasEditor;
/**
* Row height in previous render
*/
protected _height0: number;
/**
* Locale in previous render
*/
private _locale0;
private _checkedAppearance;
protected _subscribes: any[];
/**
* Предыдущее значение общего текстового фильтра
*/
private _filter0;
protected readonly st: import("@true-directive/base").GridSettings;
protected readonly sta: import("@true-directive/base").GridAppearance;
protected readonly currentRowIndex: number;
protected readonly children: any;
protected _editorRef: any;
protected readonly _customCellRefs: any[];
protected readonly _skips: {
element: HTMLElement;
fromIndex: number;
toIndex: number;
}[];
firstCellRect(): any;
private firstCellClientHeight;
/**
* Получение поля по координатам
* @param x Координата поля
* @return [description]
*/
cellByXY(x: number, y: number): string;
/**
* Вызывается для получения Х-координаты ячейки с целью прокрутки
* компонента к заданной ячейке
* @param fieldName Наименование поля ячейки
* @return Координаты левого и правого края
*/
cellHorizontalPos(fieldName: string): {
l: number;
r: number;
};
clearSelection(): void;
private getSelectionMap;
protected setCellSelection(cell: RowCell, idx: number): number;
setSelection(): void;
protected clear(saveH?: boolean): void;
protected clearEditor(): void;
protected renderStub(rowData: any, cell: RowCell, col: Column): void;
protected renderBoolean(rowData: any, cell: RowCell, col: Column, v: any): void;
protected renderCheckbox(cell: RowCell, col: Column, v: any): void;
protected getEditorComponentType(col: Column): any;
protected getDh(): number;
protected setEditorHeight(cell: RowCell): void;
protected renderEditor(rowData: any, cell: RowCell, col: Column, v: any): void;
private renderCustomCell;
protected getDisplayedValue(col: Column, rowData: any, v: any): string;
protected fillCell(cell: RowCell, col: Column, rowData: any, isFirst: boolean, v: any, v_displayed: any): RowCell;
private needRender;
protected createTd(span: number): HTMLElement;
/**
* Создание ячейки
* @param col Колонка
* @param span Количество объединенных ячеек
* @return Объект RowCell
*/
protected createCell(col: Column, span?: number, isFirst?: boolean, xPos?: number, render?: boolean): RowCell;
protected needApplySpan(): number;
private createSkipCell;
protected renderRowEditor(): RowCell;
protected renderRow(): void;
private nextEl;
protected unskip(cell: RowCell, i: number): void;
protected renderByViewPort(): void;
private checkEditor;
/**
* We check whether it is necessary to recreate the string when changing the
* column. If there were simple changes (two columns swapped or one of them
* just disappeared), we try to apply these changes without a full rerendering.
* @return True if we don't need a rerender.
*/
protected checkColumns(): boolean;
protected checkValues(): boolean;
setDisabledFields(): void;
protected setParams(byInit?: boolean): void;
protected checkViewPort(): boolean;
protected check(): boolean;
ngOnChanges(changes: {
[property: string]: SimpleChange;
}): void;
ngDoCheck(): void;
ngAfterContentInit(): void;
ngOnDestroy(): void;
constructor(_renderer: Renderer2, _cfResolver: ComponentFactoryResolver, _appRef: ApplicationRef, _injector: Injector, elementRef: ElementRef);
}