@ng-select/ng-select 13.3.0 → 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.
- package/esm2022/lib/config.service.mjs +1 -1
- package/esm2022/lib/console.service.mjs +1 -1
- package/esm2022/lib/id.mjs +2 -2
- package/esm2022/lib/items-list.mjs +31 -31
- package/esm2022/lib/ng-dropdown-panel.component.mjs +41 -42
- package/esm2022/lib/ng-dropdown-panel.service.mjs +6 -6
- package/esm2022/lib/ng-option.component.mjs +5 -5
- package/esm2022/lib/ng-select.component.mjs +61 -59
- package/esm2022/lib/ng-select.module.mjs +7 -13
- package/esm2022/lib/ng-select.types.mjs +1 -1
- package/esm2022/lib/ng-templates.directive.mjs +2 -4
- package/esm2022/lib/search-helper.mjs +2 -2
- package/esm2022/lib/selection-model.mjs +11 -11
- package/esm2022/lib/value-utils.mjs +3 -5
- package/esm2022/public-api.mjs +2 -2
- package/fesm2022/ng-select-ng-select.mjs +155 -164
- package/fesm2022/ng-select-ng-select.mjs.map +1 -1
- package/lib/ng-select.component.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/scss/_mixins.scss +3 -3
- package/scss/ant.design.theme.scss +333 -333
- package/scss/default.theme.scss +355 -351
- package/scss/material.theme.scss +353 -338
- package/scss/ng-select.component.scss +293 -293
- package/themes/ant.design.theme.css +1 -1
- package/themes/default.theme.css +1 -1
- package/themes/material.theme.css +1 -1
|
@@ -13,12 +13,10 @@ const htmlEscapes = {
|
|
|
13
13
|
'<': '<',
|
|
14
14
|
'>': '>',
|
|
15
15
|
'"': '"',
|
|
16
|
-
'
|
|
16
|
+
"'": ''',
|
|
17
17
|
};
|
|
18
18
|
function escapeHTML(value) {
|
|
19
|
-
return
|
|
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) =>
|
|
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
|
|
1292
|
+
return this._markedIndex >= this._filteredItems.length - 1 ? 0 : this._markedIndex + 1;
|
|
1298
1293
|
}
|
|
1299
|
-
return
|
|
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
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
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) -
|
|
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 }))
|
|
1613
|
-
.
|
|
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
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
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
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
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() {
|
|
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
|
-
|
|
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,22 +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
1997
|
get dropdownPanelStaticClasses() {
|
|
2005
|
-
return this.appendTo && this.classes
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
get single() {
|
|
2014
|
-
|
|
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
|
+
}
|
|
2015
2009
|
get _editableSearchTerm() {
|
|
2016
2010
|
return this.editableSearchTerm && !this.multiple;
|
|
2017
2011
|
}
|
|
@@ -2072,7 +2066,7 @@ class NgSelectComponent {
|
|
|
2072
2066
|
this._onChange = (_) => { };
|
|
2073
2067
|
this._onTouched = () => { };
|
|
2074
2068
|
this.clearItem = (item) => {
|
|
2075
|
-
const option = this.selectedItems.find(x => x.value === item);
|
|
2069
|
+
const option = this.selectedItems.find((x) => x.value === item);
|
|
2076
2070
|
this.unselect(option);
|
|
2077
2071
|
};
|
|
2078
2072
|
this.trackByOption = (_, item) => {
|
|
@@ -2089,7 +2083,7 @@ class NgSelectComponent {
|
|
|
2089
2083
|
return this.itemsList.selectedItems;
|
|
2090
2084
|
}
|
|
2091
2085
|
get selectedValues() {
|
|
2092
|
-
return this.selectedItems.map(x => x.value);
|
|
2086
|
+
return this.selectedItems.map((x) => x.value);
|
|
2093
2087
|
}
|
|
2094
2088
|
get hasValue() {
|
|
2095
2089
|
return this.selectedItems.length > 0;
|
|
@@ -2342,9 +2336,9 @@ class NgSelectComponent {
|
|
|
2342
2336
|
else {
|
|
2343
2337
|
tag = this._primitive ? this.searchTerm : { [this.bindLabel]: this.searchTerm };
|
|
2344
2338
|
}
|
|
2345
|
-
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));
|
|
2346
2340
|
if (isPromise(tag)) {
|
|
2347
|
-
tag.then(item => this.select(handleTag(item))).catch(() => { });
|
|
2341
|
+
tag.then((item) => this.select(handleTag(item))).catch(() => { });
|
|
2348
2342
|
}
|
|
2349
2343
|
else if (tag) {
|
|
2350
2344
|
this.select(handleTag(tag));
|
|
@@ -2364,16 +2358,15 @@ class NgSelectComponent {
|
|
|
2364
2358
|
return false;
|
|
2365
2359
|
}
|
|
2366
2360
|
const term = this.searchTerm.toLowerCase().trim();
|
|
2367
|
-
return this.addTag &&
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
!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);
|
|
2371
2365
|
}
|
|
2372
2366
|
showNoItemsFound() {
|
|
2373
2367
|
const empty = this.itemsList.filteredItems.length === 0;
|
|
2374
|
-
return ((empty && !this._isTypeahead && !this.loading) ||
|
|
2375
|
-
|
|
2376
|
-
!this.showAddTag;
|
|
2368
|
+
return (((empty && !this._isTypeahead && !this.loading) || (empty && this._isTypeahead && this._validTerm && !this.loading)) &&
|
|
2369
|
+
!this.showAddTag);
|
|
2377
2370
|
}
|
|
2378
2371
|
showTypeToSearch() {
|
|
2379
2372
|
const empty = this.itemsList.filteredItems.length === 0;
|
|
@@ -2403,7 +2396,7 @@ class NgSelectComponent {
|
|
|
2403
2396
|
this.itemsList.markSelectedOrDefault(this.markFirst);
|
|
2404
2397
|
}
|
|
2405
2398
|
}
|
|
2406
|
-
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) });
|
|
2407
2400
|
this.open();
|
|
2408
2401
|
}
|
|
2409
2402
|
onInputFocus($event) {
|
|
@@ -2460,10 +2453,10 @@ class NgSelectComponent {
|
|
|
2460
2453
|
}
|
|
2461
2454
|
_setItemsFromNgOptions() {
|
|
2462
2455
|
const mapNgOptions = (options) => {
|
|
2463
|
-
this.items = options.map(option => ({
|
|
2456
|
+
this.items = options.map((option) => ({
|
|
2464
2457
|
$ngOptionValue: option.value,
|
|
2465
2458
|
$ngOptionLabel: option.elementRef.nativeElement.innerHTML,
|
|
2466
|
-
disabled: option.disabled
|
|
2459
|
+
disabled: option.disabled,
|
|
2467
2460
|
}));
|
|
2468
2461
|
this.itemsList.setItems(this.items);
|
|
2469
2462
|
if (this.hasValue) {
|
|
@@ -2473,25 +2466,23 @@ class NgSelectComponent {
|
|
|
2473
2466
|
};
|
|
2474
2467
|
const handleOptionChange = () => {
|
|
2475
2468
|
const changedOrDestroyed = merge(this.ngOptions.changes, this._destroy$);
|
|
2476
|
-
merge(...this.ngOptions.map(option => option.stateChange$))
|
|
2469
|
+
merge(...this.ngOptions.map((option) => option.stateChange$))
|
|
2477
2470
|
.pipe(takeUntil(changedOrDestroyed))
|
|
2478
|
-
.subscribe(option => {
|
|
2471
|
+
.subscribe((option) => {
|
|
2479
2472
|
const item = this.itemsList.findItem(option.value);
|
|
2480
2473
|
item.disabled = option.disabled;
|
|
2481
2474
|
item.label = option.label || item.label;
|
|
2482
2475
|
this._cd.detectChanges();
|
|
2483
2476
|
});
|
|
2484
2477
|
};
|
|
2485
|
-
this.ngOptions.changes
|
|
2486
|
-
.pipe(startWith(this.ngOptions), takeUntil(this._destroy$))
|
|
2487
|
-
.subscribe(options => {
|
|
2478
|
+
this.ngOptions.changes.pipe(startWith(this.ngOptions), takeUntil(this._destroy$)).subscribe((options) => {
|
|
2488
2479
|
this.bindLabel = this._defaultLabel;
|
|
2489
2480
|
mapNgOptions(options);
|
|
2490
2481
|
handleOptionChange();
|
|
2491
2482
|
});
|
|
2492
2483
|
}
|
|
2493
2484
|
_isValidWriteValue(value) {
|
|
2494
|
-
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)) {
|
|
2495
2486
|
return false;
|
|
2496
2487
|
}
|
|
2497
2488
|
const validateBinding = (item) => {
|
|
@@ -2506,7 +2497,7 @@ class NgSelectComponent {
|
|
|
2506
2497
|
this._console.warn('Multiple select ngModel should be array.');
|
|
2507
2498
|
return false;
|
|
2508
2499
|
}
|
|
2509
|
-
return value.every(item => validateBinding(item));
|
|
2500
|
+
return value.every((item) => validateBinding(item));
|
|
2510
2501
|
}
|
|
2511
2502
|
else {
|
|
2512
2503
|
return validateBinding(value);
|
|
@@ -2524,20 +2515,20 @@ class NgSelectComponent {
|
|
|
2524
2515
|
else {
|
|
2525
2516
|
const isValObject = isObject(val);
|
|
2526
2517
|
const isPrimitive = !isValObject && !this.bindValue;
|
|
2527
|
-
if (
|
|
2518
|
+
if (isValObject || isPrimitive) {
|
|
2528
2519
|
this.itemsList.select(this.itemsList.mapItem(val, null));
|
|
2529
2520
|
}
|
|
2530
2521
|
else if (this.bindValue) {
|
|
2531
2522
|
item = {
|
|
2532
2523
|
[this.bindLabel]: null,
|
|
2533
|
-
[this.bindValue]: val
|
|
2524
|
+
[this.bindValue]: val,
|
|
2534
2525
|
};
|
|
2535
2526
|
this.itemsList.select(this.itemsList.mapItem(item, null));
|
|
2536
2527
|
}
|
|
2537
2528
|
}
|
|
2538
2529
|
};
|
|
2539
2530
|
if (this.multiple) {
|
|
2540
|
-
ngModel.forEach(item => select(item));
|
|
2531
|
+
ngModel.forEach((item) => select(item));
|
|
2541
2532
|
}
|
|
2542
2533
|
else {
|
|
2543
2534
|
select(ngModel);
|
|
@@ -2548,8 +2539,8 @@ class NgSelectComponent {
|
|
|
2548
2539
|
return;
|
|
2549
2540
|
}
|
|
2550
2541
|
this._keyPress$
|
|
2551
|
-
.pipe(takeUntil(this._destroy$), tap(letter => this._pressedKeys.push(letter)), debounceTime(200), filter(() => this._pressedKeys.length > 0), map(() => this._pressedKeys.join('')))
|
|
2552
|
-
.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) => {
|
|
2553
2544
|
const item = this.itemsList.findByLabel(term);
|
|
2554
2545
|
if (item) {
|
|
2555
2546
|
if (this.isOpen) {
|
|
@@ -2571,7 +2562,7 @@ class NgSelectComponent {
|
|
|
2571
2562
|
autocorrect: 'off',
|
|
2572
2563
|
autocapitalize: 'off',
|
|
2573
2564
|
autocomplete: this.labelForId ? 'off' : this.dropdownId,
|
|
2574
|
-
...this.inputAttrs
|
|
2565
|
+
...this.inputAttrs,
|
|
2575
2566
|
};
|
|
2576
2567
|
for (const key of Object.keys(attributes)) {
|
|
2577
2568
|
input.setAttribute(key, attributes[key]);
|
|
@@ -2595,7 +2586,7 @@ class NgSelectComponent {
|
|
|
2595
2586
|
model.push(item.value);
|
|
2596
2587
|
}
|
|
2597
2588
|
}
|
|
2598
|
-
const selected = this.selectedItems.map(x => x.value);
|
|
2589
|
+
const selected = this.selectedItems.map((x) => x.value);
|
|
2599
2590
|
if (this.multiple) {
|
|
2600
2591
|
this._onChange(model);
|
|
2601
2592
|
this.changeEvent.emit(selected);
|
|
@@ -2717,9 +2708,7 @@ class NgSelectComponent {
|
|
|
2717
2708
|
}
|
|
2718
2709
|
_nextItemIsTag(nextStep) {
|
|
2719
2710
|
const nextIndex = this.itemsList.markedIndex + nextStep;
|
|
2720
|
-
return this.addTag && this.searchTerm
|
|
2721
|
-
&& this.itemsList.markedItem
|
|
2722
|
-
&& (nextIndex < 0 || nextIndex === this.itemsList.filteredItems.length);
|
|
2711
|
+
return (this.addTag && this.searchTerm && this.itemsList.markedItem && (nextIndex < 0 || nextIndex === this.itemsList.filteredItems.length));
|
|
2723
2712
|
}
|
|
2724
2713
|
_handleBackspace() {
|
|
2725
2714
|
if (this.searchTerm || !this.clearable || !this.clearOnBackspace || !this.hasValue) {
|
|
@@ -2748,7 +2737,9 @@ class NgSelectComponent {
|
|
|
2748
2737
|
this.clearAllText = this.clearAllText || config.clearAllText;
|
|
2749
2738
|
this.virtualScroll = isDefined(this.virtualScroll)
|
|
2750
2739
|
? this.virtualScroll
|
|
2751
|
-
: isDefined(config.disableVirtualScroll)
|
|
2740
|
+
: isDefined(config.disableVirtualScroll)
|
|
2741
|
+
? !config.disableVirtualScroll
|
|
2742
|
+
: false;
|
|
2752
2743
|
this.openOnEnter = isDefined(this.openOnEnter) ? this.openOnEnter : config.openOnEnter;
|
|
2753
2744
|
this.appendTo = this.appendTo || config.appendTo;
|
|
2754
2745
|
this.bindValue = this.bindValue || config.bindValue;
|
|
@@ -2756,19 +2747,25 @@ class NgSelectComponent {
|
|
|
2756
2747
|
this.appearance = this.appearance || config.appearance;
|
|
2757
2748
|
}
|
|
2758
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 }); }
|
|
2759
|
-
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: [
|
|
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
|
+
{
|
|
2760
2752
|
provide: NG_VALUE_ACCESSOR,
|
|
2761
2753
|
useExisting: forwardRef(() => NgSelectComponent),
|
|
2762
|
-
multi: true
|
|
2763
|
-
}, 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]=\"dropdownPanelStaticClasses\"\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 ? ngClass : 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 }); }
|
|
2764
2758
|
}
|
|
2765
2759
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgSelectComponent, decorators: [{
|
|
2766
2760
|
type: Component,
|
|
2767
|
-
args: [{ selector: 'ng-select', providers: [
|
|
2761
|
+
args: [{ selector: 'ng-select', providers: [
|
|
2762
|
+
{
|
|
2768
2763
|
provide: NG_VALUE_ACCESSOR,
|
|
2769
2764
|
useExisting: forwardRef(() => NgSelectComponent),
|
|
2770
|
-
multi: true
|
|
2771
|
-
}, 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]=\"dropdownPanelStaticClasses\"\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 ? ngClass : 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"] }]
|
|
2772
2769
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2773
2770
|
type: Attribute,
|
|
2774
2771
|
args: ['class']
|
|
@@ -3021,30 +3018,30 @@ class DefaultSelectionModel {
|
|
|
3021
3018
|
if (multiple) {
|
|
3022
3019
|
if (item.parent) {
|
|
3023
3020
|
const childrenCount = item.parent.children.length;
|
|
3024
|
-
const selectedCount = item.parent.children.filter(x => x.selected).length;
|
|
3021
|
+
const selectedCount = item.parent.children.filter((x) => x.selected).length;
|
|
3025
3022
|
item.parent.selected = childrenCount === selectedCount;
|
|
3026
3023
|
}
|
|
3027
3024
|
else if (item.children) {
|
|
3028
3025
|
this._setChildrenSelectedState(item.children, true);
|
|
3029
3026
|
this._removeChildren(item);
|
|
3030
3027
|
if (groupAsModel && this._activeChildren(item)) {
|
|
3031
|
-
this._selected = [...this._selected.filter(x => x.parent !== item), item];
|
|
3028
|
+
this._selected = [...this._selected.filter((x) => x.parent !== item), item];
|
|
3032
3029
|
}
|
|
3033
3030
|
else {
|
|
3034
|
-
this._selected = [...this._selected, ...item.children.filter(x => !x.disabled)];
|
|
3031
|
+
this._selected = [...this._selected, ...item.children.filter((x) => !x.disabled)];
|
|
3035
3032
|
}
|
|
3036
3033
|
}
|
|
3037
3034
|
}
|
|
3038
3035
|
}
|
|
3039
3036
|
unselect(item, multiple) {
|
|
3040
|
-
this._selected = this._selected.filter(x => x !== item);
|
|
3037
|
+
this._selected = this._selected.filter((x) => x !== item);
|
|
3041
3038
|
item.selected = false;
|
|
3042
3039
|
if (multiple) {
|
|
3043
3040
|
if (item.parent && item.parent.selected) {
|
|
3044
3041
|
const children = item.parent.children;
|
|
3045
3042
|
this._removeParent(item.parent);
|
|
3046
3043
|
this._removeChildren(item.parent);
|
|
3047
|
-
this._selected.push(...children.filter(x => x !== item && !x.disabled));
|
|
3044
|
+
this._selected.push(...children.filter((x) => x !== item && !x.disabled));
|
|
3048
3045
|
item.parent.selected = false;
|
|
3049
3046
|
}
|
|
3050
3047
|
else if (item.children) {
|
|
@@ -3054,7 +3051,7 @@ class DefaultSelectionModel {
|
|
|
3054
3051
|
}
|
|
3055
3052
|
}
|
|
3056
3053
|
clear(keepDisabled) {
|
|
3057
|
-
this._selected = keepDisabled ? this._selected.filter(x => x.disabled) : [];
|
|
3054
|
+
this._selected = keepDisabled ? this._selected.filter((x) => x.disabled) : [];
|
|
3058
3055
|
}
|
|
3059
3056
|
_setChildrenSelectedState(children, selected) {
|
|
3060
3057
|
for (const child of children) {
|
|
@@ -3066,15 +3063,15 @@ class DefaultSelectionModel {
|
|
|
3066
3063
|
}
|
|
3067
3064
|
_removeChildren(parent) {
|
|
3068
3065
|
this._selected = [
|
|
3069
|
-
...this._selected.filter(x => x.parent !== parent),
|
|
3070
|
-
...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),
|
|
3071
3068
|
];
|
|
3072
3069
|
}
|
|
3073
3070
|
_removeParent(parent) {
|
|
3074
|
-
this._selected = this._selected.filter(x => x !== parent);
|
|
3071
|
+
this._selected = this._selected.filter((x) => x !== parent);
|
|
3075
3072
|
}
|
|
3076
3073
|
_activeChildren(item) {
|
|
3077
|
-
return item.children.every(x => !x.disabled || x.selected);
|
|
3074
|
+
return item.children.every((x) => !x.disabled || x.selected);
|
|
3078
3075
|
}
|
|
3079
3076
|
}
|
|
3080
3077
|
|
|
@@ -3107,9 +3104,7 @@ class NgSelectModule {
|
|
|
3107
3104
|
NgLoadingTextTemplateDirective,
|
|
3108
3105
|
NgTagTemplateDirective,
|
|
3109
3106
|
NgLoadingSpinnerTemplateDirective] }); }
|
|
3110
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgSelectModule, providers: [
|
|
3111
|
-
{ provide: SELECTION_MODEL_FACTORY, useValue: DefaultSelectionModelFactory }
|
|
3112
|
-
], 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] }); }
|
|
3113
3108
|
}
|
|
3114
3109
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgSelectModule, decorators: [{
|
|
3115
3110
|
type: NgModule,
|
|
@@ -3129,11 +3124,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
3129
3124
|
NgLoadingTextTemplateDirective,
|
|
3130
3125
|
NgTagTemplateDirective,
|
|
3131
3126
|
NgLoadingSpinnerTemplateDirective,
|
|
3132
|
-
NgItemLabelDirective
|
|
3133
|
-
],
|
|
3134
|
-
imports: [
|
|
3135
|
-
CommonModule
|
|
3127
|
+
NgItemLabelDirective,
|
|
3136
3128
|
],
|
|
3129
|
+
imports: [CommonModule],
|
|
3137
3130
|
exports: [
|
|
3138
3131
|
NgSelectComponent,
|
|
3139
3132
|
NgOptionComponent,
|
|
@@ -3147,11 +3140,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
3147
3140
|
NgTypeToSearchTemplateDirective,
|
|
3148
3141
|
NgLoadingTextTemplateDirective,
|
|
3149
3142
|
NgTagTemplateDirective,
|
|
3150
|
-
NgLoadingSpinnerTemplateDirective
|
|
3143
|
+
NgLoadingSpinnerTemplateDirective,
|
|
3151
3144
|
],
|
|
3152
|
-
providers: [
|
|
3153
|
-
{ provide: SELECTION_MODEL_FACTORY, useValue: DefaultSelectionModelFactory }
|
|
3154
|
-
]
|
|
3145
|
+
providers: [{ provide: SELECTION_MODEL_FACTORY, useValue: DefaultSelectionModelFactory }],
|
|
3155
3146
|
}]
|
|
3156
3147
|
}] });
|
|
3157
3148
|
|