@ng-select/ng-select 20.4.4 → 20.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { ElementRef, OnDestroy, OnChanges, OnInit, AfterViewInit, TemplateRef, SimpleChanges, InjectionToken } from '@angular/core';
2
+ import { ElementRef, OnChanges, OnInit, AfterViewInit, TemplateRef, SimpleChanges, InjectionToken } from '@angular/core';
3
3
  import { ControlValueAccessor } from '@angular/forms';
4
4
  import { Subject } from 'rxjs';
5
5
 
@@ -20,6 +20,12 @@ declare class NgSelectConfig {
20
20
  clearSearchOnAdd: boolean;
21
21
  deselectOnClick: boolean;
22
22
  tabFocusOnClear: boolean;
23
+ /**
24
+ * Controls which DOM event is used to detect outside clicks for closing the dropdown.
25
+ * Defaults to 'click'. Set to 'mousedown' to handle early outside interactions
26
+ * (useful when backdrops load on click and would otherwise close the dropdown).
27
+ */
28
+ outsideClickEvent: 'click' | 'mousedown';
23
29
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgSelectConfig, never>;
24
30
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<NgSelectConfig>;
25
31
  }
@@ -115,11 +121,12 @@ declare const SELECTION_MODEL_FACTORY: InjectionToken<SelectionModelFactory>;
115
121
  type AddTagFn = (term: string) => any | Promise<any>;
116
122
  type CompareWithFn = (a: any, b: any) => boolean;
117
123
  type GroupValueFn = (key: string | any, children: any[]) => string | any;
