import { AfterContentInit, AfterViewInit, ElementRef, EventEmitter, OnChanges, OnDestroy, QueryList, SimpleChanges, TemplateRef } from '@angular/core';
import { NgForm } from '@angular/forms';
import { DatepickerProCalendarComponent } from 'ng-devui/datepicker-pro';
import { DropDownAppendToBodyComponent, DropDownDirective } from 'ng-devui/dropdown';
import { DValidateRules } from 'ng-devui/form';
import { I18nInterface, I18nService } from 'ng-devui/i18n';
import { ITreeItem, OperableTreeComponent } from 'ng-devui/tree';
import { DateConverter, DevConfigService } from 'ng-devui/utils';
import { Observable, Subject } from 'rxjs';
import { CreateFilterEvent, ExtendedConfig, ICategorySearchTagItem, ITagOption, SearchConfig, SearchEvent, SelectedTagsEvent, TextConfig } from './category-search.type';
import { ContentTemplateDirective } from './content-template.directive';
import { DefaultTemplateDirective } from './default-template.directive';
import * as i0 from "@angular/core";
export declare class CategorySearchComponent implements OnChanges, OnDestroy, AfterViewInit, AfterContentInit {
    private doc;
    private devConfigService;
    private i18n;
    private el;
    static ID_SEED: number;
    category: ICategorySearchTagItem[];
    defaultSearchField: any[];
    selectedTags: ICategorySearchTagItem[];
    /**
     * @deprecated
     */
    allowClear: boolean;
    /**
     * @deprecated
     */
    allowSave: boolean;
    /**
     * @deprecated
     */
    allowShowMore: boolean;
    disabled: boolean;
    extendedConfig: ExtendedConfig;
    toggleScrollToTail: boolean;
    searchKey: string;
    placeholderText: string;
    inputReadOnly: boolean;
    inputAutofocus: boolean;
    dropdownBoundary: boolean;
    showSearchCategory: SearchConfig | boolean;
    categoryInGroup: boolean;
    groupOrderConfig: string[];
    customGroupNameTemplate: TemplateRef<any>;
    customCategoryNameTemplate: TemplateRef<any>;
    tagMaxWidth: number;
    textConfig: TextConfig;
    filterNameRules: DValidateRules;
    beforeTagChange: (tag: any, searchKey: any, operation: any) => boolean | Promise<boolean> | Observable<boolean>;
    toggleEvent: (dropdown: any, tag?: any, currentSelectTag?: any) => void;
    styleType: string;
    showGlowStyle: boolean;
    get hasGlowStyle(): boolean;
    searchEvent: EventEmitter<SearchEvent>;
    selectedTagsChange: EventEmitter<SelectedTagsEvent>;
    createFilterEvent: EventEmitter<CreateFilterEvent>;
    clearAllEvent: EventEmitter<MouseEvent>;
    searchKeyChange: EventEmitter<String>;
    inputEle: ElementRef;
    scrollBarContainer: ElementRef;
    primeContainer: ElementRef;
    treeInstance: OperableTreeComponent;
    selectedDropdownList: QueryList<DropDownDirective>;
    defaultTemplates: QueryList<DefaultTemplateDirective>;
    contentTemplates: QueryList<ContentTemplateDirective>;
    id: number;
    searchField: ICategorySearchTagItem[];
    categoryDisplay: ICategorySearchTagItem[];
    currentSearchCategory: ICategorySearchTagItem[];
    currentSelectTag: ICategorySearchTagItem;
    dateConverter: DateConverter;
    treeSearchKey: string;
    filterName: string;
    searchKeyCache: string;
    enterSearch: boolean;
    isShowSavePanel: boolean;
    isSearchCategory: boolean;
    isHover: boolean;
    isFocus: boolean;
    treeNoRecord: boolean;
    showNoDataTips: boolean;
    icons: {
        iconParentClose: string;
        iconParentOpen: string;
        iconLeaf: string;
    };
    destroy$: Subject<void>;
    i18nCommonText: I18nInterface['common'];
    i18nCategorySearchText: I18nInterface['categorySearch'];
    showSearchConfig: SearchConfig;
    currentOpenDropdown: DropDownDirective;
    currentScrollTagIndex: number;
    blurTimer: any;
    scrollTimeout: any;
    scrollToTailFlag: boolean;
    DROPDOWN_ANIMATION_TIMEOUT: number;
    DELAY: number;
    templates: {};
    customTemplates: {};
    treeFactories: {};
    joinLabelTypes: string[];
    valueIsArrayTypes: string[];
    document: Document;
    operationConfig: ExtendedConfig;
    get showFilterNameClear(): boolean;
    get showExtendedConfig(): boolean;
    private categoryOrder;
    private categoryDictionary;
    constructor(doc: any, devConfigService: DevConfigService, i18n: I18nService, el: ElementRef);
    ngOnChanges(changes: SimpleChanges): void;
    ngAfterViewInit(): void;
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    setCustomTemplate(data: any): void;
    setDisabled(): void;
    setI18nAndFilterText(data: any): void;
    setSearchShow(): void;
    setSearchKeyTag(isSearch?: boolean): string;
    createSearchKeyTag(isSearch: boolean): void;
    setExtendedConfig(): void;
    init(): void;
    initCategoryItem(item: any): any;
    mergeCheck(objValue: any, srcValue: any, key: any): any;
    setValue(data: any, isSelectedTags?: boolean): void;
    setTitle(tag: ICategorySearchTagItem, type: string, result?: string): string;
    initCategoryDisplay(isInit?: boolean): void;
    initGroupAndDictionary(): void;
    initCategoryOrder(): void;
    handleGroupLength(tag: ICategorySearchTagItem, isSelected: boolean, isInit?: boolean): void;
    insertCategoryToGroup(groupName: string, groupObj: object, item: ICategorySearchTagItem, isInsert: boolean): void;
    searchCategory(item: ICategorySearchTagItem, value?: string): void;
    searchInputValue(event?: Event): void;
    chooseCategory(item: ICategorySearchTagItem, inputDropdown: DropDownDirective): void;
    getSelectedTagsExceptKeyword(): ICategorySearchTagItem[];
    updateSelectedTags(tag: ICategorySearchTagItem, valueChanged?: boolean): void;
    scrollToTail(isInit?: boolean): void;
    scrollToTag(index: number, event: Event): void;
    openCurrentScrollTagMenu(event: Event): void;
    updateFieldValue(field: ICategorySearchTagItem, value: any): void;
    removeTag(tag: ICategorySearchTagItem, event?: Event): void;
    checkInputSearching(): void;
    focusInput(): void;
    blurInput(event: FocusEvent): void;
    openMenu(inputDropdown: DropDownDirective, event: Event): void;
    closeMenu(inputDropdown: DropDownDirective): void;
    backspaceEvent(inputDropdown: DropDownDirective): void;
    canChange(tag: ICategorySearchTagItem, operation: 'delete' | 'add'): Promise<boolean>;
    finishChoose(): void;
    clearFilter(event: MouseEvent): void;
    resolveCategoryDisplay(tag: ICategorySearchTagItem, type: string): void;
    createFilterFn(): void;
    createFilterInputAutoFocus(dropdown: DropDownDirective, inputElm: HTMLElement, filterNameForm: NgForm): void;
    searchKeyChangeEvent(event: string): void;
    checkType(tag: ICategorySearchTagItem): "all" | "blank";
    resetValue(tag: ICategorySearchTagItem): ICategorySearchTagItem;
    afterDropdownClosed(): void;
    chooseItem(tag: ICategorySearchTagItem, chooseItem: ITagOption): void;
    dateChange(datepicker: DatepickerProCalendarComponent, tag: ICategorySearchTagItem): void;
    confirmDate(datepicker: DatepickerProCalendarComponent, tag: ICategorySearchTagItem, dropdown: DropDownDirective): void;
    chooseItems(tag: ICategorySearchTagItem): void;
    getItemValue(value: any, key: string): string;
    checkDropdownBoundary(dropdown: DropDownDirective, dropdownMenu: DropDownAppendToBodyComponent): void;
    resetContent(dropdown: DropDownDirective, tag?: ICategorySearchTagItem, dropdownMenu?: DropDownAppendToBodyComponent): void;
    cacheTreeData(tag: ICategorySearchTagItem): void;
    showCurrentSearchCategory(tag: ICategorySearchTagItem, inputDropdown: DropDownDirective): void;
    clearCurrentSelectTagFromSearch(): void;
    handleAccordingType(tag: ICategorySearchTagItem, dropdown: DropDownDirective, isCurrentSelectTag: boolean): void;
    mergeToLabel(obj: any): any;
    splitLabel(key: string, value: any): any;
    selectAll(tag: ICategorySearchTagItem): void;
    isSelectAll(tag: ICategorySearchTagItem, isValue?: boolean): void;
    getTextInputValue(tag: ICategorySearchTagItem): void;
    getNumberRangeValue(tag: ICategorySearchTagItem, dropdown?: DropDownDirective): void;
    getTreeValue(tag: ICategorySearchTagItem, isConfirm?: boolean): void;
    initTreeChecked(tag: ICategorySearchTagItem, tree: any, selectedIds: string[]): any;
    onOperableNodeChecked(selectedNodes: ITreeItem[], tag: ICategorySearchTagItem): void;
    onOperableNodeSelected(selectedNode: ITreeItem, tag: ICategorySearchTagItem): void;
    treeSearch(value: string, searchFn?: Function): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<CategorySearchComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CategorySearchComponent, "d-category-search", never, { "category": { "alias": "category"; "required": false; }; "defaultSearchField": { "alias": "defaultSearchField"; "required": false; }; "selectedTags": { "alias": "selectedTags"; "required": false; }; "allowClear": { "alias": "allowClear"; "required": false; }; "allowSave": { "alias": "allowSave"; "required": false; }; "allowShowMore": { "alias": "allowShowMore"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "extendedConfig": { "alias": "extendedConfig"; "required": false; }; "toggleScrollToTail": { "alias": "toggleScrollToTail"; "required": false; }; "searchKey": { "alias": "searchKey"; "required": false; }; "placeholderText": { "alias": "placeholderText"; "required": false; }; "inputReadOnly": { "alias": "inputReadOnly"; "required": false; }; "inputAutofocus": { "alias": "inputAutofocus"; "required": false; }; "dropdownBoundary": { "alias": "dropdownBoundary"; "required": false; }; "showSearchCategory": { "alias": "showSearchCategory"; "required": false; }; "categoryInGroup": { "alias": "categoryInGroup"; "required": false; }; "groupOrderConfig": { "alias": "groupOrderConfig"; "required": false; }; "customGroupNameTemplate": { "alias": "customGroupNameTemplate"; "required": false; }; "customCategoryNameTemplate": { "alias": "customCategoryNameTemplate"; "required": false; }; "tagMaxWidth": { "alias": "tagMaxWidth"; "required": false; }; "textConfig": { "alias": "textConfig"; "required": false; }; "filterNameRules": { "alias": "filterNameRules"; "required": false; }; "beforeTagChange": { "alias": "beforeTagChange"; "required": false; }; "toggleEvent": { "alias": "toggleEvent"; "required": false; }; "styleType": { "alias": "styleType"; "required": false; }; "showGlowStyle": { "alias": "showGlowStyle"; "required": false; }; }, { "searchEvent": "searchEvent"; "selectedTagsChange": "selectedTagsChange"; "createFilterEvent": "createFilterEvent"; "clearAllEvent": "clearAllEvent"; "searchKeyChange": "searchKeyChange"; }, ["contentTemplates"], never, false, never>;
}
