import { WidgetBase } from '@csnext/cs-client';
import { FeatureType, FilterGraphElement, GraphElement, PropertyType } from '@csnext/cs-data';
import { CardSize, IMenu, IWidget } from '@csnext/cs-core';
import { DocDatasource, DataGridOptions } from '../..';
import { CellValueChangedEvent, ColDef, GridApi } from 'ag-grid-community';
import 'ag-grid-community/dist/styles/ag-grid.css';
import 'ag-grid-community/dist/styles/ag-theme-alpine.css';
import 'ag-grid-community/dist/styles/ag-theme-alpine-dark.css';
import { ISuggestionEngine } from './suggestions/suggestions';
export declare class KanBanColumn {
    title?: string;
    prop?: string;
    elements?: GraphElement[];
    element?: GraphElement;
    collapsed?: boolean;
    newCard?: boolean;
    newTitle?: string;
}
export declare class FilterPanel {
    title?: string;
    propertyType?: PropertyType;
    selectedOptions?: string[];
}
export declare class GridGroup {
    id?: string;
    title?: string;
    items?: GraphElement[];
}
export default class ElementDataGrid extends WidgetBase {
    toggle_view: number;
    featureType: FeatureType | null;
    activeElement: GraphElement | null;
    selectedElements: GraphElement[];
    potentialProperties: {
        [key: string]: PropertyType;
    };
    sort: PropertyType | null;
    group: PropertyType | undefined | null;
    classTypes: FeatureType[];
    sortOptions?: PropertyType[] | null;
    groupOptions?: PropertyType[] | null;
    groupKey?: null | string;
    inverseSort?: boolean;
    localPreset?: FilterGraphElement;
    focus: string;
    search: string;
    filterPanels: FilterPanel[];
    settingsOpen?: boolean;
    showGroups?: boolean;
    selectedTree?: any;
    source?: DocDatasource | null;
    items: GraphElement[] | undefined;
    isoGroups?: any;
    isoCards?: any;
    calendar?: any;
    treeView?: any;
    private showKanbanContextmenu?;
    private contextMenuX;
    private contextMenuY;
    private showContextMenu?;
    private kanbanMenuItems;
    private filterProperty;
    private filterProperties?;
    private filterTitle?;
    private filterValues?;
    gridApi?: GridApi;
    columnApi: any | null;
    linkedElement?: GraphElement;
    rowData: any | null;
    groups: GridGroup[];
    columnDefs: ColDef[] | null;
    searchEnabled: boolean;
    suggestionsAvailable: boolean;
    typeToLabel: {
        month: string;
        week: string;
        day: string;
        '4day': string;
    };
    headers: any[];
    defaultColDef: ColDef;
    treeItems: any[];
    upToDate: boolean;
    get options(): DataGridOptions;
    isLinked(element: GraphElement): boolean;
    onDragEnter(event: DragEvent): void;
    onDrop(event: DragEvent): void;
    private updateFilterPanels;
    private updateLinkedElement;
    private unlinkElement;
    private additionalContextMenuItems;
    openContextMenu(e: any, elementId?: string): void;
    private showKanbanMenu;
    onCellValueChanged(event: CellValueChangedEvent): void;
    onGridSelection(): void;
    resize(): void;
    onGridReady(params: any): void;
    selectSplitWidget(element?: GraphElement): void;
    openElement(element: GraphElement, open?: boolean): void;
    openElementCard(element: GraphElement, viewer?: boolean): void;
    itemPropValue(prop: PropertyType, element: GraphElement): any;
    setToday(): void;
    graphNode(element: GraphElement): void;
    filterChanged(): void;
    treeSelectionChanged(): void;
    viewChanged(): void;
    openTreeItem(item: any[]): void;
    expandTree(): void;
    collapseTree(): void;
    toggleCheckbox(entity: GraphElement): Promise<void>;
    editLinked(entity: GraphElement): Promise<void>;
    private linkTree;
    exportCsv(): void;
    get splitWidgetLayout(): any;
    linkAll(): Promise<void>;
    updateSearchFilter(): void;
    toggleSettings(): void;
    openSearch(): void;
    closeSearch(): void;
    getWidget(): IWidget | undefined;
    unLinkAll(): Promise<void>;
    unlink(entity: GraphElement, update?: boolean): Promise<boolean>;
    link(entity: GraphElement, update?: boolean): Promise<boolean>;
    toggleLinked(entity: GraphElement): Promise<void>;
    itemPropValues(prop: PropertyType, element: GraphElement): any;
    private filterDataTable;
    selectElement(element: GraphElement, selected: boolean): void;
    clickCalendarItem(e: any): void;
    updateCardsLayout(): void;
    unselectAll(): void;
    selectAll(): void;
    deleteSelection(): void;
    updateHeaders(): void;
    toggleSort(): void;
    updateSort(): void;
    setGroup(prop?: PropertyType | string): void;
    selectTableItem(item: GraphElement): void;
    prev(): void;
    next(): void;
    setCardSize(size: CardSize): void;
    getIsoGroupOptions(): {
        itemSelector: string;
        layoutMode: string;
        sortAscending: boolean;
        getSortData: {
            name: (s: any) => any;
        };
        sortBy: string;
        masonry: {
            columnWidth: string;
        };
    };
    getIsoOptions(): {
        itemSelector: string;
        layoutMode: string;
        sortAscending: boolean;
        getSortData: {
            name: (s: any) => any;
            custom: (s: any) => any;
            assessment: (s: any) => string;
        };
        sortBy: string;
        masonry: {
            columnWidth: string;
        };
    };
    addChildEntity(type: FeatureType, parent?: GraphElement): Promise<void>;
    addGroupItem(group: GridGroup): Promise<void>;
    linkElement(): Promise<void>;
    createLink(e: GraphElement, parent?: GraphElement): Promise<void>;
    callSuggestionAction(m: IMenu): Promise<void>;
    addEntity(type: FeatureType, parent?: GraphElement, properties?: any): Promise<void>;
    editEntity(element: GraphElement): void;
    removeElement(entity: GraphElement, relations?: boolean, notify?: boolean, confirm?: boolean): Promise<void>;
    constructor();
    kanbanColumns: KanBanColumn[];
    updateKanbanValue(propType: PropertyType, element: GraphElement, value: any): Promise<void>;
    movedKanbanCard(e: any): Promise<void>;
    getKanbanColumnStyle(column: any): any;
    getKanbanCardStyle(element: GraphElement): any;
    toggleKanbanColumn(column: KanBanColumn): void;
    addKanbanColumnElement(column: KanBanColumn): void;
    removeKanbanColumnElement(column: KanBanColumn): void;
    createKanbanItem(column: KanBanColumn, event: any): Promise<void>;
    selectKanbanProperty(property: string): void;
    getKanbanColumns(propType: PropertyType): {
        title: string;
        value: any;
    }[];
    updateKanban(): void;
    getGrid(): this;
    updateTree(treeItems: any[], base?: GraphElement, active?: any): any[] | undefined;
    viewDay(date: string): void;
    private storeFilterQuery;
    private checkQueryParams;
    setFilterValue(value: string): void;
    setFilterProperty(prop: string): void;
    toggleGrouping(): void;
    updateGroups(): void;
    updateSuggestionEngine(engine: ISuggestionEngine): Promise<void>;
    updateSuggestions(): Promise<boolean>;
    updateItems(force?: boolean): Promise<void>;
    updateLinkedEntities(): void;
    update(): void;
    dateString(date: number): string;
    getColor(element: GraphElement): string;
    contentLoaded(source: DocDatasource): void;
    private getActions;
    private getElementCard;
    private registerWidgetConfig;
    beforeDestroy(): void;
    beforeMount(): void;
    mounted(): void;
}
