@ng-select/ng-select
Version:
Angular ng-select - All in One UI Select, Multiselect and Autocomplete
246 lines (245 loc) • 13 kB
TypeScript
import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, InjectionToken, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges, TemplateRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { Subject } from 'rxjs';
import { NgSelectConfig } from './config.service';
import { ConsoleService } from './console.service';
import { ItemsList } from './items-list';
import { NgDropdownPanelComponent } from './ng-dropdown-panel.component';
import { NgOptionComponent } from './ng-option.component';
import { DropdownPosition, NgOption } from './ng-select.types';
import { SelectionModelFactory } from './selection-model';
import * as i0 from "@angular/core";
export declare const SELECTION_MODEL_FACTORY: InjectionToken<SelectionModelFactory>;
export type AddTagFn = (term: string) => any | Promise<any>;
export type CompareWithFn = (a: any, b: any) => boolean;
export type GroupValueFn = (key: string | any, children: any[]) => string | any;
export declare class NgSelectComponent implements OnDestroy, OnChanges, OnInit, AfterViewInit, ControlValueAccessor {
classes: string;
private readonly autoFocus;
config: NgSelectConfig;
private readonly _cd;
private readonly _console;
ariaLabelDropdown: string;
bindLabel: string;
bindValue: string;
ariaLabel: string | undefined;
markFirst: boolean;
placeholder: string;
fixedPlaceholder: boolean;
notFoundText: string;
typeToSearchText: string;
preventToggleOnRightClick: boolean;
addTagText: string;
loadingText: string;
clearAllText: string;
appearance: string;
dropdownPosition: DropdownPosition;
appendTo: string;
loading: boolean;
closeOnSelect: boolean;
hideSelected: boolean;
selectOnTab: boolean;
openOnEnter: boolean;
maxSelectedItems: number;
groupBy: string | ((value: any) => any);
groupValue: GroupValueFn;
bufferAmount: number;
virtualScroll: boolean;
selectableGroup: boolean;
selectableGroupAsModel: boolean;
searchFn: any;
trackByFn: any;
clearOnBackspace: boolean;
labelForId: any;
inputAttrs: {
[key: string]: string;
};
tabIndex: number;
tabFocusOnClearButton: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
readonly: boolean;
searchWhileComposing: boolean;
minTermLength: number;
editableSearchTerm: boolean;
ngClass: any;
typeahead: Subject<string>;
multiple: boolean;
addTag: boolean | AddTagFn;
searchable: boolean;
clearable: boolean;
isOpen?: boolean;
blurEvent: EventEmitter<any>;
focusEvent: EventEmitter<any>;
changeEvent: EventEmitter<any>;
openEvent: EventEmitter<any>;
closeEvent: EventEmitter<any>;
searchEvent: EventEmitter<{
term: string;
items: any[];
}>;
clearEvent: EventEmitter<any>;
addEvent: EventEmitter<any>;
removeEvent: EventEmitter<any>;
scroll: EventEmitter<{
start: number;
end: number;
}>;
scrollToEnd: EventEmitter<any>;
optionTemplate: TemplateRef<any>;
optgroupTemplate: TemplateRef<any>;
labelTemplate: TemplateRef<any>;
multiLabelTemplate: TemplateRef<any>;
headerTemplate: TemplateRef<any>;
footerTemplate: TemplateRef<any>;
notFoundTemplate: TemplateRef<any>;
placeholderTemplate: TemplateRef<any>;
typeToSearchTemplate: TemplateRef<any>;
loadingTextTemplate: TemplateRef<any>;
tagTemplate: TemplateRef<any>;
loadingSpinnerTemplate: TemplateRef<any>;
clearButtonTemplate: TemplateRef<any>;
dropdownPanel: NgDropdownPanelComponent;
searchInput: ElementRef<HTMLInputElement>;
clearButton: ElementRef<HTMLSpanElement>;
ngOptions: QueryList<NgOptionComponent>;
useDefaultClass: boolean;
itemsList: ItemsList;
viewPortItems: NgOption[];
searchTerm: string;
dropdownId: string;
element: HTMLElement;
focused: boolean;
escapeHTML: boolean;
private _itemsAreUsed;
private readonly _defaultLabel;
private _primitive;
private _manualOpen;
private _pressedKeys;
private _isComposing;
private readonly _destroy$;
private readonly _keyPress$;
constructor(classes: string, autoFocus: any, config: NgSelectConfig, newSelectionModel: SelectionModelFactory | undefined, _elementRef: ElementRef<HTMLElement>, _cd: ChangeDetectorRef, _console: ConsoleService);
get filtered(): boolean;
get single(): boolean;
private _items;
get items(): readonly any[] | null | undefined;
set items(value: readonly any[] | null | undefined);
private _disabled;
get disabled(): boolean;
private _compareWith;
get compareWith(): CompareWithFn;
set compareWith(fn: CompareWithFn);
private _clearSearchOnAdd;
get clearSearchOnAdd(): boolean;
set clearSearchOnAdd(value: boolean);
private _deselectOnClick;
get deselectOnClick(): boolean;
set deselectOnClick(value: boolean);
get selectedItems(): NgOption[];
get selectedValues(): any[];
get hasValue(): boolean;
get currentPanelPosition(): DropdownPosition;
get showAddTag(): boolean;
private get _editableSearchTerm();
private get _isTypeahead();
private get _validTerm();
keyDownFn: (_: KeyboardEvent) => boolean;
clearItem: (item: any) => void;
ngOnInit(): void;
ngOnChanges(changes: SimpleChanges): void;
ngAfterViewInit(): void;
ngOnDestroy(): void;
handleKeyDown($event: KeyboardEvent): void;
handleKeyCode($event: KeyboardEvent): void;
handleKeyCodeInput($event: KeyboardEvent): void;
handleKeyCodeClear($event: KeyboardEvent): void;
handleMousedown($event: MouseEvent): boolean;
handleArrowClick(): void;
handleClearClick(): void;
clearModel(): void;
writeValue(value: any | any[]): void;
registerOnChange(fn: any): void;
registerOnTouched(fn: any): void;
setDisabledState(state: boolean): void;
toggle(): void;
open(): void;
close(): void;
toggleItem(item: NgOption): void;
select(item: NgOption): void;
focus(): void;
blur(): void;
unselect(item: NgOption): void;
selectTag(): void;
showClear(): boolean;
focusOnClear(): void;
trackByOption: (_: number, item: NgOption) => any;
showNoItemsFound(): boolean;
showTypeToSearch(): boolean;
onCompositionStart(): void;
onCompositionEnd(term: string): void;
filter(term: string): void;
onInputFocus($event: FocusEvent): void;
onInputBlur($event: FocusEvent): void;
onItemHover(item: NgOption): void;
detectChanges(): void;
private _onChange;
private _onTouched;
private _setSearchTermFromItems;
private _setItems;
private _setItemsFromNgOptions;
private _isValidWriteValue;
private _handleWriteValue;
private _handleKeyPresses;
private _setInputAttributes;
private _updateNgModel;
private _clearSearch;
private _changeSearch;
private _scrollToMarked;
private _scrollToTag;
private _onSelectionChanged;
private _handleTab;
private _handleEnter;
private _handleSpace;
private _handleArrowDown;
private _handleArrowUp;
private _nextItemIsTag;
private _handleBackspace;
private _mergeGlobalConfig;
/**
* Gets virtual scroll value from input or from config
*
* @param config NgSelectConfig object
*
* @returns `true` if virtual scroll is enabled, `false` otherwise
*/
private getVirtualScroll;
/**
* Gets disableVirtualScroll value from input or from config
*
* @param config NgSelectConfig object
*
* @returns `true` if disableVirtualScroll is enabled, `false` otherwise
*/
private isVirtualScrollDisabled;
static ɵfac: i0.ɵɵFactoryDeclaration<NgSelectComponent, [{ attribute: "class"; }, { attribute: "autofocus"; }, null, { optional: true; }, null, null, null]>;
static ɵcmp: i0.ɵɵComponentDeclaration<NgSelectComponent, "ng-select", never, { "ariaLabelDropdown": { "alias": "ariaLabelDropdown"; "required": false; }; "bindLabel": { "alias": "bindLabel"; "required": false; }; "bindValue": { "alias": "bindValue"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "markFirst": { "alias": "markFirst"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "fixedPlaceholder": { "alias": "fixedPlaceholder"; "required": false; }; "notFoundText": { "alias": "notFoundText"; "required": false; }; "typeToSearchText": { "alias": "typeToSearchText"; "required": false; }; "preventToggleOnRightClick": { "alias": "preventToggleOnRightClick"; "required": false; }; "addTagText": { "alias": "addTagText"; "required": false; }; "loadingText": { "alias": "loadingText"; "required": false; }; "clearAllText": { "alias": "clearAllText"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "dropdownPosition": { "alias": "dropdownPosition"; "required": false; }; "appendTo": { "alias": "appendTo"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; }; "hideSelected": { "alias": "hideSelected"; "required": false; }; "selectOnTab": { "alias": "selectOnTab"; "required": false; }; "openOnEnter": { "alias": "openOnEnter"; "required": false; }; "maxSelectedItems": { "alias": "maxSelectedItems"; "required": false; }; "groupBy": { "alias": "groupBy"; "required": false; }; "groupValue": { "alias": "groupValue"; "required": false; }; "bufferAmount": { "alias": "bufferAmount"; "required": false; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; }; "selectableGroup": { "alias": "selectableGroup"; "required": false; }; "selectableGroupAsModel": { "alias": "selectableGroupAsModel"; "required": false; }; "searchFn": { "alias": "searchFn"; "required": false; }; "trackByFn": { "alias": "trackByFn"; "required": false; }; "clearOnBackspace": { "alias": "clearOnBackspace"; "required": false; }; "labelForId": { "alias": "labelForId"; "required": false; }; "inputAttrs": { "alias": "inputAttrs"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "tabFocusOnClearButton": { "alias": "tabFocusOnClearButton"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; }; "searchWhileComposing": { "alias": "searchWhileComposing"; "required": false; }; "minTermLength": { "alias": "minTermLength"; "required": false; }; "editableSearchTerm": { "alias": "editableSearchTerm"; "required": false; }; "ngClass": { "alias": "ngClass"; "required": false; }; "typeahead": { "alias": "typeahead"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "addTag": { "alias": "addTag"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "items": { "alias": "items"; "required": false; }; "compareWith": { "alias": "compareWith"; "required": false; }; "clearSearchOnAdd": { "alias": "clearSearchOnAdd"; "required": false; }; "deselectOnClick": { "alias": "deselectOnClick"; "required": false; }; "keyDownFn": { "alias": "keyDownFn"; "required": false; }; }, { "blurEvent": "blur"; "focusEvent": "focus"; "changeEvent": "change"; "openEvent": "open"; "closeEvent": "close"; "searchEvent": "search"; "clearEvent": "clear"; "addEvent": "add"; "removeEvent": "remove"; "scroll": "scroll"; "scrollToEnd": "scrollToEnd"; }, ["optionTemplate", "optgroupTemplate", "labelTemplate", "multiLabelTemplate", "headerTemplate", "footerTemplate", "notFoundTemplate", "placeholderTemplate", "typeToSearchTemplate", "loadingTextTemplate", "tagTemplate", "loadingSpinnerTemplate", "clearButtonTemplate", "ngOptions"], never, true, never>;
static ngAcceptInputType_markFirst: unknown;
static ngAcceptInputType_loading: unknown;
static ngAcceptInputType_closeOnSelect: unknown;
static ngAcceptInputType_hideSelected: unknown;
static ngAcceptInputType_selectOnTab: unknown;
static ngAcceptInputType_openOnEnter: unknown;
static ngAcceptInputType_maxSelectedItems: unknown;
static ngAcceptInputType_bufferAmount: unknown;
static ngAcceptInputType_virtualScroll: unknown;
static ngAcceptInputType_selectableGroup: unknown;
static ngAcceptInputType_selectableGroupAsModel: unknown;
static ngAcceptInputType_clearOnBackspace: unknown;
static ngAcceptInputType_tabIndex: unknown;
static ngAcceptInputType_readonly: unknown;
static ngAcceptInputType_searchWhileComposing: unknown;
static ngAcceptInputType_minTermLength: unknown;
static ngAcceptInputType_editableSearchTerm: unknown;
static ngAcceptInputType_multiple: unknown;
static ngAcceptInputType_searchable: unknown;
static ngAcceptInputType_clearable: unknown;
}