import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
import { ChangeDetectorRef, ElementRef, EventEmitter, TemplateRef } from '@angular/core';
import { IDejaChipsComponentCloseEvent } from '@deja-js/component/chips';
import { DejaClipboardService, Destroy } from '@deja-js/component/core';
import { GroupingService, IGroupInfo, IItemBase, ISortInfos, ItemListService, IViewListResult, IViewPort, SortingService, ViewPortService } from '@deja-js/component/core/item-list';
import { IDejaDragEvent } from '@deja-js/component/dragdrop';
import { DejaTreeListScrollEvent } from '@deja-js/component/tree-list';
import { Observable } from 'rxjs';
import { IDejaGridColumn, IDejaGridColumnEvent, IDejaGridColumnLayoutEvent, IDejaGridColumnSizeEvent } from './data-grid-column/data-grid-column';
import { IDejaGridColumnLayout } from './data-grid-column/data-grid-column-layout';
import { IDejaGridGroupsEvent } from './data-grid-grouparea/data-grid-group';
import { IDejaGridRow } from './data-grid-row/data-grid-row';
import { DejaGridRowEvent } from './data-grid-row/data-grid-row-event';
import { DejaGridRowsEvent } from './data-grid-row/data-grid-rows-event';
import * as i0 from "@angular/core";
/** @deprecated use ag-grid instead */
export declare class DejaGridComponent extends Destroy {
    private changeDetectorRef;
    private elementRef;
    private clipboardService;
    placeholder: string;
    /** Texte à afficher par default dans la zone de recherche */
    /** Texte affiché si aucune donnée n'est présente dans le tableau */
    nodataholder: string;
    /** Correspond au ngModel du champ de filtrage ou recherche */
    query: string;
    /** Définit un texte de conseil en cas d'erreur de validation ou autre */
    hintLabel: string;
    /** Les trois valeurs acceptés en paramètre se trouvent dans l'enum ViewportMode (disabled, fixed, variable ou auto)
     * Attention, une désactivation du viewport dégrade considérablement les performances de la liste et ne doit pas être activée si la liste
     * est suceptible de contenir beaucoup d'éléments.
     */
    viewportMode: string;
    /** Champ utilisé pour la liste des enfants d'un parent */
    childrenField: string;
    /** Définit le champ à utiliser comme valeur d'affichage. */
    textField: string;
    /** Définit le champ à utiliser comme valeur de comparaison. */
    valueField: string;
    /** Définit le champ à utiliser comme champ de recherche.
     * Ce champ peut indiquer, un champ contenant une valeur, un texte indexé, ou une fonction.
     */
    searchField: string;
    /** Ligne courant ou ligne active */
    currentRow: unknown;
    /** Liste des éléments sélectionnés en mode multiselect */
    selectedItems: unknown[];
    /** Elément selectioné en mode single select */
    selectedItem: unknown;
    /** Liste des models selectionés en mode multiselect */
    selectedModels: unknown[];
    /** Model selectioné en mode single select */
    selectedModel: unknown;
    /** Definit le service de tri utilisé par ce composant. */
    sortingService: SortingService;
    /** Definit le service de regroupement utilisé par ce composant. */
    groupingService: GroupingService;
    /** Définit la largeur minimum que peut prendre une colonne en cas de redimensionement. */
    columnsMinWidth: number;
    /** Permet de définir un template de ligne par binding */
    rowTemplateExternal: TemplateRef<unknown>;
    /** Permet de définir un template de ligne parente par binding. */
    parentRowTemplateExternal: TemplateRef<unknown>;
    /** Permet de définir un template d'entête par binding. */
    headerTemplateExternal: TemplateRef<unknown>;
    /** Permet de définir un template d'entête de colonnes par binding. */
    columnHeaderTemplateExternal: TemplateRef<unknown>;
    /** Permet de définir un template comme prefixe de la zone de recherche par binding. */
    searchPrefixTemplateExternal: TemplateRef<unknown>;
    /** Permet de définir un template comme suffixe de la zone de recherche par binding. */
    searchSuffixTemplateExternal: TemplateRef<unknown>;
    /** Set a observable called before the rows will be displayed */
    loadingRows: (query: string | RegExp, selectedRows: IDejaGridRow<unknown>[]) => Observable<unknown[]>;
    /** Set a promise called before a row selection */
    selectingRow: (row: IDejaGridRow<unknown>) => Promise<IDejaGridRow<unknown>> | Observable<IDejaGridRow<unknown>>;
    /** Set a promise called before a row deselection */
    unselectingRow: (row: IDejaGridRow<unknown>) => Promise<IDejaGridRow<unknown>> | Observable<IDejaGridRow<unknown>>;
    /** Set a promise called before a row expand */
    expandingRow: (row: IDejaGridRow<unknown>) => Promise<IDejaGridRow<unknown>> | Observable<IDejaGridRow<unknown>>;
    /** Set a promise called before a row collapse */
    collapsingRow: (row: IDejaGridRow<unknown>) => Promise<IDejaGridRow<unknown>> | Observable<IDejaGridRow<unknown>>;
    /** Exécuté lorsque le déplacement d'une ligne est terminée. */
    readonly itemDragEnd: EventEmitter<IDejaDragEvent>;
    /** Exécuté lorsque le déplacement d'une ligne commence. */
    readonly itemDragStart: EventEmitter<IDejaDragEvent>;
    /** Exécuté lorsque l'utilisateur sélectionne ou désélectionne une ligne. */
    readonly selectedChange: EventEmitter<DejaGridRowEvent<unknown> | DejaGridRowsEvent<unknown>>;
    /** Cet évenement est levé lorsque la position des colonnes est modifiée */
    readonly columnLayoutChanged: EventEmitter<IDejaGridColumnLayoutEvent>;
    /** Cet évenement est levé lorsque la taille d'une colonne est modifiée */
    readonly columnSizeChanged: EventEmitter<IDejaGridColumnSizeEvent>;
    /** Exécuté lorsque le calcul du viewPort est executé. */
    readonly viewPortChanged: EventEmitter<IViewPort>;
    /** Exécuté lorsque le sorting à changé. */
    readonly sortChanged: EventEmitter<ISortInfos>;
    /** Exécuté lorsque le grouping à changé. */
    readonly groupChanged: EventEmitter<IGroupInfo[]>;
    private rowTemplateInternal;
    private parentRowTemplateInternal;
    private _cellTemplate;
    private _parentTitleTemplate;
    private _columnHeaderTemplate;
    private headerTemplateInternal;
    private searchPrefixTemplateInternal;
    private searchSuffixTemplateInternal;
    private header;
    private treeListComponent;
    /** retourne la largeur calculée des lignes */
    rowsWidth: number;
    private _rows;
    private _columns;
    private _columnLayout;
    private lastScrollLeft;
    private printColumnLayout$;
    private disableUserSelection$;
    private _noHorizontalScroll;
    private _itemListService;
    private sizingLayoutInfos;
    private columnsLayoutInfos;
    private hasPercentageColumns;
    private _sortable;
    private _searchArea;
    private _groupArea;
    private _rowsDraggable;
    private _rowsSortable;
    private _columnsDraggable;
    private _columnsSortable;
    private _columnsSizable;
    private _multiSelect;
    private _minSearchLength;
    private _maxHeight;
    private _pageSize;
    private _viewPortRowHeight;
    private columnGroups$;
    private columns$;
    private _columnGroups;
    private _waiter;
    /** Définit la hauteur d'une ligne pour le calcul du viewport en pixels */
    set viewPortRowHeight(value: NumberInput);
    get viewPortRowHeight(): NumberInput;
    /** Permet de définir la longueur minimale de caractères dans le champ de recherche avant que la recherche ou le filtrage soient effectués */
    set minSearchLength(value: NumberInput);
    get minSearchLength(): NumberInput;
    /** Hauteur maximum avant que le composant affiche une scrollbar
     * spécifier une grande valeur pour ne jamais afficher de scrollbar
     * Spécifier 0 pour que le composant determine sa hauteur à partir du container
     */
    set maxHeight(value: NumberInput);
    get maxHeight(): NumberInput;
    /** Définit le nombre de lignes à sauter en cas de pression sur les touches PageUp ou PageDown */
    set pageSize(value: NumberInput);
    get pageSize(): NumberInput;
    /** Définit si le waiter doit être affiché dans la grille. */
    set waiter(value: BooleanInput);
    get waiter(): BooleanInput;
    /** Permet de trier le tableau au clic sur l'entête de la colonne */
    set sortable(value: BooleanInput);
    get sortable(): BooleanInput;
    /** Définit les options de regroupement utilisateur de la grille. Plusieurs champs peuvent etre spécifiés dans le HTML en utilisant la , comme séparateur (Ex: columnGroups="color, name") */
    set columnGroups(value: IDejaGridColumn[]);
    get columnGroups(): IDejaGridColumn[];
    get noHorizontalScroll(): boolean;
    /** Affiche un barre de recherche au dessus du tableau. */
    set searchArea(value: BooleanInput);
    get searchArea(): BooleanInput;
    /** Affiche une zone de regroupement des colonnes par drag and drop. */
    set groupArea(value: BooleanInput);
    get groupArea(): BooleanInput;
    /** Rend les lignes du tableau draggable vers un autre composant (ne pas confondre avec la propriété `sortable`) */
    set rowsDraggable(value: BooleanInput);
    get rowsDraggable(): BooleanInput;
    /** Rend les lignes du tableau triables par drag-and-drop */
    set rowsSortable(value: BooleanInput);
    get rowsSortable(): BooleanInput;
    /** Définit si toutes les colonnes peuvent être draggable vers un autre composant. */
    set columnsDraggable(value: BooleanInput);
    get columnsDraggable(): BooleanInput;
    /** Définit si toutes les colonnes peuvent être déplacées parmis les autres colonnes. */
    set columnsSortable(value: BooleanInput);
    get columnsSortable(): BooleanInput;
    /** Permet de redimensionner manuellement les colonnes du tableau. */
    set columnsSizable(value: BooleanInput);
    get columnsSizable(): BooleanInput;
    /** Permet la sélection multiple des ligne de la grille (avec la touche shift ou ctrl) */
    set multiSelect(value: BooleanInput);
    get multiSelect(): BooleanInput;
    /** Définit la structure des colonnes de la grille. */
    set columns(columns: IDejaGridColumn[]);
    /** Retourne la structure des colonnes de la grille. */
    get columns(): IDejaGridColumn[];
    /** Définit le modèle affiché dans les lignes de la grille. */
    set rows(rows: unknown[] | Promise<unknown[]> | Observable<unknown[]>);
    /** Retourne le modèle affiché dans les lignes de la grille. */
    get rows(): unknown[] | Promise<unknown[]> | Observable<unknown[]>;
    /** Définit la colonne en surbrillance. */
    set currentColumn(column: IDejaGridColumn);
    /** Retourne la colonne en surbrillance. */
    get currentColumn(): IDejaGridColumn;
    /** Definit le service de liste utilisé par ce composant. Ce srevice permet de controller dynamiquement la liste, ou de faire du lazyloading. */
    set itemListService(value: ItemListService<unknown>);
    /** Retourne le service de liste utilisé par ce composant. */
    get itemListService(): ItemListService<unknown>;
    /** Retourne une valeur indiquant le nombre de niveau hierarchiques affichés par la grille. */
    get depthMax(): number;
    /** Retourne le service de viewport utilisé pour la grille */
    get viewPort(): ViewPortService;
    get searchPrefixTemplate(): TemplateRef<unknown>;
    get searchSuffixTemplate(): TemplateRef<unknown>;
    get rowTemplate(): TemplateRef<unknown>;
    get parentRowTemplate(): TemplateRef<unknown>;
    get cellTemplate(): TemplateRef<unknown>;
    get parentTitleTemplate(): TemplateRef<unknown>;
    get columnsHeaderTemplate(): TemplateRef<unknown>;
    get columnHeaderTemplate(): TemplateRef<unknown>;
    get columnLayout(): IDejaGridColumnLayout;
    constructor(changeDetectorRef: ChangeDetectorRef, elementRef: ElementRef, clipboardService: DejaClipboardService);
    get value(): unknown;
    set value(value: unknown);
    /** Nettoye les caches et réaffiche le viewport. */
    refresh(): void;
    /** Recalcule le viewport. */
    refreshViewPort(item?: IItemBase<unknown>): void;
    /** Efface la hauteur calculée des lignes en mode automatique */
    clearRowsHeight(): void;
    /** Efface le viewport */
    clearViewPort(): void;
    /** Calcul la position de la scrollbar horizontale pour que la colonne spéfiée soit dans la zone visible. */
    ensureColumnVisible(column: IDejaGridColumn): boolean;
    scroll(event: DejaTreeListScrollEvent): void;
    /** Trie la liste par le champs spécifié. */
    sort(name?: string): void;
    /** Trie la liste par le champs spécifié. */
    sort$(name?: string): Observable<IViewListResult<unknown>>;
    /** Groupe les éléments en fonction du modèle de groupe spécifié
     * @param groupInfos Modèle de groupe à appliquer.
     * @return Observable résolu par la fonction.
     */
    group$(groups: IGroupInfo[]): Observable<IViewListResult<unknown>>;
    /** Retire les groupe correspondants au modèle de groupe spécifié
     * @param groupInfos Modèle de groupe à retirer.
     * @return Observable résolu par la fonction.
     */
    ungroup$(groupInfo: IGroupInfo): Observable<IViewListResult<unknown>>;
    onColumnHeaderClicked(event: IDejaGridColumnEvent): void;
    onColumnDragEnd(): void;
    onColumnLayoutChanged(e: IDejaGridColumnLayoutEvent): void;
    onColumnSizeChanged(e: IDejaGridColumnSizeEvent): void;
    onGroupRemoved(event: IDejaChipsComponentCloseEvent): void;
    onGroupsChanged(e: IDejaGridGroupsEvent): void;
    calcColumnsLayout(rows?: unknown[]): void;
    private ensureSizingVisible;
    private clearColumnLayout;
    private getColumnElementFromHtmlElement;
    private getColumnFromHtmlElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<DejaGridComponent, [null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DejaGridComponent, "deja-grid", never, { "placeholder": "placeholder"; "nodataholder": "nodataholder"; "query": "query"; "hintLabel": "hintLabel"; "viewportMode": "viewportMode"; "childrenField": "childrenField"; "textField": "textField"; "valueField": "valueField"; "searchField": "searchField"; "currentRow": "currentRow"; "selectedItems": "selectedItems"; "selectedItem": "selectedItem"; "selectedModels": "selectedModels"; "selectedModel": "selectedModel"; "sortingService": "sortingService"; "groupingService": "groupingService"; "columnsMinWidth": "columnsMinWidth"; "rowTemplateExternal": "rowTemplateExternal"; "parentRowTemplateExternal": "parentRowTemplateExternal"; "headerTemplateExternal": "headerTemplateExternal"; "columnHeaderTemplateExternal": "columnHeaderTemplateExternal"; "searchPrefixTemplateExternal": "searchPrefixTemplateExternal"; "searchSuffixTemplateExternal": "searchSuffixTemplateExternal"; "loadingRows": "loadingRows"; "selectingRow": "selectingRow"; "unselectingRow": "unselectingRow"; "expandingRow": "expandingRow"; "collapsingRow": "collapsingRow"; "viewPortRowHeight": "viewPortRowHeight"; "minSearchLength": "minSearchLength"; "maxHeight": "maxHeight"; "pageSize": "pageSize"; "waiter": "waiter"; "sortable": "sortable"; "columnGroups": "columnGroups"; "searchArea": "searchArea"; "groupArea": "groupArea"; "rowsDraggable": "rowsDraggable"; "rowsSortable": "rowsSortable"; "columnsDraggable": "columnsDraggable"; "columnsSortable": "columnsSortable"; "columnsSizable": "columnsSizable"; "multiSelect": "multiSelect"; "columns": "columns"; "rows": "rows"; "currentColumn": "currentColumn"; "itemListService": "itemListService"; }, { "itemDragEnd": "itemDragEnd"; "itemDragStart": "itemDragStart"; "selectedChange": "selectedChange"; "columnLayoutChanged": "columnLayoutChanged"; "columnSizeChanged": "columnSizeChanged"; "viewPortChanged": "viewPortChanged"; "sortChanged": "sortChanged"; "groupChanged": "groupChanged"; }, ["rowTemplateInternal", "parentRowTemplateInternal", "_cellTemplate", "_parentTitleTemplate", "_columnHeaderTemplate", "headerTemplateInternal", "searchPrefixTemplateInternal", "searchSuffixTemplateInternal"], never, false>;
}
