import { OnDestroy, OnChanges, AfterViewInit, ChangeDetectorRef, EventEmitter, TemplateRef, ElementRef, SimpleChanges, QueryList, InjectionToken, NgZone } from '@angular/core'; import { ControlValueAccessor } from '@angular/forms'; import { Subject } from 'rxjs/Subject'; import { ConsoleService } from './console.service'; import { ItemsList } from './items-list'; import { NgOption, NgSelectConfig } from './ng-select.types'; import { NgDropdownPanelComponent } from './ng-dropdown-panel.component'; import { NgOptionComponent } from './ng-option.component'; import { WindowService } from './window.service'; export declare const NG_SELECT_DEFAULT_CONFIG: InjectionToken; export declare type DropdownPosition = 'bottom' | 'top' | 'auto'; export declare type AddTagFn = (term: string) => any | Promise; export declare type CompareWithFn = (a: any, b: any) => boolean; export declare class NgSelectComponent implements OnDestroy, OnChanges, AfterViewInit, ControlValueAccessor { classes: string; private _cd; private _console; private _zone; private _window; elementRef: ElementRef; items: any[]; bindLabel: string; bindValue: string; placeholder: string; notFoundText: string; typeToSearchText: string; addTagText: string; loadingText: string; clearAllText: string; dropdownPosition: DropdownPosition; appendTo: string; maxSelectedItems: number; groupBy: string; focusOnSelect: boolean; clearable: boolean; markFirst: boolean; loading: boolean; closeOnSelect: boolean; hideSelected: boolean; selectOnTab: boolean; bufferAmount: number; virtualScroll: boolean; selectableGroup: boolean; searchFn: any; clearSearchOnAdd: boolean; labelForId: string; readOnly: boolean; disabled: boolean; env: any; typeahead: Subject; multiple: boolean; addTag: boolean | AddTagFn; searchable: boolean; compareWith: CompareWithFn; blurEvent: EventEmitter<{}>; focusEvent: EventEmitter<{}>; changeEvent: EventEmitter<{}>; openEvent: EventEmitter<{}>; closeEvent: EventEmitter<{}>; searchEvent: EventEmitter<{}>; clearEvent: EventEmitter<{}>; addEvent: EventEmitter<{}>; removeEvent: EventEmitter<{}>; enterEvent: EventEmitter<{}>; closedOnEnterEvent: EventEmitter<{}>; scrollToEnd: EventEmitter<{ start: number; end: number; }>; optionTemplate: TemplateRef; optgroupTemplate: TemplateRef; labelTemplate: TemplateRef; multiLabelTemplate: TemplateRef; headerTemplate: TemplateRef; footerTemplate: TemplateRef; notFoundTemplate: TemplateRef; typeToSearchTemplate: TemplateRef; loadingTextTemplate: TemplateRef; tagTemplate: TemplateRef; dropdownPanel: NgDropdownPanelComponent; ngOptions: QueryList; filterInput: ElementRef; labelSpanRef: ElementRef; readonly isOpened: boolean; readonly isDisabled: boolean; readonly filtered: boolean; itemsList: ItemsList; viewPortItems: NgOption[]; filterValue: string; dropdownId: string; selectedItemId: number; showDropdownPanel: boolean; isOpen: boolean; addItem: boolean; private _defaultLabel; private _primitive; private _focused; private _pressedKeys; private _compareWith; private readonly _destroy$; private readonly _keyPress$; private _onChange; private _onTouched; clearItem: (item: any) => void; constructor(config: NgSelectConfig, classes: string, _cd: ChangeDetectorRef, _console: ConsoleService, _zone: NgZone, _window: WindowService, elementRef: ElementRef); readonly selectedItems: NgOption[]; readonly selectedValues: (string | Object)[]; readonly hasValue: boolean; ngOnInit(): void; ngOnChanges(changes: SimpleChanges): void; ngAfterViewInit(): void; ngOnDestroy(): void; handleKeyDown($event: KeyboardEvent): void; handleMousedown($event: MouseEvent): void; handleArrowClick(): void; handleClearClick(): void; clearModel(): void; writeValue(value: any | any[]): void; registerOnChange(fn: any): void; registerOnTouched(fn: any): void; setDisabledState(isDisabled: boolean): void; selectAddTag(): void; unSelectAddTag(): void; toggle(): void; open(): void; close(outsideClick?: boolean): void; toggleItem(item: NgOption): void; select(item: NgOption, newOptionValue?: boolean): void; focus(): void; unselect(item: NgOption): void; selectTag(fromEnter?: boolean, fromClose?: boolean): boolean; showClear(): boolean; showAddTag(): boolean; showNoItemsFound(): boolean; showTypeToSearch(): boolean; filter(): void; onInputFocus(): void; onInputBlur(): void; onItemHover(item: NgOption): void; detectChanges(): void; updateDropdownPosition(): void; emitEnterEvent(send?: boolean): void; private _setItems(items); private _setItemsFromNgOptions(); private _isValidWriteValue(value); private _handleWriteValue(ngModel); _handleKeyPresses(): void; private _updateNgModel(); private _clearSearch(); private _scrollToMarked(); private _scrollToTag(); private _handleTab($event); private _handleEnter($event); private _handleSpace($event); private _handleArrowDown($event); private _handleArrowUp($event); private nextItemIsTag(nextStep); private _handleBackspace(); private readonly _isTypeahead; private showMessage(message, data?); private _mergeGlobalConfig(config); }