import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
import { AfterContentInit, AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnChanges, OnDestroy, OnInit, QueryList, Renderer2, SimpleChanges, TemplateRef } from '@angular/core';
import { Subscription } from 'rxjs';
import { DataTableHeadComponent } from './data-table-head.component';
import { CellSelectedEventArg, CheckableRelation, ColumnResizeEventArg, RowCheckChangeEventArg, RowSelectedEventArg, SortEventArg, TableCheckOptions, TableCheckStatusArg, TableExpandConfig, TableWidthConfig } from './data-table.model';
import { TableTbodyComponent } from './table/body/tbody.component';
import { TableThComponent } from './table/head/th/th.component';
import { TableTheadComponent } from './table/head/thead.component';
import { DataTableColumnTmplComponent } from './tmpl/data-table-column-tmpl.component';
import * as i0 from "@angular/core";
export declare class DataTableComponent implements OnDestroy, OnInit, OnChanges, AfterContentInit, AfterViewInit {
    private elementRef;
    private ngZone;
    private renderer;
    private cdr;
    private doc;
    /**
     * 【可选】Datatable是否提供勾选行的功能
     */
    checkable: boolean;
    /**
     * 【可选】表头checkbox是否disabled
     */
    headerCheckDisabled: boolean;
    /**
     * 【可选】表头checkbox是否可见
     */
    headerCheckVisible: boolean;
    /**
     * 【可选】表头选中的下拉项及操作
     */
    checkOptions: TableCheckOptions[];
    checkOptionsIndex: number;
    selectOptionOnCheckbox: boolean;
    /**
     * 【可选】是否提供显示行详情的功能
     */
    showExpandToggle: boolean;
    /**
     * 【可选】是否固定表头（在表格超过容器最大高度时，表格可滚动时生效）
     */
    fixHeader: boolean;
    /**
     * 【可选】表格在超出容器时，是否可以通过滚动查看表格内容
     */
    scrollable: boolean;
    /**
     * 【可选】默认表格使用的表格类型，可选值为'cell' @deprecated
     */
    editModel: string;
    /**
     * 【可选】限制表格最大宽度，默认撑满父容器
     */
    maxWidth: string;
    /**
     * 【可选】限制最大高度，默认
     */
    maxHeight: string;
    /**
     * 表格类型 @deprecated
     */
    type: any;
    /**
     * 鼠标悬浮行时是否高亮
     */
    rowHoveredHighlight: boolean;
    /**
     * 鼠标悬浮行时$hovered是否记录到rowItem中
     */
    generalRowHoveredData: any;
    /**
     * 表格自定义样式
     */
    cssClass: string;
    /**
     * 表格宽度
     */
    tableWidth: string;
    /**
     * 表格高度
     */
    tableHeight: string;
    /**
     * 固定表头指定高度是否包含表头的高度，`tableHeight`设置的高度默认是表格body的高度
     */
    containFixHeaderHeight: boolean;
    /**
     * 【可选】是否限制多列排序的输出限制为一项
     */
    onlyOneColumnSort: boolean;
    /**
     * 【可选】多列选择数组，用来指导那几列会被排序
     */
    multiSort: SortEventArg[];
    /**
     * 【可选】是否可以拖拽调整列宽
     */
    resizeable: boolean;
    /**
     * 【可选】用来自定义表格是否可以拖动
     */
    colDraggable: boolean;
    /**
     * 【可选】用来自定义不可拖拽的前几列
     */
    colDropFreezeTo: number;
    /**
     * 【可选】用来自定义详情页的模板 @deprecated
     */
    detailTemplateRef: TemplateRef<any>;
    /**
     * 【可选】同时绑定单击、双击事件时，用于区分点击的时间间隔,默认300ms，两个事件不同时使用可以指定为0
     */
    timeout: number;
    /**
     * 【可选】配置表头操作未激活状态下是否显示操作区域，默认不显示
     */
    showOperationArea: boolean;
    /**
     * 【可选】是否显示排序未激活图标，默认显示,
     */
    showSortIcon: boolean;
    /**
     * 【可选】是否显示筛选未激活图标，默认显示,
     */
    showFilterIcon: boolean;
    /**
     * 多列选择Change事件，用来更新多列选择数组, column param
     * */
    multiSortChange: EventEmitter<SortEventArg[]>;
    /**
     * 表格单元格点击事件
     */
    cellClick: EventEmitter<CellSelectedEventArg>;
    /**
     * 表格单元格双击事件
     */
    cellDBClick: EventEmitter<CellSelectedEventArg>;
    /**
     * 表格行点击事件
     */
    rowClick: EventEmitter<RowSelectedEventArg>;
    /**
     * 表格行双击事件
     */
    rowDBClick: EventEmitter<RowSelectedEventArg>;
    /**
    * 行detail toggle事件
    */
    detialToggle: EventEmitter<any>;
    /**
     * 表格单元格开始编辑前的拦截事件
     */
    beforeCellEdit: (rowItem: any, column: any) => Promise<any>;
    /**
     * 表格单元格开始编辑后的拦截事件
     */
    beforeCellEditEnd: (rowItem: any, column: any) => boolean;
    /**
     * 表格单元格开始编辑事件
     */
    cellEditStart: EventEmitter<CellSelectedEventArg>;
    /**
     * 表格单元格结束编辑事件
     */
    cellEditEnd: EventEmitter<CellSelectedEventArg>;
    /**
     * 某行的勾选状态变化事件
     */
    rowCheckChange: EventEmitter<RowCheckChangeEventArg>;
    /**
     * 当前页码全勾选状态变化事件
     */
    checkAllChange: EventEmitter<boolean>;
    /**
     * 延迟懒加载完成事件
     */
    loadMore: EventEmitter<any>;
    /**
     * 列宽变化事件
     */
    resize: EventEmitter<ColumnResizeEventArg>;
    /**
     * 当前表格层级，默认为0，在树形表格场景下自增长
     * 内部嵌套使用，不对外暴露
     */
    tableLevel: number;
    /**
     * 配置树形表格的父子选中是否互相关联
     * upward：选中子关联父
     * downward： 选中父关联子
     */
    checkableRelation: CheckableRelation;
    /**
     * 异步加载子列表
     */
    loadChildrenTable: (rowItem: any) => Promise<any>;
    /**
     * 异步加载全部子列表
     */
    loadAllChildrenTable: () => Promise<any>;
    /**
     * 是否虚拟滚动
     */
    virtualScroll: any;
    /**
     * 配置header的展开内容
     */
    headerExpandConfig: TableExpandConfig;
    /**
     * 子列表关闭事件
     */
    childrenTableClose: EventEmitter<any>;
    /**
     * 全部子列表关闭事件
     */
    allChildrenTableClose: EventEmitter<any>;
    /**
     * 虚拟滚动配置
     */
    virtualItemSize: number;
    virtualMinBufferPx: number;
    virtualMaxBufferPx: number;
    /**
     * 懒加载
     */
    lazy: boolean;
    /**
     * 列宽配置
     */
    tableWidthConfig: TableWidthConfig[];
    /**
     * 表头是否有背景色
     */
    headerBg: boolean;
    /**
     * 表格布局
     */
    tableLayout: 'fixed' | 'auto';
    /**
     * 表格边框类型，默认有行边框，bordered：全边框，borderless：无边框
     */
    borderType: '' | 'bordered' | 'borderless';
    /**
     * 表格是否展示为斑马纹间隔
     */
    striped: boolean;
    /**
     * 表格内部滚动事件
     */
    tableScrollEvent: EventEmitter<Event>;
    minHeight: string;
    columnDragEnd: EventEmitter<any>;
    /**
     * 表格尺寸，sm对应行高40px， md对应行高48px，lg对应行高56px
     */
    size: 'mini' | 'xs' | 'sm' | 'md' | 'lg';
    shadowType: 'normal' | 'embed';
    tableOverflowType: 'overlay' | 'auto';
    columns: QueryList<DataTableColumnTmplComponent>;
    innerHeader: TableTheadComponent;
    innerBody: TableTbodyComponent;
    thList: QueryList<TableThComponent>;
    noResultTemplate: TemplateRef<any>;
    fixHeaderContainerRefElement: ElementRef;
    tableViewRefElement: ElementRef;
    virtualScrollViewport: CdkVirtualScrollViewport;
    normalScrollElement: ElementRef;
    vitualScrollElement: TemplateRef<any>;
    columnHeaderComponent: DataTableHeadComponent;
    devuiNormalScrollBody: ElementRef;
    get hostHeight(): string;
    get hasShadow(): boolean;
    hasWidthScroll: boolean;
    hasHeightScroll: boolean;
    _dataSource: any[];
    _pageAllChecked: boolean;
    selectable: boolean;
    allChecked: number[];
    selectedRowItem: any;
    selectedColumnItem: any;
    isCellEdit: boolean;
    editRowItem: any;
    documentClickEvent: EventEmitter<any>;
    cellEditorClickEvent: EventEmitter<Event>;
    _hideColumn: string[];
    _columns: DataTableColumnTmplComponent[];
    displayDataSource: any[];
    headertoggleTableSubscription: Subscription;
    headerCheckStatusSubscription: Subscription;
    searchQueryChange: EventEmitter<{
        [key: string]: any;
    }>;
    halfChecked: boolean;
    childrenTableOpen: boolean;
    private scrollY;
    BUILTIN_COL_WIDTH: string;
    BUILTIN_COL_WIDTH_EXTRA: string;
    tableBodyEl: ElementRef;
    onDocumentClickListen: any;
    _tableTotalWidth: number;
    _lastColSize: number;
    set content(content: ElementRef);
    set dataSource(dataSource: any[]);
    get dataSource(): any[];
    set hideColumn(hideColumn: string[]);
    get hideColumn(): string[];
    set pageAllChecked(pageAllChecked: boolean);
    get pageAllChecked(): boolean;
    virtualBodyHeight: any;
    document: Document;
    constructor(elementRef: ElementRef, ngZone: NgZone, renderer: Renderer2, cdr: ChangeDetectorRef, doc: any);
    initVirtualBodyHeight(): void;
    private getColumns;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    onDocumentClick($event: Event): void;
    ngAfterContentInit(): void;
    initScrollStatus(): void;
    ngAfterViewInit(): void;
    initScrollClass(): void;
    private resetThSortOrder;
    updateColumns(): void;
    ngOnDestroy(): void;
    onHandleSort(column: SortEventArg): void;
    onCellClick($event: CellSelectedEventArg): void;
    onCellEditStart($event: CellSelectedEventArg): void;
    onCellEditEnd($event: CellSelectedEventArg): void;
    onCellDBClick($event: CellSelectedEventArg): void;
    onRowClick($event: RowSelectedEventArg): void;
    onRowDBClick($event: RowSelectedEventArg): void;
    onDetailToggle($event: any): void;
    private hasChecked;
    private hasUnChecked;
    setRowCheckStatus($event: RowCheckChangeEventArg): void;
    private setParentCheckStatus;
    private findLastParent;
    private setSelfCheckStatus;
    private setCheckedStatus;
    onCheckAllChange($event: boolean): void;
    onSearchQueryChange($event: {
        [key: string]: any;
    }): void;
    getSelectedRowItem(): any[];
    onLoadMore(event: any): void;
    private updateColumnsWidth;
    beginResizeHandlerEvent($event: any): void;
    onResizingFixedHandler({ field, width }: {
        field: any;
        width: any;
    }): void;
    onResizeHandler({ width, field }: {
        width: any;
        field: any;
    }): void;
    handleDragTable({ from, to }: {
        from: any;
        to: any;
    }): void;
    onBodyScroll(event?: Event): void;
    private setScrollViewClass;
    private unSubscription;
    setRowChildToggleStatus(rowItem: any, open: boolean): void;
    setTableChildrenToggleStatus(open: boolean): void;
    private travelChildrenToggleStatus;
    onToggleAllChildrenTable(open: boolean): void;
    cancelEditingStatus(): void;
    private collectCheckedRows;
    getCheckedRows(): any[];
    setTableCheckStatus(status: TableCheckStatusArg): void;
    updateVirtualScrollSize(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DataTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DataTableComponent, "d-data-table", ["dataTable"], { "checkable": { "alias": "checkable"; "required": false; }; "headerCheckDisabled": { "alias": "headerCheckDisabled"; "required": false; }; "headerCheckVisible": { "alias": "headerCheckVisible"; "required": false; }; "checkOptions": { "alias": "checkOptions"; "required": false; }; "checkOptionsIndex": { "alias": "checkOptionsIndex"; "required": false; }; "selectOptionOnCheckbox": { "alias": "selectOptionOnCheckbox"; "required": false; }; "showExpandToggle": { "alias": "showExpandToggle"; "required": false; }; "fixHeader": { "alias": "fixHeader"; "required": false; }; "scrollable": { "alias": "scrollable"; "required": false; }; "editModel": { "alias": "editModel"; "required": false; }; "maxWidth": { "alias": "maxWidth"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "type": { "alias": "type"; "required": false; }; "rowHoveredHighlight": { "alias": "rowHoveredHighlight"; "required": false; }; "generalRowHoveredData": { "alias": "generalRowHoveredData"; "required": false; }; "cssClass": { "alias": "cssClass"; "required": false; }; "tableWidth": { "alias": "tableWidth"; "required": false; }; "tableHeight": { "alias": "tableHeight"; "required": false; }; "containFixHeaderHeight": { "alias": "containFixHeaderHeight"; "required": false; }; "onlyOneColumnSort": { "alias": "onlyOneColumnSort"; "required": false; }; "multiSort": { "alias": "multiSort"; "required": false; }; "resizeable": { "alias": "resizeable"; "required": false; }; "colDraggable": { "alias": "colDraggable"; "required": false; }; "colDropFreezeTo": { "alias": "colDropFreezeTo"; "required": false; }; "detailTemplateRef": { "alias": "detailTemplateRef"; "required": false; }; "timeout": { "alias": "timeout"; "required": false; }; "showOperationArea": { "alias": "showOperationArea"; "required": false; }; "showSortIcon": { "alias": "showSortIcon"; "required": false; }; "showFilterIcon": { "alias": "showFilterIcon"; "required": false; }; "beforeCellEdit": { "alias": "beforeCellEdit"; "required": false; }; "beforeCellEditEnd": { "alias": "beforeCellEditEnd"; "required": false; }; "tableLevel": { "alias": "tableLevel"; "required": false; }; "checkableRelation": { "alias": "checkableRelation"; "required": false; }; "loadChildrenTable": { "alias": "loadChildrenTable"; "required": false; }; "loadAllChildrenTable": { "alias": "loadAllChildrenTable"; "required": false; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; }; "headerExpandConfig": { "alias": "headerExpandConfig"; "required": false; }; "virtualItemSize": { "alias": "virtualItemSize"; "required": false; }; "virtualMinBufferPx": { "alias": "virtualMinBufferPx"; "required": false; }; "virtualMaxBufferPx": { "alias": "virtualMaxBufferPx"; "required": false; }; "lazy": { "alias": "lazy"; "required": false; }; "tableWidthConfig": { "alias": "tableWidthConfig"; "required": false; }; "headerBg": { "alias": "headerBg"; "required": false; }; "tableLayout": { "alias": "tableLayout"; "required": false; }; "borderType": { "alias": "borderType"; "required": false; }; "striped": { "alias": "striped"; "required": false; }; "minHeight": { "alias": "minHeight"; "required": false; }; "size": { "alias": "size"; "required": false; }; "shadowType": { "alias": "shadowType"; "required": false; }; "tableOverflowType": { "alias": "tableOverflowType"; "required": false; }; "dataSource": { "alias": "dataSource"; "required": false; }; "hideColumn": { "alias": "hideColumn"; "required": false; }; "pageAllChecked": { "alias": "pageAllChecked"; "required": false; }; }, { "multiSortChange": "multiSortChange"; "cellClick": "cellClick"; "cellDBClick": "cellDBClick"; "rowClick": "rowClick"; "rowDBClick": "rowDBClick"; "detialToggle": "detialToggle"; "cellEditStart": "cellEditStart"; "cellEditEnd": "cellEditEnd"; "rowCheckChange": "rowCheckChange"; "checkAllChange": "checkAllChange"; "loadMore": "loadMore"; "resize": "resize"; "childrenTableClose": "childrenTableClose"; "allChildrenTableClose": "allChildrenTableClose"; "tableScrollEvent": "tableScrollEvent"; "columnDragEnd": "columnDragEnd"; }, ["innerHeader", "innerBody", "noResultTemplate", "columns", "thList"], ["thead"], false, never>;
}
