@ng-select/ng-select 13.2.1 → 13.4.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.
@@ -13,12 +13,10 @@ const htmlEscapes = {
13
13
  '<': '&lt;',
14
14
  '>': '&gt;',
15
15
  '"': '&quot;',
16
- '\'': '&#39;'
16
+ "'": '&#39;',
17
17
  };
18
18
  function escapeHTML(value) {
19
- return (value && hasUnescapedHTMLExp.test(value)) ?
20
- value.replace(unescapedHTMLExp, chr => htmlEscapes[chr]) :
21
- value;
19
+ return value && hasUnescapedHTMLExp.test(value) ? value.replace(unescapedHTMLExp, (chr) => htmlEscapes[chr]) : value;
22
20
  }
23
21
  function isDefined(value) {
24
22
  return value !== undefined && value !== null;
@@ -39,9 +37,7 @@ class NgItemLabelDirective {
39
37
  this.escape = true;
40
38
  }
41
39
  ngOnChanges(changes) {
42
- this.element.nativeElement.innerHTML = this.escape ?
43
- escapeHTML(this.ngItemLabel) :
44
- this.ngItemLabel;
40
+ this.element.nativeElement.innerHTML = this.escape ? escapeHTML(this.ngItemLabel) : this.ngItemLabel;
45
41
  }
46
42
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgItemLabelDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
47
43
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0", type: NgItemLabelDirective, selector: "[ngItemLabel]", inputs: { ngItemLabel: "ngItemLabel", escape: "escape" }, usesOnChanges: true, ngImport: i0 }); }
@@ -191,7 +187,7 @@ function newId() {
191
187
  // First character is an 'a', it's good practice to tag id to begin with a letter
192
188
  return 'axxxxxxxxxxx'.replace(/[x]/g, () => {
193
189
  // eslint-disable-next-line no-bitwise
194
- const val = Math.random() * 16 | 0;
190
+ const val = (Math.random() * 16) | 0;
195
191
  return val.toString(16);
196
192
  });
197
193
  }
@@ -1035,7 +1031,7 @@ const diacritics = {
1035
1031
  '\u03CB': '\u03C5',
1036
1032
  '\u03B0': '\u03C5',
1037
1033
  '\u03C9': '\u03C9',
1038
- '\u03C2': '\u03C3'
1034
+ '\u03C2': '\u03C3',
1039
1035
  };
1040
1036
  function stripSpecialChars(text) {
1041
1037
  const match = (a) => diacritics[a] || a;
@@ -1118,16 +1114,15 @@ class ItemsList {
1118
1114
  findItem(value) {
1119
1115
  let findBy;
1120
1116
  if (this._ngSelect.compareWith) {
1121
- findBy = item => this._ngSelect.compareWith(item.value, value);
1117
+ findBy = (item) => this._ngSelect.compareWith(item.value, value);
1122
1118
  }
1123
1119
  else if (this._ngSelect.bindValue) {
1124
- findBy = item => !item.children && this.resolveNested(item.value, this._ngSelect.bindValue) === value;
1120
+ findBy = (item) => !item.children && this.resolveNested(item.value, this._ngSelect.bindValue) === value;
1125
1121
  }
1126
1122
  else {
1127
- findBy = item => item.value === value ||
1128
- !item.children && item.label && item.label === this.resolveNested(value, this._ngSelect.bindLabel);
1123
+ findBy = (item) => item.value === value || (!item.children && item.label && item.label === this.resolveNested(value, this._ngSelect.bindLabel));
1129
1124
  }
1130
- return this._items.find(item => findBy(item));
1125
+ return this._items.find((item) => findBy(item));
1131
1126
  }
1132
1127
  addItem(item) {
1133
1128
  const option = this.mapItem(item, this._items.length);
@@ -1137,7 +1132,7 @@ class ItemsList {
1137
1132
  }
1138
1133
  clearSelected(keepDisabled = false) {
1139
1134
  this._selectionModel.clear(keepDisabled);
1140
- this._items.forEach(item => {
1135
+ this._items.forEach((item) => {
1141
1136
  item.selected = keepDisabled && item.selected && item.disabled;
1142
1137
  item.marked = false;
1143
1138
  });
@@ -1147,7 +1142,7 @@ class ItemsList {
1147
1142
  }
1148
1143
  findByLabel(term) {
1149
1144
  term = stripSpecialChars(term).toLocaleLowerCase();
1150
- return this.filteredItems.find(item => {
1145
+ return this.filteredItems.find((item) => {
1151
1146
  const label = stripSpecialChars(item.label).toLocaleLowerCase();
1152
1147
  return label.substr(0, term.length) === term;
1153
1148
  });
@@ -1164,7 +1159,7 @@ class ItemsList {
1164
1159
  for (const key of Array.from(this._groups.keys())) {
1165
1160
  const matchedItems = [];
1166
1161
  for (const item of this._groups.get(key)) {
1167
- if (hideSelected && (item.parent && item.parent.selected || item.selected)) {
1162
+ if (hideSelected && ((item.parent && item.parent.selected) || item.selected)) {
1168
1163
  continue;
1169
1164
  }
1170
1165
  const searchItem = this._ngSelect.searchFn ? item.value : item;
@@ -1175,7 +1170,7 @@ class ItemsList {
1175
1170
  if (matchedItems.length > 0) {
1176
1171
  const [last] = matchedItems.slice(-1);
1177
1172
  if (last.parent) {
1178
- const head = this._items.find(x => x === last.parent);
1173
+ const head = this._items.find((x) => x === last.parent);
1179
1174
  this._filteredItems.push(head);
1180
1175
  }
1181
1176
  this._filteredItems.push(...matchedItems);
@@ -1187,7 +1182,7 @@ class ItemsList {
1187
1182
  return;
1188
1183
  }
1189
1184
  if (this._ngSelect.hideSelected && this.selectedItems.length > 0) {
1190
- this._filteredItems = this._items.filter(x => !x.selected);
1185
+ this._filteredItems = this._items.filter((x) => !x.selected);
1191
1186
  }
1192
1187
  else {
1193
1188
  this._filteredItems = this._items;
@@ -1214,7 +1209,7 @@ class ItemsList {
1214
1209
  this._markedIndex = lastMarkedIndex;
1215
1210
  }
1216
1211
  else {
1217
- this._markedIndex = markDefault ? this.filteredItems.findIndex(x => !x.disabled) : -1;
1212
+ this._markedIndex = markDefault ? this.filteredItems.findIndex((x) => !x.disabled) : -1;
1218
1213
  }
1219
1214
  }
1220
1215
  resolveNested(option, key) {
@@ -1256,14 +1251,14 @@ class ItemsList {
1256
1251
  this._selectionModel.select(item || selected, multiple, this._ngSelect.selectableGroupAsModel);
1257
1252
  }
1258
1253
  if (this._ngSelect.hideSelected) {
1259
- this._filteredItems = this.filteredItems.filter(x => this.selectedItems.indexOf(x) === -1);
1254
+ this._filteredItems = this.filteredItems.filter((x) => this.selectedItems.indexOf(x) === -1);
1260
1255
  }
1261
1256
  }
1262
1257
  _showSelected(item) {
1263
1258
  this._filteredItems.push(item);
1264
1259
  if (item.parent) {
1265
1260
  const parent = item.parent;
1266
- const parentExists = this._filteredItems.find(x => x === parent);
1261
+ const parentExists = this._filteredItems.find((x) => x === parent);
1267
1262
  if (!parentExists) {
1268
1263
  this._filteredItems.push(parent);
1269
1264
  }
@@ -1274,18 +1269,18 @@ class ItemsList {
1274
1269
  this._filteredItems.push(child);
1275
1270
  }
1276
1271
  }
1277
- this._filteredItems = [...this._filteredItems.sort((a, b) => (a.index - b.index))];
1272
+ this._filteredItems = [...this._filteredItems.sort((a, b) => a.index - b.index)];
1278
1273
  }
1279
1274
  _hideSelected(item) {
1280
- this._filteredItems = this._filteredItems.filter(x => x !== item);
1275
+ this._filteredItems = this._filteredItems.filter((x) => x !== item);
1281
1276
  if (item.parent) {
1282
1277
  const children = item.parent.children;
1283
- if (children.every(x => x.selected)) {
1284
- this._filteredItems = this._filteredItems.filter(x => x !== item.parent);
1278
+ if (children.every((x) => x.selected)) {
1279
+ this._filteredItems = this._filteredItems.filter((x) => x !== item.parent);
1285
1280
  }
1286
1281
  }
1287
1282
  else if (item.children) {
1288
- this._filteredItems = this.filteredItems.filter(x => x.parent !== item);
1283
+ this._filteredItems = this.filteredItems.filter((x) => x.parent !== item);
1289
1284
  }
1290
1285
  }
1291
1286
  _defaultSearchFn(search, opt) {
@@ -1294,12 +1289,12 @@ class ItemsList {
1294
1289
  }
1295
1290
  _getNextItemIndex(steps) {
1296
1291
  if (steps > 0) {
1297
- return (this._markedIndex >= this._filteredItems.length - 1) ? 0 : (this._markedIndex + 1);
1292
+ return this._markedIndex >= this._filteredItems.length - 1 ? 0 : this._markedIndex + 1;
1298
1293
  }
1299
- return (this._markedIndex <= 0) ? (this._filteredItems.length - 1) : (this._markedIndex - 1);
1294
+ return this._markedIndex <= 0 ? this._filteredItems.length - 1 : this._markedIndex - 1;
1300
1295
  }
1301
1296
  _stepToItem(steps) {
1302
- if (this._filteredItems.length === 0 || this._filteredItems.every(x => x.disabled)) {
1297
+ if (this._filteredItems.length === 0 || this._filteredItems.every((x) => x.disabled)) {
1303
1298
  return;
1304
1299
  }
1305
1300
  this._markedIndex = this._getNextItemIndex(steps);
@@ -1358,7 +1353,7 @@ class ItemsList {
1358
1353
  let i = items.length;
1359
1354
  if (key === undefined) {
1360
1355
  const withoutGroup = groups.get(undefined) || [];
1361
- items.push(...withoutGroup.map(x => {
1356
+ items.push(...withoutGroup.map((x) => {
1362
1357
  x.index = i++;
1363
1358
  return x;
1364
1359
  }));
@@ -1374,20 +1369,21 @@ class ItemsList {
1374
1369
  htmlId: newId(),
1375
1370
  };
1376
1371
  const groupKey = isGroupByFn ? this._ngSelect.bindLabel : this._ngSelect.groupBy;
1377
- const groupValue = this._ngSelect.groupValue || (() => {
1378
- if (isObjectKey) {
1379
- return key.value;
1380
- }
1381
- return { [groupKey]: key };
1382
- });
1383
- const children = groups.get(key).map(x => {
1372
+ const groupValue = this._ngSelect.groupValue ||
1373
+ (() => {
1374
+ if (isObjectKey) {
1375
+ return key.value;
1376
+ }
1377
+ return { [groupKey]: key };
1378
+ });
1379
+ const children = groups.get(key).map((x) => {
1384
1380
  x.parent = parent;
1385
1381
  x.children = undefined;
1386
1382
  x.index = i++;
1387
1383
  return x;
1388
1384
  });
1389
1385
  parent.children = children;
1390
- parent.value = groupValue(key, children.map(x => x.value));
1386
+ parent.value = groupValue(key, children.map((x) => x.value));
1391
1387
  items.push(parent);
1392
1388
  items.push(...children);
1393
1389
  }
@@ -1411,7 +1407,7 @@ class NgDropdownPanelService {
1411
1407
  this._dimensions = {
1412
1408
  itemHeight: 0,
1413
1409
  panelHeight: 0,
1414
- itemsPerViewport: 0
1410
+ itemsPerViewport: 0,
1415
1411
  };
1416
1412
  }
1417
1413
  get dimensions() {
@@ -1421,12 +1417,12 @@ class NgDropdownPanelService {
1421
1417
  const d = this._dimensions;
1422
1418
  const scrollHeight = d.itemHeight * itemsLength;
1423
1419
  const scrollTop = Math.max(0, scrollPos);
1424
- const indexByScrollTop = scrollTop / scrollHeight * itemsLength;
1420
+ const indexByScrollTop = (scrollTop / scrollHeight) * itemsLength;
1425
1421
  let end = Math.min(itemsLength, Math.ceil(indexByScrollTop) + (d.itemsPerViewport + 1));
1426
1422
  const maxStartEnd = end;
1427
1423
  const maxStart = Math.max(0, maxStartEnd - d.itemsPerViewport);
1428
1424
  let start = Math.min(maxStart, Math.floor(indexByScrollTop));
1429
- let topPadding = d.itemHeight * Math.ceil(start) - (d.itemHeight * Math.min(start, buffer));
1425
+ let topPadding = d.itemHeight * Math.ceil(start) - d.itemHeight * Math.min(start, buffer);
1430
1426
  topPadding = !isNaN(topPadding) ? topPadding : 0;
1431
1427
  start = !isNaN(start) ? start : -1;
1432
1428
  end = !isNaN(end) ? end : -1;
@@ -1438,7 +1434,7 @@ class NgDropdownPanelService {
1438
1434
  topPadding,
1439
1435
  scrollHeight,
1440
1436
  start,
1441
- end
1437
+ end,
1442
1438
  };
1443
1439
  }
1444
1440
  setDimensions(itemHeight, panelHeight) {
@@ -1446,7 +1442,7 @@ class NgDropdownPanelService {
1446
1442
  this._dimensions = {
1447
1443
  itemHeight,
1448
1444
  panelHeight,
1449
- itemsPerViewport
1445
+ itemsPerViewport,
1450
1446
  };
1451
1447
  }
1452
1448
  getScrollTo(itemTop, itemHeight, lastScroll) {
@@ -1596,7 +1592,7 @@ class NgDropdownPanelComponent {
1596
1592
  .pipe(takeUntil(this._destroy$), auditTime(0, SCROLL_SCHEDULER))
1597
1593
  .subscribe((e) => {
1598
1594
  const path = e.path || (e.composedPath && e.composedPath());
1599
- if (!path || path.length === 0 && !e.target) {
1595
+ if (!path || (path.length === 0 && !e.target)) {
1600
1596
  return;
1601
1597
  }
1602
1598
  const scrollTop = !path || path.length === 0 ? e.target.scrollTop : path[0].scrollTop;
@@ -1609,8 +1605,9 @@ class NgDropdownPanelComponent {
1609
1605
  return;
1610
1606
  }
1611
1607
  this._zone.runOutsideAngular(() => {
1612
- merge(fromEvent(this._document, 'touchstart', { capture: true }), fromEvent(this._document, 'click', { capture: true })).pipe(takeUntil(this._destroy$))
1613
- .subscribe($event => this._checkToClose($event));
1608
+ merge(fromEvent(this._document, 'touchstart', { capture: true }), fromEvent(this._document, 'click', { capture: true }))
1609
+ .pipe(takeUntil(this._destroy$))
1610
+ .subscribe(($event) => this._checkToClose($event));
1614
1611
  });
1615
1612
  }
1616
1613
  _checkToClose($event) {
@@ -1720,9 +1717,7 @@ class NgDropdownPanelComponent {
1720
1717
  if (this._scrollToEndFired || scrollTop === 0) {
1721
1718
  return;
1722
1719
  }
1723
- const padding = this.virtualScroll ?
1724
- this._virtualPadding :
1725
- this._contentPanel;
1720
+ const padding = this.virtualScroll ? this._virtualPadding : this._contentPanel;
1726
1721
  if (scrollTop + this._dropdown.clientHeight >= padding.clientHeight - 1) {
1727
1722
  this._zone.run(() => this.scrollToEnd.emit());
1728
1723
  this._scrollToEndFired = true;
@@ -1793,23 +1788,23 @@ class NgDropdownPanelComponent {
1793
1788
  }
1794
1789
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgDropdownPanelComponent, deps: [{ token: i0.Renderer2 }, { token: i0.NgZone }, { token: NgDropdownPanelService }, { token: i0.ElementRef }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
1795
1790
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: NgDropdownPanelComponent, selector: "ng-dropdown-panel", inputs: { items: "items", markedItem: "markedItem", position: "position", appendTo: "appendTo", bufferAmount: "bufferAmount", virtualScroll: ["virtualScroll", "virtualScroll", booleanAttribute], headerTemplate: "headerTemplate", footerTemplate: "footerTemplate", filterValue: "filterValue" }, outputs: { update: "update", scroll: "scroll", scrollToEnd: "scrollToEnd", outsideClick: "outsideClick" }, viewQueries: [{ propertyName: "contentElementRef", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }, { propertyName: "scrollElementRef", first: true, predicate: ["scroll"], descendants: true, read: ElementRef, static: true }, { propertyName: "paddingElementRef", first: true, predicate: ["padding"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: `
1796
- @if (headerTemplate) {
1797
- <div class="ng-dropdown-header">
1798
- <ng-container [ngTemplateOutlet]="headerTemplate" [ngTemplateOutletContext]="{ searchTerm: filterValue }"></ng-container>
1799
- </div>
1800
- }
1801
- <div #scroll role="listbox" class="ng-dropdown-panel-items scroll-host">
1802
- <div #padding [class.total-padding]="virtualScroll"></div>
1803
- <div #content [class.scrollable-content]="virtualScroll && items.length">
1804
- <ng-content></ng-content>
1805
- </div>
1806
- </div>
1807
- @if (footerTemplate) {
1808
- <div class="ng-dropdown-footer">
1809
- <ng-container [ngTemplateOutlet]="footerTemplate" [ngTemplateOutletContext]="{ searchTerm: filterValue }"></ng-container>
1810
- </div>
1811
- }
1812
- `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1791
+ @if (headerTemplate) {
1792
+ <div class="ng-dropdown-header">
1793
+ <ng-container [ngTemplateOutlet]="headerTemplate" [ngTemplateOutletContext]="{ searchTerm: filterValue }"></ng-container>
1794
+ </div>
1795
+ }
1796
+ <div #scroll role="listbox" class="ng-dropdown-panel-items scroll-host">
1797
+ <div #padding [class.total-padding]="virtualScroll"></div>
1798
+ <div #content [class.scrollable-content]="virtualScroll && items.length">
1799
+ <ng-content></ng-content>
1800
+ </div>
1801
+ </div>
1802
+ @if (footerTemplate) {
1803
+ <div class="ng-dropdown-footer">
1804
+ <ng-container [ngTemplateOutlet]="footerTemplate" [ngTemplateOutletContext]="{ searchTerm: filterValue }"></ng-container>
1805
+ </div>
1806
+ }
1807
+ `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1813
1808
  }
1814
1809
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgDropdownPanelComponent, decorators: [{
1815
1810
  type: Component,
@@ -1818,23 +1813,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
1818
1813
  encapsulation: ViewEncapsulation.None,
1819
1814
  selector: 'ng-dropdown-panel',
1820
1815
  template: `
1821
- @if (headerTemplate) {
1822
- <div class="ng-dropdown-header">
1823
- <ng-container [ngTemplateOutlet]="headerTemplate" [ngTemplateOutletContext]="{ searchTerm: filterValue }"></ng-container>
1824
- </div>
1825
- }
1826
- <div #scroll role="listbox" class="ng-dropdown-panel-items scroll-host">
1827
- <div #padding [class.total-padding]="virtualScroll"></div>
1828
- <div #content [class.scrollable-content]="virtualScroll && items.length">
1829
- <ng-content></ng-content>
1830
- </div>
1831
- </div>
1832
- @if (footerTemplate) {
1833
- <div class="ng-dropdown-footer">
1834
- <ng-container [ngTemplateOutlet]="footerTemplate" [ngTemplateOutletContext]="{ searchTerm: filterValue }"></ng-container>
1835
- </div>
1836
- }
1837
- `
1816
+ @if (headerTemplate) {
1817
+ <div class="ng-dropdown-header">
1818
+ <ng-container [ngTemplateOutlet]="headerTemplate" [ngTemplateOutletContext]="{ searchTerm: filterValue }"></ng-container>
1819
+ </div>
1820
+ }
1821
+ <div #scroll role="listbox" class="ng-dropdown-panel-items scroll-host">
1822
+ <div #padding [class.total-padding]="virtualScroll"></div>
1823
+ <div #content [class.scrollable-content]="virtualScroll && items.length">
1824
+ <ng-content></ng-content>
1825
+ </div>
1826
+ </div>
1827
+ @if (footerTemplate) {
1828
+ <div class="ng-dropdown-footer">
1829
+ <ng-container [ngTemplateOutlet]="footerTemplate" [ngTemplateOutletContext]="{ searchTerm: filterValue }"></ng-container>
1830
+ </div>
1831
+ }
1832
+ `,
1838
1833
  }]
1839
1834
  }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.NgZone }, { type: NgDropdownPanelService }, { type: i0.ElementRef }, { type: undefined, decorators: [{
1840
1835
  type: Optional
@@ -1892,7 +1887,7 @@ class NgOptionComponent {
1892
1887
  if (changes.disabled) {
1893
1888
  this.stateChange$.next({
1894
1889
  value: this.value,
1895
- disabled: this.disabled
1890
+ disabled: this.disabled,
1896
1891
  });
1897
1892
  }
1898
1893
  }
@@ -1902,7 +1897,7 @@ class NgOptionComponent {
1902
1897
  this.stateChange$.next({
1903
1898
  value: this.value,
1904
1899
  disabled: this.disabled,
1905
- label: this.elementRef.nativeElement.innerHTML
1900
+ label: this.elementRef.nativeElement.innerHTML,
1906
1901
  });
1907
1902
  }
1908
1903
  }
@@ -1917,7 +1912,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
1917
1912
  args: [{
1918
1913
  selector: 'ng-option',
1919
1914
  changeDetection: ChangeDetectionStrategy.OnPush,
1920
- template: `<ng-content></ng-content>`
1915
+ template: `<ng-content></ng-content>`,
1921
1916
  }]
1922
1917
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { value: [{
1923
1918
  type: Input
@@ -1959,14 +1954,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
1959
1954
 
1960
1955
  const SELECTION_MODEL_FACTORY = new InjectionToken('ng-select-selection-model');
1961
1956
  class NgSelectComponent {
1962
- get items() { return this._items; }
1963
- ;
1957
+ get items() {
1958
+ return this._items;
1959
+ }
1964
1960
  set items(value) {
1965
1961
  this._itemsAreUsed = true;
1966
1962
  this._items = value ?? [];
1967
1963
  }
1968
- ;
1969
- get compareWith() { return this._compareWith; }
1964
+ get compareWith() {
1965
+ return this._compareWith;
1966
+ }
1970
1967
  set compareWith(fn) {
1971
1968
  if (fn !== undefined && fn !== null && !isFunction(fn)) {
1972
1969
  throw Error('`compareWith` must be a function.');
@@ -1982,11 +1979,9 @@ class NgSelectComponent {
1982
1979
  }
1983
1980
  return this.closeOnSelect;
1984
1981
  }
1985
- ;
1986
1982
  set clearSearchOnAdd(value) {
1987
1983
  this._clearSearchOnAdd = value;
1988
1984
  }
1989
- ;
1990
1985
  get deselectOnClick() {
1991
1986
  if (isDefined(this._deselectOnClick)) {
1992
1987
  return this._deselectOnClick;
@@ -1996,17 +1991,21 @@ class NgSelectComponent {
1996
1991
  }
1997
1992
  return this.multiple;
1998
1993
  }
1999
- ;
2000
1994
  set deselectOnClick(value) {
2001
1995
  this._deselectOnClick = value;
2002
1996
  }
2003
- ;
2004
- get disabled() { return this.readonly || this._disabled; }
2005
- ;
2006
- get filtered() { return (!!this.searchTerm && this.searchable || this._isComposing); }
2007
- ;
2008
- get single() { return !this.multiple; }
2009
- ;
1997
+ get dropdownPanelStaticClasses() {
1998
+ return this.appendTo && this.classes ? `ng-dropdown-panel ${this.classes}` : 'ng-dropdown-panel';
1999
+ }
2000
+ get disabled() {
2001
+ return this.readonly || this._disabled;
2002
+ }
2003
+ get filtered() {
2004
+ return (!!this.searchTerm && this.searchable) || this._isComposing;
2005
+ }
2006
+ get single() {
2007
+ return !this.multiple;
2008
+ }
2010
2009
  get _editableSearchTerm() {
2011
2010
  return this.editableSearchTerm && !this.multiple;
2012
2011
  }
@@ -2035,6 +2034,7 @@ class NgSelectComponent {
2035
2034
  this.minTermLength = 0;
2036
2035
  this.editableSearchTerm = false;
2037
2036
  this.keyDownFn = (_) => true;
2037
+ this.ngClass = null;
2038
2038
  this.multiple = false;
2039
2039
  this.addTag = false;
2040
2040
  this.searchable = true;
@@ -2066,7 +2066,7 @@ class NgSelectComponent {
2066
2066
  this._onChange = (_) => { };
2067
2067
  this._onTouched = () => { };
2068
2068
  this.clearItem = (item) => {
2069
- const option = this.selectedItems.find(x => x.value === item);
2069
+ const option = this.selectedItems.find((x) => x.value === item);
2070
2070
  this.unselect(option);
2071
2071
  };
2072
2072
  this.trackByOption = (_, item) => {
@@ -2083,7 +2083,7 @@ class NgSelectComponent {
2083
2083
  return this.itemsList.selectedItems;
2084
2084
  }
2085
2085
  get selectedValues() {
2086
- return this.selectedItems.map(x => x.value);
2086
+ return this.selectedItems.map((x) => x.value);
2087
2087
  }
2088
2088
  get hasValue() {
2089
2089
  return this.selectedItems.length > 0;
@@ -2336,9 +2336,9 @@ class NgSelectComponent {
2336
2336
  else {
2337
2337
  tag = this._primitive ? this.searchTerm : { [this.bindLabel]: this.searchTerm };
2338
2338
  }
2339
- const handleTag = (item) => this._isTypeahead || !this.isOpen ? this.itemsList.mapItem(item, null) : this.itemsList.addItem(item);
2339
+ const handleTag = (item) => (this._isTypeahead || !this.isOpen ? this.itemsList.mapItem(item, null) : this.itemsList.addItem(item));
2340
2340
  if (isPromise(tag)) {
2341
- tag.then(item => this.select(handleTag(item))).catch(() => { });
2341
+ tag.then((item) => this.select(handleTag(item))).catch(() => { });
2342
2342
  }
2343
2343
  else if (tag) {
2344
2344
  this.select(handleTag(tag));
@@ -2358,16 +2358,15 @@ class NgSelectComponent {
2358
2358
  return false;
2359
2359
  }
2360
2360
  const term = this.searchTerm.toLowerCase().trim();
2361
- return this.addTag &&
2362
- (!this.itemsList.filteredItems.some(x => x.label.toLowerCase() === term) &&
2363
- (!this.hideSelected && this.isOpen || !this.selectedItems.some(x => x.label.toLowerCase() === term))) &&
2364
- !this.loading;
2361
+ return (this.addTag &&
2362
+ !this.itemsList.filteredItems.some((x) => x.label.toLowerCase() === term) &&
2363
+ ((!this.hideSelected && this.isOpen) || !this.selectedItems.some((x) => x.label.toLowerCase() === term)) &&
2364
+ !this.loading);
2365
2365
  }
2366
2366
  showNoItemsFound() {
2367
2367
  const empty = this.itemsList.filteredItems.length === 0;
2368
- return ((empty && !this._isTypeahead && !this.loading) ||
2369
- (empty && this._isTypeahead && this._validTerm && !this.loading)) &&
2370
- !this.showAddTag;
2368
+ return (((empty && !this._isTypeahead && !this.loading) || (empty && this._isTypeahead && this._validTerm && !this.loading)) &&
2369
+ !this.showAddTag);
2371
2370
  }
2372
2371
  showTypeToSearch() {
2373
2372
  const empty = this.itemsList.filteredItems.length === 0;
@@ -2397,7 +2396,7 @@ class NgSelectComponent {
2397
2396
  this.itemsList.markSelectedOrDefault(this.markFirst);
2398
2397
  }
2399
2398
  }
2400
- this.searchEvent.emit({ term, items: this.itemsList.filteredItems.map(x => x.value) });
2399
+ this.searchEvent.emit({ term, items: this.itemsList.filteredItems.map((x) => x.value) });
2401
2400
  this.open();
2402
2401
  }
2403
2402
  onInputFocus($event) {
@@ -2454,10 +2453,10 @@ class NgSelectComponent {
2454
2453
  }
2455
2454
  _setItemsFromNgOptions() {
2456
2455
  const mapNgOptions = (options) => {
2457
- this.items = options.map(option => ({
2456
+ this.items = options.map((option) => ({
2458
2457
  $ngOptionValue: option.value,
2459
2458
  $ngOptionLabel: option.elementRef.nativeElement.innerHTML,
2460
- disabled: option.disabled
2459
+ disabled: option.disabled,
2461
2460
  }));
2462
2461
  this.itemsList.setItems(this.items);
2463
2462
  if (this.hasValue) {
@@ -2467,25 +2466,23 @@ class NgSelectComponent {
2467
2466
  };
2468
2467
  const handleOptionChange = () => {
2469
2468
  const changedOrDestroyed = merge(this.ngOptions.changes, this._destroy$);
2470
- merge(...this.ngOptions.map(option => option.stateChange$))
2469
+ merge(...this.ngOptions.map((option) => option.stateChange$))
2471
2470
  .pipe(takeUntil(changedOrDestroyed))
2472
- .subscribe(option => {
2471
+ .subscribe((option) => {
2473
2472
  const item = this.itemsList.findItem(option.value);
2474
2473
  item.disabled = option.disabled;
2475
2474
  item.label = option.label || item.label;
2476
2475
  this._cd.detectChanges();
2477
2476
  });
2478
2477
  };
2479
- this.ngOptions.changes
2480
- .pipe(startWith(this.ngOptions), takeUntil(this._destroy$))
2481
- .subscribe(options => {
2478
+ this.ngOptions.changes.pipe(startWith(this.ngOptions), takeUntil(this._destroy$)).subscribe((options) => {
2482
2479
  this.bindLabel = this._defaultLabel;
2483
2480
  mapNgOptions(options);
2484
2481
  handleOptionChange();
2485
2482
  });
2486
2483
  }
2487
2484
  _isValidWriteValue(value) {
2488
- if (!isDefined(value) || (this.multiple && value === '') || Array.isArray(value) && value.length === 0) {
2485
+ if (!isDefined(value) || (this.multiple && value === '') || (Array.isArray(value) && value.length === 0)) {
2489
2486
  return false;
2490
2487
  }
2491
2488
  const validateBinding = (item) => {
@@ -2500,7 +2497,7 @@ class NgSelectComponent {
2500
2497
  this._console.warn('Multiple select ngModel should be array.');
2501
2498
  return false;
2502
2499
  }
2503
- return value.every(item => validateBinding(item));
2500
+ return value.every((item) => validateBinding(item));
2504
2501
  }
2505
2502
  else {
2506
2503
  return validateBinding(value);
@@ -2518,20 +2515,20 @@ class NgSelectComponent {
2518
2515
  else {
2519
2516
  const isValObject = isObject(val);
2520
2517
  const isPrimitive = !isValObject && !this.bindValue;
2521
- if ((isValObject || isPrimitive)) {
2518
+ if (isValObject || isPrimitive) {
2522
2519
  this.itemsList.select(this.itemsList.mapItem(val, null));
2523
2520
  }
2524
2521
  else if (this.bindValue) {
2525
2522
  item = {
2526
2523
  [this.bindLabel]: null,
2527
- [this.bindValue]: val
2524
+ [this.bindValue]: val,
2528
2525
  };
2529
2526
  this.itemsList.select(this.itemsList.mapItem(item, null));
2530
2527
  }
2531
2528
  }
2532
2529
  };
2533
2530
  if (this.multiple) {
2534
- ngModel.forEach(item => select(item));
2531
+ ngModel.forEach((item) => select(item));
2535
2532
  }
2536
2533
  else {
2537
2534
  select(ngModel);
@@ -2542,8 +2539,8 @@ class NgSelectComponent {
2542
2539
  return;
2543
2540
  }
2544
2541
  this._keyPress$
2545
- .pipe(takeUntil(this._destroy$), tap(letter => this._pressedKeys.push(letter)), debounceTime(200), filter(() => this._pressedKeys.length > 0), map(() => this._pressedKeys.join('')))
2546
- .subscribe(term => {
2542
+ .pipe(takeUntil(this._destroy$), tap((letter) => this._pressedKeys.push(letter)), debounceTime(200), filter(() => this._pressedKeys.length > 0), map(() => this._pressedKeys.join('')))
2543
+ .subscribe((term) => {
2547
2544
  const item = this.itemsList.findByLabel(term);
2548
2545
  if (item) {
2549
2546
  if (this.isOpen) {
@@ -2565,7 +2562,7 @@ class NgSelectComponent {
2565
2562
  autocorrect: 'off',
2566
2563
  autocapitalize: 'off',
2567
2564
  autocomplete: this.labelForId ? 'off' : this.dropdownId,
2568
- ...this.inputAttrs
2565
+ ...this.inputAttrs,
2569
2566
  };
2570
2567
  for (const key of Object.keys(attributes)) {
2571
2568
  input.setAttribute(key, attributes[key]);
@@ -2589,7 +2586,7 @@ class NgSelectComponent {
2589
2586
  model.push(item.value);
2590
2587
  }
2591
2588
  }
2592
- const selected = this.selectedItems.map(x => x.value);
2589
+ const selected = this.selectedItems.map((x) => x.value);
2593
2590
  if (this.multiple) {
2594
2591
  this._onChange(model);
2595
2592
  this.changeEvent.emit(selected);
@@ -2711,9 +2708,7 @@ class NgSelectComponent {
2711
2708
  }
2712
2709
  _nextItemIsTag(nextStep) {
2713
2710
  const nextIndex = this.itemsList.markedIndex + nextStep;
2714
- return this.addTag && this.searchTerm
2715
- && this.itemsList.markedItem
2716
- && (nextIndex < 0 || nextIndex === this.itemsList.filteredItems.length);
2711
+ return (this.addTag && this.searchTerm && this.itemsList.markedItem && (nextIndex < 0 || nextIndex === this.itemsList.filteredItems.length));
2717
2712
  }
2718
2713
  _handleBackspace() {
2719
2714
  if (this.searchTerm || !this.clearable || !this.clearOnBackspace || !this.hasValue) {
@@ -2742,7 +2737,9 @@ class NgSelectComponent {
2742
2737
  this.clearAllText = this.clearAllText || config.clearAllText;
2743
2738
  this.virtualScroll = isDefined(this.virtualScroll)
2744
2739
  ? this.virtualScroll
2745
- : isDefined(config.disableVirtualScroll) ? !config.disableVirtualScroll : false;
2740
+ : isDefined(config.disableVirtualScroll)
2741
+ ? !config.disableVirtualScroll
2742
+ : false;
2746
2743
  this.openOnEnter = isDefined(this.openOnEnter) ? this.openOnEnter : config.openOnEnter;
2747
2744
  this.appendTo = this.appendTo || config.appendTo;
2748
2745
  this.bindValue = this.bindValue || config.bindValue;
@@ -2750,19 +2747,25 @@ class NgSelectComponent {
2750
2747
  this.appearance = this.appearance || config.appearance;
2751
2748
  }
2752
2749
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgSelectComponent, deps: [{ token: 'class', attribute: true }, { token: 'autofocus', attribute: true }, { token: NgSelectConfig }, { token: SELECTION_MODEL_FACTORY }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: ConsoleService }], target: i0.ɵɵFactoryTarget.Component }); }
2753
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: NgSelectComponent, selector: "ng-select", inputs: { bindLabel: "bindLabel", bindValue: "bindValue", markFirst: ["markFirst", "markFirst", booleanAttribute], placeholder: "placeholder", notFoundText: "notFoundText", typeToSearchText: "typeToSearchText", addTagText: "addTagText", loadingText: "loadingText", clearAllText: "clearAllText", appearance: "appearance", dropdownPosition: "dropdownPosition", appendTo: "appendTo", loading: ["loading", "loading", booleanAttribute], closeOnSelect: ["closeOnSelect", "closeOnSelect", booleanAttribute], hideSelected: ["hideSelected", "hideSelected", booleanAttribute], selectOnTab: ["selectOnTab", "selectOnTab", booleanAttribute], openOnEnter: ["openOnEnter", "openOnEnter", booleanAttribute], maxSelectedItems: ["maxSelectedItems", "maxSelectedItems", numberAttribute], groupBy: "groupBy", groupValue: "groupValue", bufferAmount: ["bufferAmount", "bufferAmount", numberAttribute], virtualScroll: ["virtualScroll", "virtualScroll", booleanAttribute], selectableGroup: ["selectableGroup", "selectableGroup", booleanAttribute], selectableGroupAsModel: ["selectableGroupAsModel", "selectableGroupAsModel", booleanAttribute], searchFn: "searchFn", trackByFn: "trackByFn", clearOnBackspace: ["clearOnBackspace", "clearOnBackspace", booleanAttribute], labelForId: "labelForId", inputAttrs: "inputAttrs", tabIndex: ["tabIndex", "tabIndex", numberAttribute], readonly: ["readonly", "readonly", booleanAttribute], searchWhileComposing: ["searchWhileComposing", "searchWhileComposing", booleanAttribute], minTermLength: ["minTermLength", "minTermLength", numberAttribute], editableSearchTerm: ["editableSearchTerm", "editableSearchTerm", booleanAttribute], keyDownFn: "keyDownFn", typeahead: "typeahead", multiple: ["multiple", "multiple", booleanAttribute], addTag: "addTag", searchable: ["searchable", "searchable", booleanAttribute], clearable: ["clearable", "clearable", booleanAttribute], isOpen: "isOpen", items: "items", compareWith: "compareWith", clearSearchOnAdd: "clearSearchOnAdd", deselectOnClick: "deselectOnClick" }, outputs: { blurEvent: "blur", focusEvent: "focus", changeEvent: "change", openEvent: "open", closeEvent: "close", searchEvent: "search", clearEvent: "clear", addEvent: "add", removeEvent: "remove", scroll: "scroll", scrollToEnd: "scrollToEnd" }, host: { listeners: { "keydown": "handleKeyDown($event)" }, properties: { "class.ng-select-typeahead": "this.typeahead", "class.ng-select-multiple": "this.multiple", "class.ng-select-taggable": "this.addTag", "class.ng-select-searchable": "this.searchable", "class.ng-select-clearable": "this.clearable", "class.ng-select-opened": "this.isOpen", "class.ng-select": "this.useDefaultClass", "class.ng-select-disabled": "this.disabled", "class.ng-select-filtered": "this.filtered", "class.ng-select-single": "this.single" } }, providers: [{
2750
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: NgSelectComponent, selector: "ng-select", inputs: { bindLabel: "bindLabel", bindValue: "bindValue", markFirst: ["markFirst", "markFirst", booleanAttribute], placeholder: "placeholder", notFoundText: "notFoundText", typeToSearchText: "typeToSearchText", addTagText: "addTagText", loadingText: "loadingText", clearAllText: "clearAllText", appearance: "appearance", dropdownPosition: "dropdownPosition", appendTo: "appendTo", loading: ["loading", "loading", booleanAttribute], closeOnSelect: ["closeOnSelect", "closeOnSelect", booleanAttribute], hideSelected: ["hideSelected", "hideSelected", booleanAttribute], selectOnTab: ["selectOnTab", "selectOnTab", booleanAttribute], openOnEnter: ["openOnEnter", "openOnEnter", booleanAttribute], maxSelectedItems: ["maxSelectedItems", "maxSelectedItems", numberAttribute], groupBy: "groupBy", groupValue: "groupValue", bufferAmount: ["bufferAmount", "bufferAmount", numberAttribute], virtualScroll: ["virtualScroll", "virtualScroll", booleanAttribute], selectableGroup: ["selectableGroup", "selectableGroup", booleanAttribute], selectableGroupAsModel: ["selectableGroupAsModel", "selectableGroupAsModel", booleanAttribute], searchFn: "searchFn", trackByFn: "trackByFn", clearOnBackspace: ["clearOnBackspace", "clearOnBackspace", booleanAttribute], labelForId: "labelForId", inputAttrs: "inputAttrs", tabIndex: ["tabIndex", "tabIndex", numberAttribute], readonly: ["readonly", "readonly", booleanAttribute], searchWhileComposing: ["searchWhileComposing", "searchWhileComposing", booleanAttribute], minTermLength: ["minTermLength", "minTermLength", numberAttribute], editableSearchTerm: ["editableSearchTerm", "editableSearchTerm", booleanAttribute], keyDownFn: "keyDownFn", ngClass: "ngClass", typeahead: "typeahead", multiple: ["multiple", "multiple", booleanAttribute], addTag: "addTag", searchable: ["searchable", "searchable", booleanAttribute], clearable: ["clearable", "clearable", booleanAttribute], isOpen: "isOpen", items: "items", compareWith: "compareWith", clearSearchOnAdd: "clearSearchOnAdd", deselectOnClick: "deselectOnClick" }, outputs: { blurEvent: "blur", focusEvent: "focus", changeEvent: "change", openEvent: "open", closeEvent: "close", searchEvent: "search", clearEvent: "clear", addEvent: "add", removeEvent: "remove", scroll: "scroll", scrollToEnd: "scrollToEnd" }, host: { listeners: { "keydown": "handleKeyDown($event)" }, properties: { "class.ng-select-typeahead": "this.typeahead", "class.ng-select-multiple": "this.multiple", "class.ng-select-taggable": "this.addTag", "class.ng-select-searchable": "this.searchable", "class.ng-select-clearable": "this.clearable", "class.ng-select-opened": "this.isOpen", "class.ng-select": "this.useDefaultClass", "class.ng-select-disabled": "this.disabled", "class.ng-select-filtered": "this.filtered", "class.ng-select-single": "this.single" } }, providers: [
2751
+ {
2754
2752
  provide: NG_VALUE_ACCESSOR,
2755
2753
  useExisting: forwardRef(() => NgSelectComponent),
2756
- multi: true
2757
- }, NgDropdownPanelService], queries: [{ propertyName: "optionTemplate", first: true, predicate: NgOptionTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "optgroupTemplate", first: true, predicate: NgOptgroupTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "labelTemplate", first: true, predicate: NgLabelTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "multiLabelTemplate", first: true, predicate: NgMultiLabelTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "headerTemplate", first: true, predicate: NgHeaderTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "footerTemplate", first: true, predicate: NgFooterTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "notFoundTemplate", first: true, predicate: NgNotFoundTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "typeToSearchTemplate", first: true, predicate: NgTypeToSearchTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "loadingTextTemplate", first: true, predicate: NgLoadingTextTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "tagTemplate", first: true, predicate: NgTagTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "loadingSpinnerTemplate", first: true, predicate: NgLoadingSpinnerTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "ngOptions", predicate: NgOptionComponent, descendants: true }], viewQueries: [{ propertyName: "dropdownPanel", first: true, predicate: i0.forwardRef(() => NgDropdownPanelComponent), descendants: true }, { propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, static: true }, { propertyName: "clearButton", first: true, predicate: ["clearButton"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n (mousedown)=\"handleMousedown($event)\"\n [class.ng-appearance-outline]=\"appearance === 'outline'\"\n [class.ng-has-value]=\"hasValue\"\n class=\"ng-select-container\">\n\n <div class=\"ng-value-container\">\n <div class=\"ng-placeholder\">{{ placeholder }}</div>\n\n @if ((!multiLabelTemplate || !multiple) && selectedItems.length > 0) {\n @for (item of selectedItems; track trackByOption($index, item)) {\n <div [class.ng-value-disabled]=\"item.disabled\" class=\"ng-value\">\n <ng-template #defaultLabelTemplate>\n <span class=\"ng-value-icon left\" (click)=\"unselect(item);\" aria-hidden=\"true\">\u00D7</span>\n <span class=\"ng-value-label\" [ngItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"labelTemplate || defaultLabelTemplate\"\n [ngTemplateOutletContext]=\"{ item: item.value, clear: clearItem, label: item.label }\">\n </ng-template>\n </div>\n }\n }\n\n @if (multiple && multiLabelTemplate && selectedValues.length > 0) {\n <ng-template\n [ngTemplateOutlet]=\"multiLabelTemplate\"\n [ngTemplateOutletContext]=\"{ items: selectedValues, clear: clearItem }\">\n </ng-template>\n }\n\n <div class=\"ng-input\"\n role=\"combobox\" \n [attr.aria-expanded]=\"isOpen\" \n [attr.aria-owns]=\"isOpen ? dropdownId : null\" \n aria-haspopup=\"listbox\">\n\n <input #searchInput\n [attr.id]=\"labelForId\"\n [attr.tabindex]=\"tabIndex\"\n [readOnly]=\"!searchable || itemsList.maxItemsSelected\"\n [disabled]=\"disabled\"\n [value]=\"searchTerm ? searchTerm : ''\"\n (input)=\"filter(searchInput.value)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd(searchInput.value)\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"$event.stopPropagation()\"\n [attr.aria-activedescendant]=\"isOpen ? itemsList?.markedItem?.htmlId : null\"\n aria-autocomplete=\"list\"\n [attr.aria-controls]=\"isOpen ? dropdownId : null\">\n </div>\n </div>\n\n @if (loading) {\n <ng-template #defaultLoadingSpinnerTemplate>\n <div class=\"ng-spinner-loader\"></div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"loadingSpinnerTemplate || defaultLoadingSpinnerTemplate\">\n </ng-template>\n }\n\n @if (showClear()) {\n <span class=\"ng-clear-wrapper\" tabindex=\"0\" title=\"{{clearAllText}}\" #clearButton>\n <span class=\"ng-clear\" aria-hidden=\"true\">\u00D7</span>\n </span>\n }\n\n <span class=\"ng-arrow-wrapper\">\n <span class=\"ng-arrow\"></span>\n </span>\n</div>\n\n@if (isOpen) {\n <ng-dropdown-panel\n class=\"ng-dropdown-panel\"\n [virtualScroll]=\"virtualScroll\"\n [bufferAmount]=\"bufferAmount\"\n [appendTo]=\"appendTo\"\n [position]=\"dropdownPosition\"\n [headerTemplate]=\"headerTemplate\"\n [footerTemplate]=\"footerTemplate\"\n [filterValue]=\"searchTerm\"\n [items]=\"itemsList.filteredItems\"\n [markedItem]=\"itemsList.markedItem\"\n (update)=\"viewPortItems = $event\"\n (scroll)=\"scroll.emit($event)\"\n (scrollToEnd)=\"scrollToEnd.emit($event)\"\n (outsideClick)=\"close()\"\n [class.ng-select-multiple]=\"multiple\"\n [ngClass]=\"appendTo ? classes : null\"\n [id]=\"dropdownId\"\n role=\"listbox\"\n aria-label=\"Options list\">\n <ng-container>\n @for (item of viewPortItems; track trackByOption($index, item)) {\n <div class=\"ng-option\" [attr.role]=\"item.children ? 'group' : 'option'\" (click)=\"toggleItem(item)\"\n (mouseover)=\"onItemHover(item)\"\n [class.ng-option-disabled]=\"item.disabled\"\n [class.ng-option-selected]=\"item.selected\"\n [class.ng-optgroup]=\"item.children\"\n [class.ng-option]=\"!item.children\"\n [class.ng-option-child]=\"!!item.parent\"\n [class.ng-option-marked]=\"item === itemsList.markedItem\"\n [attr.aria-selected]=\"item.selected\"\n [attr.id]=\"item?.htmlId\">\n <ng-template #defaultOptionTemplate>\n <span class=\"ng-option-label\" [ngItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"item.children ? (optgroupTemplate || defaultOptionTemplate) : (optionTemplate || defaultOptionTemplate)\"\n [ngTemplateOutletContext]=\"{ item: item.value, item$:item, index: item.index, searchTerm: searchTerm }\">\n </ng-template>\n </div>\n }\n @if (showAddTag) {\n <div class=\"ng-option\" [class.ng-option-marked]=\"!itemsList.markedItem\"\n (mouseover)=\"itemsList.unmarkItem()\" role=\"option\" (click)=\"selectTag()\">\n <ng-template #defaultTagTemplate>\n <span><span class=\"ng-tag-label\">{{ addTagText }}</span>\"{{ searchTerm }}\"</span>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"tagTemplate || defaultTagTemplate\"\n [ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n </ng-template>\n </div>\n }\n </ng-container>\n @if (showNoItemsFound()) {\n <ng-template #defaultNotFoundTemplate>\n <div class=\"ng-option ng-option-disabled\">{{ notFoundText }}</div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"notFoundTemplate || defaultNotFoundTemplate\"\n [ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n </ng-template>\n }\n @if (showTypeToSearch()) {\n <ng-template #defaultTypeToSearchTemplate>\n <div class=\"ng-option ng-option-disabled\">{{ typeToSearchText }}</div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"typeToSearchTemplate || defaultTypeToSearchTemplate\">\n </ng-template>\n }\n @if (loading && itemsList.filteredItems.length === 0) {\n <ng-template #defaultLoadingTextTemplate>\n <div class=\"ng-option ng-option-disabled\">{{ loadingText }}</div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"loadingTextTemplate || defaultLoadingTextTemplate\"\n [ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n </ng-template>\n }\n </ng-dropdown-panel>\n}\n", styles: ["@charset \"UTF-8\";.ng-select{position:relative;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{-webkit-user-select:none;user-select:none;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none transparent;border:0 none;box-shadow:none;outline:none;padding:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:none;user-select:none;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;transform:translateZ(0);animation:load8 .8s infinite linear}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-option-label:empty:before{content:\"\\200b\"}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgDropdownPanelComponent, selector: "ng-dropdown-panel", inputs: ["items", "markedItem", "position", "appendTo", "bufferAmount", "virtualScroll", "headerTemplate", "footerTemplate", "filterValue"], outputs: ["update", "scroll", "scrollToEnd", "outsideClick"] }, { kind: "directive", type: NgItemLabelDirective, selector: "[ngItemLabel]", inputs: ["ngItemLabel", "escape"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2754
+ multi: true,
2755
+ },
2756
+ NgDropdownPanelService,
2757
+ ], queries: [{ propertyName: "optionTemplate", first: true, predicate: NgOptionTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "optgroupTemplate", first: true, predicate: NgOptgroupTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "labelTemplate", first: true, predicate: NgLabelTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "multiLabelTemplate", first: true, predicate: NgMultiLabelTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "headerTemplate", first: true, predicate: NgHeaderTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "footerTemplate", first: true, predicate: NgFooterTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "notFoundTemplate", first: true, predicate: NgNotFoundTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "typeToSearchTemplate", first: true, predicate: NgTypeToSearchTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "loadingTextTemplate", first: true, predicate: NgLoadingTextTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "tagTemplate", first: true, predicate: NgTagTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "loadingSpinnerTemplate", first: true, predicate: NgLoadingSpinnerTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "ngOptions", predicate: NgOptionComponent, descendants: true }], viewQueries: [{ propertyName: "dropdownPanel", first: true, predicate: i0.forwardRef(() => NgDropdownPanelComponent), descendants: true }, { propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, static: true }, { propertyName: "clearButton", first: true, predicate: ["clearButton"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n\t(mousedown)=\"handleMousedown($event)\"\n\t[class.ng-appearance-outline]=\"appearance === 'outline'\"\n\t[class.ng-has-value]=\"hasValue\"\n\tclass=\"ng-select-container\">\n\t<div class=\"ng-value-container\">\n\t\t<div class=\"ng-placeholder\">{{ placeholder }}</div>\n\n\t\t@if ((!multiLabelTemplate || !multiple) && selectedItems.length > 0) {\n\t\t\t@for (item of selectedItems; track trackByOption($index, item)) {\n\t\t\t\t<div [class.ng-value-disabled]=\"item.disabled\" class=\"ng-value\">\n\t\t\t\t\t<ng-template #defaultLabelTemplate>\n\t\t\t\t\t\t<span class=\"ng-value-icon left\" (click)=\"unselect(item)\" aria-hidden=\"true\">\u00D7</span>\n\t\t\t\t\t\t<span class=\"ng-value-label\" [ngItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"labelTemplate || defaultLabelTemplate\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ item: item.value, clear: clearItem, label: item.label }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t}\n\n\t\t@if (multiple && multiLabelTemplate && selectedValues.length > 0) {\n\t\t\t<ng-template [ngTemplateOutlet]=\"multiLabelTemplate\" [ngTemplateOutletContext]=\"{ items: selectedValues, clear: clearItem }\">\n\t\t\t</ng-template>\n\t\t}\n\n\t\t<div\n\t\t\tclass=\"ng-input\"\n\t\t\trole=\"combobox\"\n\t\t\t[attr.aria-expanded]=\"isOpen\"\n\t\t\t[attr.aria-owns]=\"isOpen ? dropdownId : null\"\n\t\t\taria-haspopup=\"listbox\">\n\t\t\t<input\n\t\t\t\t#searchInput\n\t\t\t\t[attr.id]=\"labelForId\"\n\t\t\t\t[attr.tabindex]=\"tabIndex\"\n\t\t\t\t[readOnly]=\"!searchable || itemsList.maxItemsSelected\"\n\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t[value]=\"searchTerm ? searchTerm : ''\"\n\t\t\t\t(input)=\"filter(searchInput.value)\"\n\t\t\t\t(compositionstart)=\"onCompositionStart()\"\n\t\t\t\t(compositionend)=\"onCompositionEnd(searchInput.value)\"\n\t\t\t\t(focus)=\"onInputFocus($event)\"\n\t\t\t\t(blur)=\"onInputBlur($event)\"\n\t\t\t\t(change)=\"$event.stopPropagation()\"\n\t\t\t\t[attr.aria-activedescendant]=\"isOpen ? itemsList?.markedItem?.htmlId : null\"\n\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t[attr.aria-controls]=\"isOpen ? dropdownId : null\" />\n\t\t</div>\n\t</div>\n\n\t@if (loading) {\n\t\t<ng-template #defaultLoadingSpinnerTemplate>\n\t\t\t<div class=\"ng-spinner-loader\"></div>\n\t\t</ng-template>\n\t\t<ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate || defaultLoadingSpinnerTemplate\"> </ng-template>\n\t}\n\n\t@if (showClear()) {\n\t\t<span class=\"ng-clear-wrapper\" tabindex=\"0\" title=\"{{ clearAllText }}\" #clearButton>\n\t\t\t<span class=\"ng-clear\" aria-hidden=\"true\">\u00D7</span>\n\t\t</span>\n\t}\n\n\t<span class=\"ng-arrow-wrapper\">\n\t\t<span class=\"ng-arrow\"></span>\n\t</span>\n</div>\n\n@if (isOpen) {\n\t<ng-dropdown-panel\n\t\t[class]=\"dropdownPanelStaticClasses\"\n\t\t[virtualScroll]=\"virtualScroll\"\n\t\t[bufferAmount]=\"bufferAmount\"\n\t\t[appendTo]=\"appendTo\"\n\t\t[position]=\"dropdownPosition\"\n\t\t[headerTemplate]=\"headerTemplate\"\n\t\t[footerTemplate]=\"footerTemplate\"\n\t\t[filterValue]=\"searchTerm\"\n\t\t[items]=\"itemsList.filteredItems\"\n\t\t[markedItem]=\"itemsList.markedItem\"\n\t\t(update)=\"viewPortItems = $event\"\n\t\t(scroll)=\"scroll.emit($event)\"\n\t\t(scrollToEnd)=\"scrollToEnd.emit($event)\"\n\t\t(outsideClick)=\"close()\"\n\t\t[class.ng-select-multiple]=\"multiple\"\n\t\t[ngClass]=\"appendTo ? ngClass : null\"\n\t\t[id]=\"dropdownId\"\n\t\trole=\"listbox\"\n\t\taria-label=\"Options list\">\n\t\t<ng-container>\n\t\t\t@for (item of viewPortItems; track trackByOption($index, item)) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ng-option\"\n\t\t\t\t\t[attr.role]=\"item.children ? 'group' : 'option'\"\n\t\t\t\t\t(click)=\"toggleItem(item)\"\n\t\t\t\t\t(mouseover)=\"onItemHover(item)\"\n\t\t\t\t\t[class.ng-option-disabled]=\"item.disabled\"\n\t\t\t\t\t[class.ng-option-selected]=\"item.selected\"\n\t\t\t\t\t[class.ng-optgroup]=\"item.children\"\n\t\t\t\t\t[class.ng-option]=\"!item.children\"\n\t\t\t\t\t[class.ng-option-child]=\"!!item.parent\"\n\t\t\t\t\t[class.ng-option-marked]=\"item === itemsList.markedItem\"\n\t\t\t\t\t[attr.aria-selected]=\"item.selected\"\n\t\t\t\t\t[attr.id]=\"item?.htmlId\">\n\t\t\t\t\t<ng-template #defaultOptionTemplate>\n\t\t\t\t\t\t<span class=\"ng-option-label\" [ngItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\t\t\titem.children ? optgroupTemplate || defaultOptionTemplate : optionTemplate || defaultOptionTemplate\n\t\t\t\t\t\t\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ item: item.value, item$: item, index: item.index, searchTerm: searchTerm }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t@if (showAddTag) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ng-option\"\n\t\t\t\t\t[class.ng-option-marked]=\"!itemsList.markedItem\"\n\t\t\t\t\t(mouseover)=\"itemsList.unmarkItem()\"\n\t\t\t\t\trole=\"option\"\n\t\t\t\t\t(click)=\"selectTag()\">\n\t\t\t\t\t<ng-template #defaultTagTemplate>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t><span class=\"ng-tag-label\">{{ addTagText }}</span\n\t\t\t\t\t\t\t>\"{{ searchTerm }}\"</span\n\t\t\t\t\t\t>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"tagTemplate || defaultTagTemplate\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</ng-container>\n\t\t@if (showNoItemsFound()) {\n\t\t\t<ng-template #defaultNotFoundTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ notFoundText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"notFoundTemplate || defaultNotFoundTemplate\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t</ng-template>\n\t\t}\n\t\t@if (showTypeToSearch()) {\n\t\t\t<ng-template #defaultTypeToSearchTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ typeToSearchText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template [ngTemplateOutlet]=\"typeToSearchTemplate || defaultTypeToSearchTemplate\"> </ng-template>\n\t\t}\n\t\t@if (loading && itemsList.filteredItems.length === 0) {\n\t\t\t<ng-template #defaultLoadingTextTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ loadingText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"loadingTextTemplate || defaultLoadingTextTemplate\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t</ng-template>\n\t\t}\n\t</ng-dropdown-panel>\n}\n", styles: ["@charset \"UTF-8\";.ng-select{position:relative;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{-webkit-user-select:none;user-select:none;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none transparent;border:0 none;box-shadow:none;outline:none;padding:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:none;user-select:none;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;transform:translateZ(0);animation:load8 .8s infinite linear}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-option-label:empty:before{content:\"\\200b\"}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgDropdownPanelComponent, selector: "ng-dropdown-panel", inputs: ["items", "markedItem", "position", "appendTo", "bufferAmount", "virtualScroll", "headerTemplate", "footerTemplate", "filterValue"], outputs: ["update", "scroll", "scrollToEnd", "outsideClick"] }, { kind: "directive", type: NgItemLabelDirective, selector: "[ngItemLabel]", inputs: ["ngItemLabel", "escape"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2758
2758
  }
2759
2759
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgSelectComponent, decorators: [{
2760
2760
  type: Component,
2761
- args: [{ selector: 'ng-select', providers: [{
2761
+ args: [{ selector: 'ng-select', providers: [
2762
+ {
2762
2763
  provide: NG_VALUE_ACCESSOR,
2763
2764
  useExisting: forwardRef(() => NgSelectComponent),
2764
- multi: true
2765
- }, NgDropdownPanelService], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n (mousedown)=\"handleMousedown($event)\"\n [class.ng-appearance-outline]=\"appearance === 'outline'\"\n [class.ng-has-value]=\"hasValue\"\n class=\"ng-select-container\">\n\n <div class=\"ng-value-container\">\n <div class=\"ng-placeholder\">{{ placeholder }}</div>\n\n @if ((!multiLabelTemplate || !multiple) && selectedItems.length > 0) {\n @for (item of selectedItems; track trackByOption($index, item)) {\n <div [class.ng-value-disabled]=\"item.disabled\" class=\"ng-value\">\n <ng-template #defaultLabelTemplate>\n <span class=\"ng-value-icon left\" (click)=\"unselect(item);\" aria-hidden=\"true\">\u00D7</span>\n <span class=\"ng-value-label\" [ngItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"labelTemplate || defaultLabelTemplate\"\n [ngTemplateOutletContext]=\"{ item: item.value, clear: clearItem, label: item.label }\">\n </ng-template>\n </div>\n }\n }\n\n @if (multiple && multiLabelTemplate && selectedValues.length > 0) {\n <ng-template\n [ngTemplateOutlet]=\"multiLabelTemplate\"\n [ngTemplateOutletContext]=\"{ items: selectedValues, clear: clearItem }\">\n </ng-template>\n }\n\n <div class=\"ng-input\"\n role=\"combobox\" \n [attr.aria-expanded]=\"isOpen\" \n [attr.aria-owns]=\"isOpen ? dropdownId : null\" \n aria-haspopup=\"listbox\">\n\n <input #searchInput\n [attr.id]=\"labelForId\"\n [attr.tabindex]=\"tabIndex\"\n [readOnly]=\"!searchable || itemsList.maxItemsSelected\"\n [disabled]=\"disabled\"\n [value]=\"searchTerm ? searchTerm : ''\"\n (input)=\"filter(searchInput.value)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd(searchInput.value)\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"$event.stopPropagation()\"\n [attr.aria-activedescendant]=\"isOpen ? itemsList?.markedItem?.htmlId : null\"\n aria-autocomplete=\"list\"\n [attr.aria-controls]=\"isOpen ? dropdownId : null\">\n </div>\n </div>\n\n @if (loading) {\n <ng-template #defaultLoadingSpinnerTemplate>\n <div class=\"ng-spinner-loader\"></div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"loadingSpinnerTemplate || defaultLoadingSpinnerTemplate\">\n </ng-template>\n }\n\n @if (showClear()) {\n <span class=\"ng-clear-wrapper\" tabindex=\"0\" title=\"{{clearAllText}}\" #clearButton>\n <span class=\"ng-clear\" aria-hidden=\"true\">\u00D7</span>\n </span>\n }\n\n <span class=\"ng-arrow-wrapper\">\n <span class=\"ng-arrow\"></span>\n </span>\n</div>\n\n@if (isOpen) {\n <ng-dropdown-panel\n class=\"ng-dropdown-panel\"\n [virtualScroll]=\"virtualScroll\"\n [bufferAmount]=\"bufferAmount\"\n [appendTo]=\"appendTo\"\n [position]=\"dropdownPosition\"\n [headerTemplate]=\"headerTemplate\"\n [footerTemplate]=\"footerTemplate\"\n [filterValue]=\"searchTerm\"\n [items]=\"itemsList.filteredItems\"\n [markedItem]=\"itemsList.markedItem\"\n (update)=\"viewPortItems = $event\"\n (scroll)=\"scroll.emit($event)\"\n (scrollToEnd)=\"scrollToEnd.emit($event)\"\n (outsideClick)=\"close()\"\n [class.ng-select-multiple]=\"multiple\"\n [ngClass]=\"appendTo ? classes : null\"\n [id]=\"dropdownId\"\n role=\"listbox\"\n aria-label=\"Options list\">\n <ng-container>\n @for (item of viewPortItems; track trackByOption($index, item)) {\n <div class=\"ng-option\" [attr.role]=\"item.children ? 'group' : 'option'\" (click)=\"toggleItem(item)\"\n (mouseover)=\"onItemHover(item)\"\n [class.ng-option-disabled]=\"item.disabled\"\n [class.ng-option-selected]=\"item.selected\"\n [class.ng-optgroup]=\"item.children\"\n [class.ng-option]=\"!item.children\"\n [class.ng-option-child]=\"!!item.parent\"\n [class.ng-option-marked]=\"item === itemsList.markedItem\"\n [attr.aria-selected]=\"item.selected\"\n [attr.id]=\"item?.htmlId\">\n <ng-template #defaultOptionTemplate>\n <span class=\"ng-option-label\" [ngItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"item.children ? (optgroupTemplate || defaultOptionTemplate) : (optionTemplate || defaultOptionTemplate)\"\n [ngTemplateOutletContext]=\"{ item: item.value, item$:item, index: item.index, searchTerm: searchTerm }\">\n </ng-template>\n </div>\n }\n @if (showAddTag) {\n <div class=\"ng-option\" [class.ng-option-marked]=\"!itemsList.markedItem\"\n (mouseover)=\"itemsList.unmarkItem()\" role=\"option\" (click)=\"selectTag()\">\n <ng-template #defaultTagTemplate>\n <span><span class=\"ng-tag-label\">{{ addTagText }}</span>\"{{ searchTerm }}\"</span>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"tagTemplate || defaultTagTemplate\"\n [ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n </ng-template>\n </div>\n }\n </ng-container>\n @if (showNoItemsFound()) {\n <ng-template #defaultNotFoundTemplate>\n <div class=\"ng-option ng-option-disabled\">{{ notFoundText }}</div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"notFoundTemplate || defaultNotFoundTemplate\"\n [ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n </ng-template>\n }\n @if (showTypeToSearch()) {\n <ng-template #defaultTypeToSearchTemplate>\n <div class=\"ng-option ng-option-disabled\">{{ typeToSearchText }}</div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"typeToSearchTemplate || defaultTypeToSearchTemplate\">\n </ng-template>\n }\n @if (loading && itemsList.filteredItems.length === 0) {\n <ng-template #defaultLoadingTextTemplate>\n <div class=\"ng-option ng-option-disabled\">{{ loadingText }}</div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"loadingTextTemplate || defaultLoadingTextTemplate\"\n [ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n </ng-template>\n }\n </ng-dropdown-panel>\n}\n", styles: ["@charset \"UTF-8\";.ng-select{position:relative;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{-webkit-user-select:none;user-select:none;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none transparent;border:0 none;box-shadow:none;outline:none;padding:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:none;user-select:none;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;transform:translateZ(0);animation:load8 .8s infinite linear}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-option-label:empty:before{content:\"\\200b\"}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}\n"] }]
2765
+ multi: true,
2766
+ },
2767
+ NgDropdownPanelService,
2768
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n\t(mousedown)=\"handleMousedown($event)\"\n\t[class.ng-appearance-outline]=\"appearance === 'outline'\"\n\t[class.ng-has-value]=\"hasValue\"\n\tclass=\"ng-select-container\">\n\t<div class=\"ng-value-container\">\n\t\t<div class=\"ng-placeholder\">{{ placeholder }}</div>\n\n\t\t@if ((!multiLabelTemplate || !multiple) && selectedItems.length > 0) {\n\t\t\t@for (item of selectedItems; track trackByOption($index, item)) {\n\t\t\t\t<div [class.ng-value-disabled]=\"item.disabled\" class=\"ng-value\">\n\t\t\t\t\t<ng-template #defaultLabelTemplate>\n\t\t\t\t\t\t<span class=\"ng-value-icon left\" (click)=\"unselect(item)\" aria-hidden=\"true\">\u00D7</span>\n\t\t\t\t\t\t<span class=\"ng-value-label\" [ngItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"labelTemplate || defaultLabelTemplate\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ item: item.value, clear: clearItem, label: item.label }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t}\n\n\t\t@if (multiple && multiLabelTemplate && selectedValues.length > 0) {\n\t\t\t<ng-template [ngTemplateOutlet]=\"multiLabelTemplate\" [ngTemplateOutletContext]=\"{ items: selectedValues, clear: clearItem }\">\n\t\t\t</ng-template>\n\t\t}\n\n\t\t<div\n\t\t\tclass=\"ng-input\"\n\t\t\trole=\"combobox\"\n\t\t\t[attr.aria-expanded]=\"isOpen\"\n\t\t\t[attr.aria-owns]=\"isOpen ? dropdownId : null\"\n\t\t\taria-haspopup=\"listbox\">\n\t\t\t<input\n\t\t\t\t#searchInput\n\t\t\t\t[attr.id]=\"labelForId\"\n\t\t\t\t[attr.tabindex]=\"tabIndex\"\n\t\t\t\t[readOnly]=\"!searchable || itemsList.maxItemsSelected\"\n\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t[value]=\"searchTerm ? searchTerm : ''\"\n\t\t\t\t(input)=\"filter(searchInput.value)\"\n\t\t\t\t(compositionstart)=\"onCompositionStart()\"\n\t\t\t\t(compositionend)=\"onCompositionEnd(searchInput.value)\"\n\t\t\t\t(focus)=\"onInputFocus($event)\"\n\t\t\t\t(blur)=\"onInputBlur($event)\"\n\t\t\t\t(change)=\"$event.stopPropagation()\"\n\t\t\t\t[attr.aria-activedescendant]=\"isOpen ? itemsList?.markedItem?.htmlId : null\"\n\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t[attr.aria-controls]=\"isOpen ? dropdownId : null\" />\n\t\t</div>\n\t</div>\n\n\t@if (loading) {\n\t\t<ng-template #defaultLoadingSpinnerTemplate>\n\t\t\t<div class=\"ng-spinner-loader\"></div>\n\t\t</ng-template>\n\t\t<ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate || defaultLoadingSpinnerTemplate\"> </ng-template>\n\t}\n\n\t@if (showClear()) {\n\t\t<span class=\"ng-clear-wrapper\" tabindex=\"0\" title=\"{{ clearAllText }}\" #clearButton>\n\t\t\t<span class=\"ng-clear\" aria-hidden=\"true\">\u00D7</span>\n\t\t</span>\n\t}\n\n\t<span class=\"ng-arrow-wrapper\">\n\t\t<span class=\"ng-arrow\"></span>\n\t</span>\n</div>\n\n@if (isOpen) {\n\t<ng-dropdown-panel\n\t\t[class]=\"dropdownPanelStaticClasses\"\n\t\t[virtualScroll]=\"virtualScroll\"\n\t\t[bufferAmount]=\"bufferAmount\"\n\t\t[appendTo]=\"appendTo\"\n\t\t[position]=\"dropdownPosition\"\n\t\t[headerTemplate]=\"headerTemplate\"\n\t\t[footerTemplate]=\"footerTemplate\"\n\t\t[filterValue]=\"searchTerm\"\n\t\t[items]=\"itemsList.filteredItems\"\n\t\t[markedItem]=\"itemsList.markedItem\"\n\t\t(update)=\"viewPortItems = $event\"\n\t\t(scroll)=\"scroll.emit($event)\"\n\t\t(scrollToEnd)=\"scrollToEnd.emit($event)\"\n\t\t(outsideClick)=\"close()\"\n\t\t[class.ng-select-multiple]=\"multiple\"\n\t\t[ngClass]=\"appendTo ? ngClass : null\"\n\t\t[id]=\"dropdownId\"\n\t\trole=\"listbox\"\n\t\taria-label=\"Options list\">\n\t\t<ng-container>\n\t\t\t@for (item of viewPortItems; track trackByOption($index, item)) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ng-option\"\n\t\t\t\t\t[attr.role]=\"item.children ? 'group' : 'option'\"\n\t\t\t\t\t(click)=\"toggleItem(item)\"\n\t\t\t\t\t(mouseover)=\"onItemHover(item)\"\n\t\t\t\t\t[class.ng-option-disabled]=\"item.disabled\"\n\t\t\t\t\t[class.ng-option-selected]=\"item.selected\"\n\t\t\t\t\t[class.ng-optgroup]=\"item.children\"\n\t\t\t\t\t[class.ng-option]=\"!item.children\"\n\t\t\t\t\t[class.ng-option-child]=\"!!item.parent\"\n\t\t\t\t\t[class.ng-option-marked]=\"item === itemsList.markedItem\"\n\t\t\t\t\t[attr.aria-selected]=\"item.selected\"\n\t\t\t\t\t[attr.id]=\"item?.htmlId\">\n\t\t\t\t\t<ng-template #defaultOptionTemplate>\n\t\t\t\t\t\t<span class=\"ng-option-label\" [ngItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\t\t\titem.children ? optgroupTemplate || defaultOptionTemplate : optionTemplate || defaultOptionTemplate\n\t\t\t\t\t\t\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ item: item.value, item$: item, index: item.index, searchTerm: searchTerm }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t@if (showAddTag) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ng-option\"\n\t\t\t\t\t[class.ng-option-marked]=\"!itemsList.markedItem\"\n\t\t\t\t\t(mouseover)=\"itemsList.unmarkItem()\"\n\t\t\t\t\trole=\"option\"\n\t\t\t\t\t(click)=\"selectTag()\">\n\t\t\t\t\t<ng-template #defaultTagTemplate>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t><span class=\"ng-tag-label\">{{ addTagText }}</span\n\t\t\t\t\t\t\t>\"{{ searchTerm }}\"</span\n\t\t\t\t\t\t>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"tagTemplate || defaultTagTemplate\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</ng-container>\n\t\t@if (showNoItemsFound()) {\n\t\t\t<ng-template #defaultNotFoundTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ notFoundText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"notFoundTemplate || defaultNotFoundTemplate\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t</ng-template>\n\t\t}\n\t\t@if (showTypeToSearch()) {\n\t\t\t<ng-template #defaultTypeToSearchTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ typeToSearchText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template [ngTemplateOutlet]=\"typeToSearchTemplate || defaultTypeToSearchTemplate\"> </ng-template>\n\t\t}\n\t\t@if (loading && itemsList.filteredItems.length === 0) {\n\t\t\t<ng-template #defaultLoadingTextTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ loadingText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"loadingTextTemplate || defaultLoadingTextTemplate\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t</ng-template>\n\t\t}\n\t</ng-dropdown-panel>\n}\n", styles: ["@charset \"UTF-8\";.ng-select{position:relative;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{-webkit-user-select:none;user-select:none;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none transparent;border:0 none;box-shadow:none;outline:none;padding:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:none;user-select:none;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;transform:translateZ(0);animation:load8 .8s infinite linear}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-option-label:empty:before{content:\"\\200b\"}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}\n"] }]
2766
2769
  }], ctorParameters: () => [{ type: undefined, decorators: [{
2767
2770
  type: Attribute,
2768
2771
  args: ['class']
@@ -2859,6 +2862,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
2859
2862
  args: [{ transform: booleanAttribute }]
2860
2863
  }], keyDownFn: [{
2861
2864
  type: Input
2865
+ }], ngClass: [{
2866
+ type: Input
2862
2867
  }], typeahead: [{
2863
2868
  type: Input
2864
2869
  }, {
@@ -3013,30 +3018,30 @@ class DefaultSelectionModel {
3013
3018
  if (multiple) {
3014
3019
  if (item.parent) {
3015
3020
  const childrenCount = item.parent.children.length;
3016
- const selectedCount = item.parent.children.filter(x => x.selected).length;
3021
+ const selectedCount = item.parent.children.filter((x) => x.selected).length;
3017
3022
  item.parent.selected = childrenCount === selectedCount;
3018
3023
  }
3019
3024
  else if (item.children) {
3020
3025
  this._setChildrenSelectedState(item.children, true);
3021
3026
  this._removeChildren(item);
3022
3027
  if (groupAsModel && this._activeChildren(item)) {
3023
- this._selected = [...this._selected.filter(x => x.parent !== item), item];
3028
+ this._selected = [...this._selected.filter((x) => x.parent !== item), item];
3024
3029
  }
3025
3030
  else {
3026
- this._selected = [...this._selected, ...item.children.filter(x => !x.disabled)];
3031
+ this._selected = [...this._selected, ...item.children.filter((x) => !x.disabled)];
3027
3032
  }
3028
3033
  }
3029
3034
  }
3030
3035
  }
3031
3036
  unselect(item, multiple) {
3032
- this._selected = this._selected.filter(x => x !== item);
3037
+ this._selected = this._selected.filter((x) => x !== item);
3033
3038
  item.selected = false;
3034
3039
  if (multiple) {
3035
3040
  if (item.parent && item.parent.selected) {
3036
3041
  const children = item.parent.children;
3037
3042
  this._removeParent(item.parent);
3038
3043
  this._removeChildren(item.parent);
3039
- this._selected.push(...children.filter(x => x !== item && !x.disabled));
3044
+ this._selected.push(...children.filter((x) => x !== item && !x.disabled));
3040
3045
  item.parent.selected = false;
3041
3046
  }
3042
3047
  else if (item.children) {
@@ -3046,7 +3051,7 @@ class DefaultSelectionModel {
3046
3051
  }
3047
3052
  }
3048
3053
  clear(keepDisabled) {
3049
- this._selected = keepDisabled ? this._selected.filter(x => x.disabled) : [];
3054
+ this._selected = keepDisabled ? this._selected.filter((x) => x.disabled) : [];
3050
3055
  }
3051
3056
  _setChildrenSelectedState(children, selected) {
3052
3057
  for (const child of children) {
@@ -3058,15 +3063,15 @@ class DefaultSelectionModel {
3058
3063
  }
3059
3064
  _removeChildren(parent) {
3060
3065
  this._selected = [
3061
- ...this._selected.filter(x => x.parent !== parent),
3062
- ...parent.children.filter(x => x.parent === parent && x.disabled && x.selected)
3066
+ ...this._selected.filter((x) => x.parent !== parent),
3067
+ ...parent.children.filter((x) => x.parent === parent && x.disabled && x.selected),
3063
3068
  ];
3064
3069
  }
3065
3070
  _removeParent(parent) {
3066
- this._selected = this._selected.filter(x => x !== parent);
3071
+ this._selected = this._selected.filter((x) => x !== parent);
3067
3072
  }
3068
3073
  _activeChildren(item) {
3069
- return item.children.every(x => !x.disabled || x.selected);
3074
+ return item.children.every((x) => !x.disabled || x.selected);
3070
3075
  }
3071
3076
  }
3072
3077
 
@@ -3099,9 +3104,7 @@ class NgSelectModule {
3099
3104
  NgLoadingTextTemplateDirective,
3100
3105
  NgTagTemplateDirective,
3101
3106
  NgLoadingSpinnerTemplateDirective] }); }
3102
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgSelectModule, providers: [
3103
- { provide: SELECTION_MODEL_FACTORY, useValue: DefaultSelectionModelFactory }
3104
- ], imports: [CommonModule] }); }
3107
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgSelectModule, providers: [{ provide: SELECTION_MODEL_FACTORY, useValue: DefaultSelectionModelFactory }], imports: [CommonModule] }); }
3105
3108
  }
3106
3109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgSelectModule, decorators: [{
3107
3110
  type: NgModule,
@@ -3121,11 +3124,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
3121
3124
  NgLoadingTextTemplateDirective,
3122
3125
  NgTagTemplateDirective,
3123
3126
  NgLoadingSpinnerTemplateDirective,
3124
- NgItemLabelDirective
3125
- ],
3126
- imports: [
3127
- CommonModule
3127
+ NgItemLabelDirective,
3128
3128
  ],
3129
+ imports: [CommonModule],
3129
3130
  exports: [
3130
3131
  NgSelectComponent,
3131
3132
  NgOptionComponent,
@@ -3139,11 +3140,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
3139
3140
  NgTypeToSearchTemplateDirective,
3140
3141
  NgLoadingTextTemplateDirective,
3141
3142
  NgTagTemplateDirective,
3142
- NgLoadingSpinnerTemplateDirective
3143
+ NgLoadingSpinnerTemplateDirective,
3143
3144
  ],
3144
- providers: [
3145
- { provide: SELECTION_MODEL_FACTORY, useValue: DefaultSelectionModelFactory }
3146
- ]
3145
+ providers: [{ provide: SELECTION_MODEL_FACTORY, useValue: DefaultSelectionModelFactory }],
3147
3146
  }]
3148
3147
  }] });
3149
3148