import { AfterContentInit, Injector, NgZone, OnDestroy, QueryList, TemplateRef, ViewContainerRef } from '@angular/core';
import { ControlValueAccessor, FormBuilder, FormGroup } from '@angular/forms';
import { App, DynamicComponentRefProvider, PaginationService, StatePersistence, Viewport } from '@wm/core';
import { Observable, Subject } from 'rxjs';
import { StylableComponent, TrustAsPipe } from '@wm/components/base';
import { ListComponent } from '@wm/components/data/list';
import * as i0 from "@angular/core";
export declare class TableComponent extends StylableComponent implements AfterContentInit, OnDestroy, ControlValueAccessor {
    inj: Injector;
    fb: FormBuilder;
    private app;
    private dynamicComponentProvider;
    private statePersistence;
    private paginationService;
    private viewport;
    parentList: ListComponent;
    binddataset: any;
    binddatasource: any;
    readonlygrid: any;
    private ngZone;
    private trustAsPipe;
    static initializeProps: void;
    dataNavigator: any;
    private _tableElement;
    rowActionTmpl: QueryList<any>;
    rowActionsViewRef: ViewContainerRef;
    filterTmpl: QueryList<any>;
    filterViewRef: ViewContainerRef;
    inlineWidgetTmpl: QueryList<any>;
    inlineEditViewRef: ViewContainerRef;
    inlineWidgetNewTmpl: QueryList<any>;
    inlineEditNewViewRef: ViewContainerRef;
    customExprTmpl: QueryList<any>;
    customExprViewRef: ViewContainerRef;
    rowExpansionActionTmpl: QueryList<any>;
    rowExpansionTmpl: TemplateRef<any>;
    rowDetailViewRef: ViewContainerRef;
    rowExpansionActionViewRef: ViewContainerRef;
    dynamicTableRef: ViewContainerRef;
    private rowActionsCompiledTl;
    private rowFilterCompliedTl;
    private inlineCompliedTl;
    private inlineNewCompliedTl;
    private customExprCompiledTl;
    private customExprCompiledSummaryTl;
    private rowDefInstances;
    private rowDefMap;
    private rowExpansionActionTl;
    columns: {};
    formfields: {};
    datagridElement: any;
    datasource: any;
    editmode: any;
    enablecolumnselection: any;
    enablesort: boolean;
    filtermode: any;
    filteronkeypress: any;
    isrowselectable: any;
    searchlabel: any;
    formposition: any;
    gridclass: any;
    gridfirstrowselect: any;
    iconclass: any;
    ondemandmessage: any;
    viewlessmessage: any;
    showviewlessbutton: boolean;
    _triggeredByUser: any;
    isGridEditMode: any;
    loadingdatamsg: any;
    multiselect: any;
    name: any;
    _isDependent: any;
    navigation: any;
    navigationSize: any;
    navigationalign: any;
    nodatamessage: any;
    pagesize: any;
    currentpage: any;
    prevData: any;
    primaryKey: any[];
    radioselect: any;
    rowclass: any;
    rowngclass: any;
    selectedItems: any[];
    showheader: any;
    showrecordcount: any;
    showrowindex: any;
    subheading: any;
    title: any;
    shownewrow: any;
    deleteoktext: any;
    deletecanceltext: any;
    onError: any;
    onRowinsert: any;
    onRowupdate: any;
    onRowdelete: any;
    statehandler: any;
    selectedItemChange: Subject<unknown>;
    selectedItemChange$: Observable<any>;
    actions: any[];
    _actions: {
        header: any[];
        footer: any[];
    };
    exportOptions: any[];
    exportdatasize: any;
    formWidgets: any;
    headerConfig: any[];
    items: any[];
    navControls: any;
    rowActions: any[];
    selectedColumns: any;
    shownavigation: boolean;
    showFirstRow: boolean;
    dataset: any;
    _liveTableParent: any;
    isPartOfLiveGrid: any;
    gridElement: any;
    isNewRowInserted: any;
    isMobile: any;
    isLoading: any;
    isRowDeleted: any;
    documentClickBind: () => void;
    actionRowIndex: any;
    actionRowPage: any;
    prevFilterExpression: any;
    fieldDefs: any[];
    rowDef: any;
    rowInstance: any;
    private fullFieldDefs;
    private __fullData;
    private dataNavigatorWatched;
    private navigatorResultWatch;
    private navigatorMaxResultWatch;
    private filterInfo;
    private sortInfo;
    private serverData;
    private filternullrecords;
    private variableInflight;
    private isdynamictable;
    private _dynamicContext;
    private noOfColumns;
    onDemandLoad: any;
    infScroll: any;
    private isDataLoading;
    private currentPage;
    private applyProps;
    redraw: import("lodash").DebouncedFunc<(forceRender: any) => void>;
    debouncedHandleLoading: import("lodash").DebouncedFunc<(data: any) => void>;
    rowFilter: any;
    matchModeTypesMap: any;
    matchModeMsgs: any;
    emptyMatchModes: any;
    _searchSortHandler: () => void;
    searchSortHandler: (...args: any[]) => void;
    _isPageSearch: any;
    _isClientSearch: any;
    checkFiltersApplied: Function;
    getSearchResult: Function;
    getSortResult: Function;
    getFilterFields: Function;
    onRowFilterChange: () => void;
    onFilterConditionSelect: () => void;
    showClearIcon: () => void;
    clearRowFilter: () => void;
    adjustContainer: () => void;
    getNavigationTargetBySortInfo: Function;
    refreshData: Function;
    clearFilter: Function;
    ngform: FormGroup;
    updateVariable: Function;
    updateRecord: Function;
    deleteRecord: Function;
    insertRecord: Function;
    editRow: Function;
    addNewRow: Function;
    addRow: Function;
    deleteRow: Function;
    onRecordDelete: Function;
    initiateSelectItem: Function;
    hideEditRow: Function;
    saveRow: Function;
    cancelRow: Function;
    private _pageLoad;
    gridOptions: {
        data: any[];
        colDefs: any[];
        startRowIndex: number;
        mode: string;
        sortInfo: {
            field: string;
            direction: string;
        };
        filtermode: string;
        filteronkeypress: boolean;
        isrowselectable: boolean;
        searchLabel: string;
        rowActions: any[];
        headerConfig: any[];
        rowClass: string;
        editmode: string;
        formPosition: string;
        isMobile: boolean;
        rowExpansionEnabled: boolean;
        rowDef: {
            position: string;
        };
        name: string;
        messages: {
            selectField: string;
        };
        securityUtils: {
            pipeTransform: {};
        };
        navigation: string;
        isdynamictable: string;
        deletedRowIndex: number;
        lastActionPerformed: string;
        isSearchTrigerred: boolean;
        isDatasetUpdated: boolean;
        isDataUpdatedByUser: boolean;
        showviewlessbutton: boolean;
        ondemandmessage: string;
        viewlessmessage: string;
        loadingdatamsg: string;
        isNextPageData: any;
        ACTIONS: {
            DELETE: string;
            EDIT: string;
            SEARCH_OR_SORT: string;
            DEFAULT: string;
            FILTER_CRITERIA: string;
            DATASET_UPDATE: string;
        };
        actionRowIndex: any;
        actionRowPage: any;
        isLastPage: boolean;
        getCurrentPage: () => any;
        setCurrentPage: (pageNum: any) => void;
        getDataSource: () => any;
        getPageSize: () => any;
        getPageCount: () => any;
        enableNavigation: () => void;
        setDeletedRowIndex: (id: any) => void;
        setLastActionPerformed: (action: any) => void;
        isNavTypeScrollOrOndemand: () => boolean;
        setIsSearchTrigerred: (value: any) => void;
        setIsDatasetUpdated: (value: any) => void;
        setIsNextPageData: (value: any) => void;
        setIsDataUpdatedByUser: (value: any) => void;
        onDataRender: () => void;
        getParentTableData: () => {
            parentId: any;
            parentPage: any;
        };
        onRowSelect: (row: any, e: any) => void;
        assignSelectedItems: (row: any, e: any, rowInfo: any) => void;
        onRowDblClick: (row: any, e: any) => void;
        onRowDeselect: (row: any, e: any) => void;
        callOnRowDeselectEvent: (row: any, e: any) => void;
        callOnRowClickEvent: (row: any, e: any) => void;
        closePopover: (element: any) => void;
        onColumnSelect: (col: any, e: any) => void;
        onColumnDeselect: (col: any, e: any) => void;
        onHeaderClick: (col: any, e: any) => void;
        onRowDelete: (row: any, cancelRowDeleteCallback: any, e: any, callBack: any, options: any) => void;
        onRowInsert: (row: any, e: any, callBack: any, options: any) => void;
        beforeRowUpdate: (row: any, eventName?: any) => void;
        afterRowUpdate: (row: any, e: any, callBack: any, options: any) => void;
        onBeforeRowUpdate: (row: any, e: any, options: any) => any;
        onBeforeRowInsert: (row: any, e: any, options: any) => any;
        onBeforeRowDelete: (row: any, e: any, options: any) => any;
        onFormRender: ($row: any, e: any, operation: any, alwaysNewRow: any) => void;
        onBeforeFormRender: (row: any, e: any, operation: any) => any;
        registerRowNgClassWatcher: (rowData: any, index: any) => void;
        registerColNgClassWatcher: (rowData: any, colDef: any, rowIndex: any, colIndex: any, summaryRow: any) => void;
        clearCustomExpression: () => void;
        clearRowDetailExpression: () => void;
        generateCustomExpressions: (rowData: any, index: any, summaryRow?: any) => void;
        generateRowExpansionCell: (rowData: any, index: any) => void;
        getRowExpansionAction: (index: any) => any;
        generateRowDetailView: ($event: any, rowData: any, rowId: any, $target: any, $overlay: any, callback: any) => void;
        onBeforeRowCollapse: ($event: any, row: any, rowId: any) => any;
        onRowCollapse: ($event: any, row: any) => void;
        getCustomExpression: (fieldName: any, index: any, summaryRow?: any) => any;
        clearRowActions: () => void;
        generateRowActions: (rowData: any, index: any) => void;
        getRowAction: (index: any) => any;
        generateInlineEditRow: (rowData: any, alwaysNewRow: any) => void;
        getInlineEditWidget: (fieldName: any, value: any, alwaysNewRow: any) => any;
        setFieldValue: (fieldName: any, value: any) => void;
        getFieldValue: (fieldName: any) => any;
        addLoadMoreBtn: () => void;
        bindScrollEvt: () => void;
        generateFilterRow: () => void;
        getFilterWidget: (fieldName: any) => any;
        setGridEditMode: (val: any) => void;
        setGridState: (val: any) => void;
        setActionRowIndex: (val: any) => void;
        clearActionRowIndex: () => void;
        noChangesDetected: () => void;
        redrawWidgets: () => void;
        searchHandler: any;
        sortHandler: any;
        timeoutCall: (fn: any, delay: any) => void;
        runInNgZone: (fn: any) => void;
        safeApply: () => void;
        setTouched: (name: any) => void;
        clearForm: any;
        callLoadInlineWidgetData: () => void;
        applyValidations: (col: any, alwaysNewRow: any) => void;
        removeValidations: (alwaysNewRow: any) => void;
    };
    private _gridData;
    private _selectedItemsExist;
    set gridData(newValue: any);
    get gridData(): any;
    get selecteditem(): any;
    set selecteditem(val: any);
    onKeyPress($event: any): void;
    constructor(inj: Injector, fb: FormBuilder, app: App, dynamicComponentProvider: DynamicComponentRefProvider, statePersistence: StatePersistence, paginationService: PaginationService, viewport: Viewport, parentList: ListComponent, binddataset: any, binddatasource: any, readonlygrid: any, ngZone: NgZone, trustAsPipe: TrustAsPipe, explicitContext: any);
    ngAfterContentInit(): void;
    private getConfiguredState;
    private handleStateParams;
    private triggerWMEvent;
    private sortStateHandler;
    private searchStateHandler;
    filterEmptyValues(item: any): boolean;
    compareFilterExpressions(prevFilters: any, newFilters: any): boolean;
    setLastActionToFilterCriteria(): void;
    setLastActionToDatasetUpdate(): void;
    checkIfVarFiltersApplied(): void;
    watchVariableDataSet(newVal: any): void;
    ngOnDestroy(): void;
    addRowIndex(row: any): any;
    addEventsToContext(context: any): void;
    execute(operation: any, options: any): any;
    isNavigationEnabled(): any;
    getClonedRowObject(rowData: any): any;
    handleLoading(data: any): void;
    setDisabledOnField(operation: any, colDef: any, widgetType: any): void;
    resetFormControl(ctrl: any): void;
    clearForm(newRow?: any): void;
    showFieldBasedOnScreenType(field: any): any;
    isEmptyRecord(record: any): boolean;
    removeEmptyRecords(serviceData: any): any[];
    setGridData(serverData: any): void;
    setDataGridOption(optionName: any, newVal: any, forceSet?: boolean): void;
    callDataGridMethod(...args: any[]): any;
    renderOperationColumns(): void;
    enablePageNavigation(): void;
    resetPageNavigation(): void;
    isDataValid(): boolean;
    populateGridData(serviceData: any): void;
    generateDynamicColumns(columns: any): Promise<void>;
    prepareColDefs(data: any): void;
    createGridColumns(data: any): void;
    getSortExpr(): any;
    onPropertyChange(key: string, nv: any, ov?: any): void;
    onDataSourceChange(): void;
    private clearActionRowVars;
    onStyleChange(key: any, nv: any, ov: any): void;
    populateActions(): void;
    renderDynamicFilterColumn(filteTemRef: any): void;
    registerColumns(tableColumn: any, colIndex: any): void;
    registerFormField(name: any, formField: any): void;
    registerActions(tableAction: any): void;
    registerRow(tableRow: any, rowInstance: any): void;
    registerRowActions(tableRowAction: any): void;
    selectItem(item: any, data: any): void;
    deselectItem(item: any): void;
    onDataNavigatorDataSetChange(nv: any): any;
    toggleMessage(show: any, type: any, msg: any, header?: any): void;
    export($item: any): void;
    expandRow(rowId: any): void;
    collapseRow(rowId: any): void;
    private _documentClickBind;
    private _redraw;
    invokeActionEvent($event: any, expression: string): void;
    protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any): void;
    triggerUploadEvent($event: any, eventName: any, fieldName: any, row: any): void;
    registerFormWidget(): void;
    writeValue(): void;
    private _onChange;
    private _onTouched;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    ngOnDetach(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent, [null, null, null, null, null, null, null, { optional: true; }, { attribute: "dataset.bind"; }, { attribute: "datasource.bind"; }, { attribute: "readonlygrid"; }, null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent, "[wmTable]", never, {}, {}, ["rowExpansionTmpl", "rowActionTmpl", "filterTmpl", "inlineWidgetTmpl", "inlineWidgetNewTmpl", "customExprTmpl", "rowExpansionActionTmpl"], never, false, never>;
}