118
- declare class NgSelectComponent implements OnDestroy, OnChanges, OnInit, AfterViewInit, ControlValueAccessor {
124
+ declare class NgSelectComponent implements OnChanges, OnInit, AfterViewInit, ControlValueAccessor {
119
125
  readonly classes: string;
120
126
  readonly config: NgSelectConfig;
121
127
  private readonly _cd;
122
128
  private readonly _console;
129
+ private readonly _destroyRef;
123
130
  readonly _disabled: _angular_core.WritableSignal<boolean>;
124
131
  readonly ariaLabelDropdown: _angular_core.InputSignal<string>;
125
132
  readonly ariaLabel: _angular_core.InputSignal<string>;
@@ -134,6 +141,7 @@ declare class NgSelectComponent implements OnDestroy, OnChanges, OnInit, AfterVi
134
141
  readonly clearAllText: _angular_core.InputSignal<string>;
135
142
  readonly dropdownPosition: _angular_core.InputSignal<DropdownPosition>;
136
143
  readonly appendTo: _angular_core.InputSignal<string>;
144
+ readonly outsideClickEvent: _angular_core.InputSignal<"click" | "mousedown">;
137
145
  readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
138
146
  readonly closeOnSelect: _angular_core.InputSignalWithTransform<boolean, unknown>;
139
147
  readonly hideSelected: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -219,7 +227,6 @@ declare class NgSelectComponent implements OnDestroy, OnChanges, OnInit, AfterVi
219
227
  tabFocusOnClear: _angular_core.WritableSignal<boolean>;
220
228
  private readonly autoFocus;
221
229
  private readonly _defaultLabel;
222
- private readonly _destroy$;
223
230
  private readonly _editableSearchTerm;
224
231
  private _focused;
225
232
  private _injector;
@@ -244,7 +251,6 @@ declare class NgSelectComponent implements OnDestroy, OnChanges, OnInit, AfterVi
244
251
  ngOnInit(): void;
245
252
  ngOnChanges(changes: SimpleChanges): void;
246
253
  ngAfterViewInit(): void;
247
- ngOnDestroy(): void;
248
254
  handleKeyDown($event: KeyboardEvent): void;
249
255
  handleKeyCode($event: KeyboardEvent): void;
250
256
  handleKeyCodeInput($event: KeyboardEvent): void;
@@ -319,14 +325,15 @@ declare class NgSelectComponent implements OnDestroy, OnChanges, OnInit, AfterVi
319
325
  */
320
326
  private isVirtualScrollDisabled;
321
327
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgSelectComponent, never>;
322
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgSelectComponent, "ng-select", never, { "ariaLabelDropdown": { "alias": "ariaLabelDropdown"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "markFirst": { "alias": "markFirst"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "fixedPlaceholder": { "alias": "fixedPlaceholder"; "required": false; "isSignal": true; }; "notFoundText": { "alias": "notFoundText"; "required": false; "isSignal": true; }; "typeToSearchText": { "alias": "typeToSearchText"; "required": false; "isSignal": true; }; "preventToggleOnRightClick": { "alias": "preventToggleOnRightClick"; "required": false; "isSignal": true; }; "addTagText": { "alias": "addTagText"; "required": false; "isSignal": true; }; "loadingText": { "alias": "loadingText"; "required": false; "isSignal": true; }; "clearAllText": { "alias": "clearAllText"; "required": false; "isSignal": true; }; "dropdownPosition": { "alias": "dropdownPosition"; "required": false; "isSignal": true; }; "appendTo": { "alias": "appendTo"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "hideSelected": { "alias": "hideSelected"; "required": false; "isSignal": true; }; "selectOnTab": { "alias": "selectOnTab"; "required": false; "isSignal": true; }; "openOnEnter": { "alias": "openOnEnter"; "required": false; "isSignal": true; }; "maxSelectedItems": { "alias": "maxSelectedItems"; "required": false; "isSignal": true; }; "groupBy": { "alias": "groupBy"; "required": false; "isSignal": true; }; "groupValue": { "alias": "groupValue"; "required": false; "isSignal": true; }; "bufferAmount": { "alias": "bufferAmount"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "selectableGroup": { "alias": "selectableGroup"; "required": false; "isSignal": true; }; "tabFocusOnClearButton": { "alias": "tabFocusOnClearButton"; "required": false; "isSignal": true; }; "selectableGroupAsModel": { "alias": "selectableGroupAsModel"; "required": false; "isSignal": true; }; "searchFn": { "alias": "searchFn"; "required": false; "isSignal": true; }; "trackByFn": { "alias": "trackByFn"; "required": false; "isSignal": true; }; "clearOnBackspace": { "alias": "clearOnBackspace"; "required": false; "isSignal": true; }; "labelForId": { "alias": "labelForId"; "required": false; "isSignal": true; }; "inputAttrs": { "alias": "inputAttrs"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "searchWhileComposing": { "alias": "searchWhileComposing"; "required": false; "isSignal": true; }; "minTermLength": { "alias": "minTermLength"; "required": false; "isSignal": true; }; "editableSearchTerm": { "alias": "editableSearchTerm"; "required": false; "isSignal": true; }; "ngClass": { "alias": "ngClass"; "required": false; "isSignal": true; }; "typeahead": { "alias": "typeahead"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "addTag": { "alias": "addTag"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "deselectOnClick": { "alias": "deselectOnClick"; "required": false; "isSignal": true; }; "clearSearchOnAdd": { "alias": "clearSearchOnAdd"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "keyDownFn": { "alias": "keyDownFn"; "required": false; "isSignal": true; }; "bindLabel": { "alias": "bindLabel"; "required": false; "isSignal": true; }; "bindValue": { "alias": "bindValue"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "bindLabel": "bindLabelChange"; "bindValue": "bindValueChange"; "appearance": "appearanceChange"; "isOpen": "isOpenChange"; "items": "itemsChange"; "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>;
328
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgSelectComponent, "ng-select", never, { "ariaLabelDropdown": { "alias": "ariaLabelDropdown"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "markFirst": { "alias": "markFirst"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "fixedPlaceholder": { "alias": "fixedPlaceholder"; "required": false; "isSignal": true; }; "notFoundText": { "alias": "notFoundText"; "required": false; "isSignal": true; }; "typeToSearchText": { "alias": "typeToSearchText"; "required": false; "isSignal": true; }; "preventToggleOnRightClick": { "alias": "preventToggleOnRightClick"; "required": false; "isSignal": true; }; "addTagText": { "alias": "addTagText"; "required": false; "isSignal": true; }; "loadingText": { "alias": "loadingText"; "required": false; "isSignal": true; }; "clearAllText": { "alias": "clearAllText"; "required": false; "isSignal": true; }; "dropdownPosition": { "alias": "dropdownPosition"; "required": false; "isSignal": true; }; "appendTo": { "alias": "appendTo"; "required": false; "isSignal": true; }; "outsideClickEvent": { "alias": "outsideClickEvent"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "hideSelected": { "alias": "hideSelected"; "required": false; "isSignal": true; }; "selectOnTab": { "alias": "selectOnTab"; "required": false; "isSignal": true; }; "openOnEnter": { "alias": "openOnEnter"; "required": false; "isSignal": true; }; "maxSelectedItems": { "alias": "maxSelectedItems"; "required": false; "isSignal": true; }; "groupBy": { "alias": "groupBy"; "required": false; "isSignal": true; }; "groupValue": { "alias": "groupValue"; "required": false; "isSignal": true; }; "bufferAmount": { "alias": "bufferAmount"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "selectableGroup": { "alias": "selectableGroup"; "required": false; "isSignal": true; }; "tabFocusOnClearButton": { "alias": "tabFocusOnClearButton"; "required": false; "isSignal": true; }; "selectableGroupAsModel": { "alias": "selectableGroupAsModel"; "required": false; "isSignal": true; }; "searchFn": { "alias": "searchFn"; "required": false; "isSignal": true; }; "trackByFn": { "alias": "trackByFn"; "required": false; "isSignal": true; }; "clearOnBackspace": { "alias": "clearOnBackspace"; "required": false; "isSignal": true; }; "labelForId": { "alias": "labelForId"; "required": false; "isSignal": true; }; "inputAttrs": { "alias": "inputAttrs"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "searchWhileComposing": { "alias": "searchWhileComposing"; "required": false; "isSignal": true; }; "minTermLength": { "alias": "minTermLength"; "required": false; "isSignal": true; }; "editableSearchTerm": { "alias": "editableSearchTerm"; "required": false; "isSignal": true; }; "ngClass": { "alias": "ngClass"; "required": false; "isSignal": true; }; "typeahead": { "alias": "typeahead"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "addTag": { "alias": "addTag"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "deselectOnClick": { "alias": "deselectOnClick"; "required": false; "isSignal": true; }; "clearSearchOnAdd": { "alias": "clearSearchOnAdd"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "keyDownFn": { "alias": "keyDownFn"; "required": false; "isSignal": true; }; "bindLabel": { "alias": "bindLabel"; "required": false; "isSignal": true; }; "bindValue": { "alias": "bindValue"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "bindLabel": "bindLabelChange"; "bindValue": "bindValueChange"; "appearance": "appearanceChange"; "isOpen": "isOpenChange"; "items": "itemsChange"; "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>;
323
329
  }
324
330
 
325
- declare class NgDropdownPanelComponent implements OnInit, OnChanges, OnDestroy {
331
+ declare class NgDropdownPanelComponent implements OnInit, OnChanges {
326
332
  private _renderer;
327
333
  private _zone;
328
334
  private _panelService;
329
335
  private _document;
336
+ private _destroyRef;
330
337
  private _dropdown;
331
338
  readonly items: _angular_core.InputSignal<NgOption[]>;
332
339
  readonly markedItem: _angular_core.InputSignal<NgOption>;
@@ -338,6 +345,10 @@ declare class NgDropdownPanelComponent implements OnInit, OnChanges, OnDestroy {
338
345
  readonly footerTemplate: _angular_core.InputSignal<TemplateRef<any>>;
339
346
  readonly filterValue: _angular_core.InputSignal<string>;
340
347
  readonly ariaLabelDropdown: _angular_core.InputSignal<string>;
348
+ /**
349
+ * Which DOM event to listen to for outside click detection
350
+ */
351
+ readonly outsideClickEvent: _angular_core.InputSignal<"click" | "mousedown">;
341
352
  readonly update: _angular_core.OutputEmitterRef<any[]>;
342
353
  readonly scroll: _angular_core.OutputEmitterRef<{
343
354
  start: number;
@@ -348,7 +359,6 @@ declare class NgDropdownPanelComponent implements OnInit, OnChanges, OnDestroy {
348
359
  private readonly contentElementRef;
349
360
  private readonly scrollElementRef;
350
361
  private readonly paddingElementRef;
351
- private readonly _destroy$;
352
362
  private readonly _virtualPadding;
353
363
  private readonly _scrollablePanel;
354
364
  private readonly _contentPanel;
@@ -363,9 +373,9 @@ declare class NgDropdownPanelComponent implements OnInit, OnChanges, OnDestroy {
363
373
  private get itemsLength();
364
374
  private set itemsLength(value);
365
375
  private get _startOffset();
376
+ constructor();
366
377
  ngOnInit(): void;
367
378
  ngOnChanges(changes: SimpleChanges): void;
368
- ngOnDestroy(): void;
369
379
  scrollTo(option: NgOption, startFromOption?: boolean): void;
370
380
  scrollToTag(): void;
371
381
  adjustPosition(): void;
@@ -390,7 +400,7 @@ declare class NgDropdownPanelComponent implements OnInit, OnChanges, OnDestroy {
390
400
  private _updateYPosition;
391
401
  private _setupMousedownListener;
392
402
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgDropdownPanelComponent, never>;
393
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgDropdownPanelComponent, "ng-dropdown-panel", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "markedItem": { "alias": "markedItem"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "appendTo": { "alias": "appendTo"; "required": false; "isSignal": true; }; "bufferAmount": { "alias": "bufferAmount"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "headerTemplate": { "alias": "headerTemplate"; "required": false; "isSignal": true; }; "footerTemplate": { "alias": "footerTemplate"; "required": false; "isSignal": true; }; "filterValue": { "alias": "filterValue"; "required": false; "isSignal": true; }; "ariaLabelDropdown": { "alias": "ariaLabelDropdown"; "required": false; "isSignal": true; }; }, { "update": "update"; "scroll": "scroll"; "scrollToEnd": "scrollToEnd"; "outsideClick": "outsideClick"; }, never, ["*"], true, never>;
403
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgDropdownPanelComponent, "ng-dropdown-panel", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "markedItem": { "alias": "markedItem"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "appendTo": { "alias": "appendTo"; "required": false; "isSignal": true; }; "bufferAmount": { "alias": "bufferAmount"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "headerTemplate": { "alias": "headerTemplate"; "required": false; "isSignal": true; }; "footerTemplate": { "alias": "footerTemplate"; "required": false; "isSignal": true; }; "filterValue": { "alias": "filterValue"; "required": false; "isSignal": true; }; "ariaLabelDropdown": { "alias": "ariaLabelDropdown"; "required": false; "isSignal": true; }; "outsideClickEvent": { "alias": "outsideClickEvent"; "required": false; "isSignal": true; }; }, { "update": "update"; "scroll": "scroll"; "scrollToEnd": "scrollToEnd"; "outsideClick": "outsideClick"; }, never, ["*"], true, never>;
394
404
  }
395
405
 
396
406
  declare class NgItemLabelDirective {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-select/ng-select",
3
- "version": "20.4.4",
3
+ "version": "20.6.0",
4
4
  "description": "Angular ng-select - All in One UI Select, Multiselect and Autocomplete",
5
5
  "author": "@ng-select/ng-select",
6
6
  "license": "MIT",