import { OnInit, TemplateRef, ViewContainerRef, EventEmitter, SimpleChanges, ChangeDetectorRef, Renderer2 } from '@angular/core';
import { NpDropdownItemDirective } from './dropdown-item.directive';
import { ControlValueAccessor } from '@angular/forms';
import { OverlayService } from '../common/overlay.service';
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
/**
 * 下拉选择组件 - 支持单选和多选功能
 *
 * <example-url>https://stackblitz.com/edit/np-dropdown-sample?embed=1&file=src/app/app.component.html</example-url>
 *
 */
export declare class NpDropdown implements OnInit, ControlValueAccessor {
    private viewContainerRef;
    private overlayService;
    private cdf;
    private renderer2;
    private emitChange;
    /**是否禁用状态 */
    disabled: any;
    /**下拉组件的基础设置，如是否单选等 */
    settings: NpDropdownSettings;
    /**全部下拉选项 */
    items: Array<NpDropdownItem>;
    /**已选项 - 单选为一个对象， 多选则为一组数组 */
    selectedItem: NpDropdownItem | Array<NpDropdownItem>;
    /**选择时触发 */
    onSelected: EventEmitter<NpDropdownItem | NpDropdownItem[]>;
    /**取消选择时触发 */
    onDeselected: EventEmitter<NpDropdownItem | NpDropdownItem[]>;
    /**全选时触发 */
    onSelectedAll: EventEmitter<NpDropdownItem | NpDropdownItem[]>;
    /**取消全选时触发 */
    onDeselectedAll: EventEmitter<NpDropdownItem | NpDropdownItem[]>;
    selectItemRef: NpDropdownItemDirective;
    viewPort: CdkVirtualScrollViewport;
    private originItems;
    /**查询Token */
    searchToken: string;
    /**单选下拉框 */
    readonly selectedLabel: string;
    /**多选下拉框 */
    selectedItems: Array<NpDropdownItem>;
    selectedBadgeItems: Array<NpDropdownItem>;
    noneBadgeCount: number;
    private buildMultipleSelect;
    readonly isDropdownOpen: boolean;
    readonly isItemSelected: boolean;
    _isCheckedAll: boolean;
    isCheckedAll: boolean;
    constructor(viewContainerRef: ViewContainerRef, overlayService: OverlayService, cdf: ChangeDetectorRef, renderer2: Renderer2);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    onSelectAll(checked: boolean): void;
    onSelect(item: NpDropdownItem): void;
    onSearch(val: any): void;
    isActive(item: NpDropdownItem): any;
    onOpenDropdown($event: MouseEvent, dropdownTpl: TemplateRef<any>, origin: HTMLElement): void;
    onRemoveItems($event: MouseEvent): void;
    onRemoveItem($event: MouseEvent, item: NpDropdownItem): void;
    writeValue(obj: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    private init;
    private checkItemExists;
    /**
     * 清除查询并展示所有符合条件的items
     */
    private clearSearch;
    private buildItemsCheckedStatus;
    private scrollToSelectedItem;
}
export interface NpDropdownSettings {
    /**Left side label name */
    lblName?: string;
    /**Set if it is single dropdown, default is true - single dropdown */
    single?: boolean;
    /**Check if it is required. if not, show remove icon, otherwise hide the remove icon */
    isRequired?: boolean;
    /**Placeholder for dropdown */
    placeHolder?: string;
    /**Set the width of dropdown, default is 220, unit px */
    width?: number;
    /**Display badge count, default is 99999 */
    badge?: number;
    /**是否展示全选按钮 */
    isShowCheckedAll?: boolean;
    /**是否默认全选 */
    isCheckedAll?: boolean;
    /**没有数据时展示的文案，默认为‘没有数据！’ */
    noData?: string;
    /**是否显示搜索框，默认展示 */
    isShowSearchBox?: boolean;
    /**当下拉框有已选项，单选时，打开下拉框会自动滚动到已选项；当为多选时，打开下拉框会自动滚动到已选项的第一项；默认打开为true */
    autoScrollTo?: boolean;
}
export interface NpDropdownItem {
    id: string | number;
    label: string;
    [key: string]: any;
}
