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 { 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 } from 'ng-devui/utils';
import { Observable, Subject } from 'rxjs';
import { CreateFilterEvent, ICategorySearchTagItem, ITagOption, SearchConfig, SearchEvent, SelectedTagsEvent } 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 i18n;
    private doc;
    static ID_SEED: number;
    category: Array<ICategorySearchTagItem>;
    defaultSearchField: any[];
    selectedTags: Array<ICategorySearchTagItem>;
    allowClear: boolean;
    allowSave: boolean;
    allowShowMore: boolean;
    toggleScrollToTail: boolean;
    searchKey: string;
    placeholderText: string;
    inputReadOnly: boolean;
    showSearchCategory: SearchConfig | boolean;
    categoryInGroup: boolean;
    groupOrderConfig: Array<string>;
    customGroupNameTemplate: TemplateRef<any>;
    tagMaxWidth: number;
    textConfig: {
        keywordName: string;
        createFilter: string;
        filterTitle: string;
    };
    filterNameRules: DValidateRules;
    beforeTagChange: (tag: any, searchKey: any, operation: any) => boolean | Promise<boolean> | Observable<boolean>;
    toggleEvent: (dropdown: any, tag?: any, currentSelectTag?: any) => void;
    searchEvent: EventEmitter<SearchEvent>;
    selectedTagsChange: EventEmitter<SelectedTagsEvent>;
    createFilterEvent: EventEmitter<CreateFilterEvent>;
    clearAllEvent: EventEmitter<MouseEvent>;
    searchKeyChange: EventEmitter<String>;
    inputEle: ElementRef;
    scrollBarContainer: ElementRef;
    primeContainer: ElementRef;
    selectedDropdownList: QueryList<DropDownDirective>;
    datePickerElements: QueryList<ElementRef>;
    defaultTemplates: QueryList<DefaultTemplateDirective>;
    contentTemplates: QueryList<ContentTemplateDirective>;
    currentSelectTag: any;
    currentTag: ICategorySearchTagItem;
    searchField: any;
    id: number;
    dateConverter: DateConverter;
    filterName: string;
    treeSearchKey: string;
    searchKeyCache: string;
    enterSearch: boolean;
    isShowSavePanel: boolean;
    isSearchCategory: boolean;
    isHover: boolean;
    isFocus: boolean;
    noRecord: boolean;
    showNoDataTips: boolean;
    icons: {
        iconParentClose: string;
        iconParentOpen: string;
        iconLeaf: string;
    };
    destroy$: Subject<void>;
    i18nCommonText: I18nInterface['common'];
    i18nCategorySearchText: I18nInterface['categorySearch'];
    currentSearchCategory: Array<ICategorySearchTagItem>;
    categoryDisplay: Array<ICategorySearchTagItem>;
    currentOpenDropdown: DropDownDirective;
    currentScrollTagIndex: number;
    blurTimer: any;
    scrollTimeout: any;
    scrollToTailFlag: boolean;
    DROPDOWN_ANIMATION_TIMEOUT: number;
    DELAY: number;
    templates: {};
    customTemplates: {};
    joinLabelTypes: string[];
    valueIsArrayTypes: string[];
    showSearchConfig: SearchConfig;
    document: Document;
    get showFilterNameClear(): boolean;
    constructor(i18n: I18nService, doc: any);
    ngOnChanges(changes: SimpleChanges): void;
    ngAfterViewInit(): void;
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    setCustomTemplate(data: any): void;
    setI18nText(): void;
    setI18nAndFilterText(data: any): void;
    setTagsMaxWidth(): void;
    setSearchShow(): void;
    setSearchKeyTag(): ICategorySearchTagItem[];
    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(): void;
    insertCategoryToGroup(groupName: any, groupObj: any, item: any, isInsert: any): void;
    search(): void;
    searchCategory(item: any): void;
    searchInputValue(event: any): void;
    chooseCategory(item: any, inputDropdown: DropDownDirective): void;
    updateSelectedTags(tag: any, valueChanged?: boolean, result?: any): void;
    scrollToTail(isInit?: boolean): void;
    scrollToTag(index: number, event: Event): void;
    openCurrentScrollTagMenu(event: Event): void;
    updateFieldValue(field: any, 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;
    confirmDate(tag: ICategorySearchTagItem): void;
    dateValueChange(tag: ICategorySearchTagItem, datepickerPro: DatepickerProCalendarComponent): void;
    chooseItems(tag: ICategorySearchTagItem): void;
    getItemValue(value: any, key: string): string;
    resetContent(dropdown: DropDownDirective, tag?: ICategorySearchTagItem): void;
    showCurrentSearchCategory(tag: ICategorySearchTagItem, inputDropdown: DropDownDirective): void;
    clearCurrentSelectTagFromSearch(): void;
    handleAccordingType(type: string, options: Array<any>): void;
    mergeToLabel(obj: any): any;
    splitLabel(key: string, value: any): any;
    getTextInputValue(tag: ICategorySearchTagItem): void;
    getNumberRangeValue(tag: ICategorySearchTagItem): void;
    getTreeValue(tag: ICategorySearchTagItem, tree: OperableTreeComponent): void;
    updateTreeData(tag: ICategorySearchTagItem, data: ITagOption[], selectedIds: string[], halfCheckedIds: string[]): void;
    onOperableNodeChecked(selectedNodes: ITreeItem[], tag: ICategorySearchTagItem): void;
    onOperableNodeSelected(selectedNode: ITreeItem, tag: ICategorySearchTagItem, tree: OperableTreeComponent): void;
    treeSearch(tree: OperableTreeComponent, value: string): void;
    clearSearchKey(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<CategorySearchComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CategorySearchComponent, "d-category-search", never, { "category": "category"; "defaultSearchField": "defaultSearchField"; "selectedTags": "selectedTags"; "allowClear": "allowClear"; "allowSave": "allowSave"; "allowShowMore": "allowShowMore"; "toggleScrollToTail": "toggleScrollToTail"; "searchKey": "searchKey"; "placeholderText": "placeholderText"; "inputReadOnly": "inputReadOnly"; "showSearchCategory": "showSearchCategory"; "categoryInGroup": "categoryInGroup"; "groupOrderConfig": "groupOrderConfig"; "customGroupNameTemplate": "customGroupNameTemplate"; "tagMaxWidth": "tagMaxWidth"; "textConfig": "textConfig"; "filterNameRules": "filterNameRules"; "beforeTagChange": "beforeTagChange"; "toggleEvent": "toggleEvent"; }, { "searchEvent": "searchEvent"; "selectedTagsChange": "selectedTagsChange"; "createFilterEvent": "createFilterEvent"; "clearAllEvent": "clearAllEvent"; "searchKeyChange": "searchKeyChange"; }, ["contentTemplates"], never, false>;
}
