import { EventEmitter, OnInit, OnChanges, ElementRef } from '@angular/core';
import { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';
import { TranslateService } from '@ngx-translate/core';
import { Column } from '../../../model/column';
import { ColumnViewTemplate } from '../../../model/column-view-template';
import { ViewTemplatePickerComponent } from './view-template-picker/view-template-picker.component';
import { PrimeIcon } from '@onecx/angular-accelerator';
import { DropdownChangeEvent } from 'primeng/dropdown';
import { ToggleButtonChangeEvent } from 'primeng/togglebutton';
import * as i0 from "@angular/core";
interface ViewingModes {
    icon: PrimeIcon;
    mode: string;
    title?: string;
    titleKey?: string;
}
interface DefaultColumnDefinition {
    active: string[];
    disabled: string[];
}
/**
 * Can be used to pass in translation that are used in several places in the data-view-controls component.
 *
 * The component provides fallbacks for all configurable translations.
 */
export interface DataViewControlTranslations {
    /**
     * Placeholder for the filter input field
     */
    filterInputPlaceholder?: string;
    /**
     * Tooltip for the filter input
     */
    filterInputTooltip?: string;
    /**
     * Placeholder for the sorting dropdown
     */
    sortDropdownPlaceholder?: string;
    /**
     * Tooltip for the sorting dropdown
     */
    sortDropdownTooltip?: string;
    /**
     * Tooltips displayed for the sort order toggle button
     */
    sortOrderTooltips?: {
        ascending?: string;
        descending?: string;
    };
    /**
     * Tooltips displayed for the data view mode toggle button
     */
    viewModeToggleTooltips?: {
        list?: string;
        grid?: string;
        table?: string;
    };
    /**
     * Placeholder for the template picker dropdown
     */
    templatePickerDropdownPlaceholder?: string;
    /**
     * Tooltip for the column toggle button
     */
    toggleColumnButtonTooltip?: string;
    /**
     * Header text displayed at the top of the column toggle dialog
     */
    columnDialogHeaderText?: string;
    /**
     * Column header text for active/shown columns in the column toggle dialog
     */
    columnDialogActiveHeader?: string;
    /**
     * Column header text for inactive/hidden columns in the column toggle dialog
     */
    columnDialogInactiveHeader?: string;
    /**
     * Label text for the save button displayed in the column toggle dialog
     */
    columnDialogSaveButtonLabel?: string;
}
/**
 * TODO: deprecate this before core apps are migrated to v6
 * deprecated Will be split up in separate compoments for better abstraction layers
 */
export declare class DataViewControlsComponent implements OnInit, OnChanges {
    private dialogService;
    private translate;
    supportedViews: Array<string>;
    initialViewMode: string | undefined;
    filterValue: string | undefined;
    enableFiltering: boolean;
    enableSorting: boolean;
    sortingOptions: {
        label: string;
        value: string;
    }[];
    defaultSortOption: string;
    defaultSortDirection: boolean;
    columnDefinitions: {
        field: string;
        header: string;
        active?: boolean;
        translationPrefix?: string;
    }[];
    columnTemplates: ColumnViewTemplate[];
    /**
     * TODO: deprecate this before core apps are migrated to v6
     * deprecated Instead, please use the `translations` input and specify the `templatePickerDropdownPlaceholder` property.
     *
     * Will be overwritten by `translations.templatePickerDropdownPlaceholder` if it is specified.
     */
    dropdownPlaceholderText: string;
    filterColumns: Array<string>;
    translations: DataViewControlTranslations | undefined;
    sortChange: EventEmitter<string>;
    filterChange: EventEmitter<string>;
    dataViewChange: EventEmitter<'list' | 'grid'>;
    sortDirectionChange: EventEmitter<boolean>;
    columnsChange: EventEmitter<string[]>;
    templatePicker: ViewTemplatePickerComponent;
    dvFilter: ElementRef | undefined;
    activeColumnIds: string[];
    inactiveColumnIds: string[];
    selectedSortingOption: string;
    selectedSortDirection: boolean | undefined;
    viewingModes: ViewingModes[];
    selectedViewMode: ViewingModes | undefined;
    toggleColumnActive: boolean;
    ref: DynamicDialogRef;
    defaultCols: DefaultColumnDefinition;
    constructor(dialogService: DialogService, translate: TranslateService);
    ngOnInit(): void;
    ngOnChanges(): void;
    toggleColumns(): void;
    initActiveColumnIds(col: {
        field: string;
        header: string;
        active: boolean;
        translationPrefix?: string;
    }[]): void;
    handleTemplateChange(event: {
        activeCols: string[];
        inactiveCols: string[];
    }): void;
    handleTemplateReset(): void;
    initInactiveColumnIds(col: {
        field: string;
        header: string;
        active: boolean;
        translationPrefix?: string;
    }[]): void;
    viewModeChange(event: {
        icon: PrimeIcon;
        mode: 'list' | 'grid';
    }): void;
    enableToggleColumnButton(mode: string): void;
    selectSorting(event: DropdownChangeEvent): void;
    searchFilterInput(event: Event): void;
    sortDirection(event: ToggleButtonChangeEvent): void;
    generateDefaultColumnDefinitions(cols: Column[]): DefaultColumnDefinition;
    onClearFilter(): void;
    private changeFilterValue;
    static ɵfac: i0.ɵɵFactoryDeclaration<DataViewControlsComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DataViewControlsComponent, "ocx-data-view-controls", never, { "supportedViews": { "alias": "supportedViews"; "required": false; }; "initialViewMode": { "alias": "initialViewMode"; "required": false; }; "filterValue": { "alias": "filterValue"; "required": false; }; "enableFiltering": { "alias": "enableFiltering"; "required": false; }; "enableSorting": { "alias": "enableSorting"; "required": false; }; "sortingOptions": { "alias": "sortingOptions"; "required": false; }; "defaultSortOption": { "alias": "defaultSortOption"; "required": false; }; "defaultSortDirection": { "alias": "defaultSortDirection"; "required": false; }; "columnDefinitions": { "alias": "columnDefinitions"; "required": false; }; "columnTemplates": { "alias": "columnTemplates"; "required": false; }; "dropdownPlaceholderText": { "alias": "dropdownPlaceholderText"; "required": false; }; "filterColumns": { "alias": "filterColumns"; "required": false; }; "translations": { "alias": "translations"; "required": false; }; }, { "sortChange": "sortChange"; "filterChange": "filterChange"; "dataViewChange": "dataViewChange"; "sortDirectionChange": "sortDirectionChange"; "columnsChange": "columnsChange"; }, never, never, false, never>;
}
export {};
