@progress/kendo-angular-dropdowns 5.5.0 → 6.0.0-dev.202201171002

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.
Files changed (75) hide show
  1. package/LICENSE.md +1 -1
  2. package/NOTICE.txt +119 -79
  3. package/README.md +1 -1
  4. package/dist/cdn/js/kendo-angular-dropdowns.js +2 -2
  5. package/dist/cdn/main.js +1 -1
  6. package/dist/es/autocomplete/autocomplete.component.js +120 -5
  7. package/dist/es/comboboxes/combobox.component.js +141 -20
  8. package/dist/es/comboboxes/multicolumncombobox.component.js +30 -10
  9. package/dist/es/common/list.component.js +97 -5
  10. package/dist/es/common/models/fillmode.js +4 -0
  11. package/dist/es/common/models/list-type.js +4 -0
  12. package/dist/es/common/models/rounded.js +4 -0
  13. package/dist/es/common/models/size.js +4 -0
  14. package/dist/es/common/searchbar.component.js +1 -1
  15. package/dist/es/common/selection/selectable.directive.js +2 -2
  16. package/dist/es/common/taglist.component.js +58 -5
  17. package/dist/es/common/util.js +37 -0
  18. package/dist/es/dropdownlist/dropdownlist.component.js +338 -46
  19. package/dist/es/dropdowntrees/dropdowntree.component.js +276 -42
  20. package/dist/es/dropdowntrees/multiselecttree.component.js +307 -46
  21. package/dist/es/multiselect/multiselect.component.js +162 -35
  22. package/dist/es/package-metadata.js +1 -1
  23. package/dist/es2015/autocomplete/autocomplete.component.d.ts +42 -0
  24. package/dist/es2015/autocomplete/autocomplete.component.js +109 -7
  25. package/dist/es2015/comboboxes/combobox.component.d.ts +49 -4
  26. package/dist/es2015/comboboxes/combobox.component.js +207 -106
  27. package/dist/es2015/comboboxes/multicolumncombobox.component.d.ts +9 -1
  28. package/dist/es2015/comboboxes/multicolumncombobox.component.js +185 -166
  29. package/dist/es2015/common/list.component.d.ts +26 -1
  30. package/dist/es2015/common/list.component.js +129 -37
  31. package/dist/es2015/common/models/fillmode.d.ts +14 -0
  32. package/dist/es2015/common/models/fillmode.js +4 -0
  33. package/dist/es2015/common/models/list-type.d.ts +8 -0
  34. package/dist/es2015/common/models/list-type.js +4 -0
  35. package/dist/es2015/common/models/rounded.d.ts +15 -0
  36. package/dist/es2015/common/models/rounded.js +4 -0
  37. package/dist/es2015/common/models/size.d.ts +14 -0
  38. package/dist/es2015/common/models/size.js +4 -0
  39. package/dist/es2015/common/searchbar.component.js +1 -1
  40. package/dist/es2015/common/selection/selectable.directive.js +2 -2
  41. package/dist/es2015/common/taglist.component.d.ts +13 -1
  42. package/dist/es2015/common/taglist.component.js +102 -47
  43. package/dist/es2015/common/util.d.ts +17 -0
  44. package/dist/es2015/common/util.js +37 -0
  45. package/dist/es2015/dropdownlist/dropdownlist.component.d.ts +77 -13
  46. package/dist/es2015/dropdownlist/dropdownlist.component.js +390 -159
  47. package/dist/es2015/dropdowntrees/dropdowntree.component.d.ts +71 -13
  48. package/dist/es2015/dropdowntrees/dropdowntree.component.js +287 -99
  49. package/dist/es2015/dropdowntrees/multiselecttree.component.d.ts +72 -12
  50. package/dist/es2015/dropdowntrees/multiselecttree.component.js +319 -117
  51. package/dist/es2015/index.metadata.json +1 -1
  52. package/dist/es2015/multiselect/multiselect.component.d.ts +53 -8
  53. package/dist/es2015/multiselect/multiselect.component.js +183 -70
  54. package/dist/es2015/package-metadata.js +1 -1
  55. package/dist/fesm2015/index.js +1974 -834
  56. package/dist/fesm5/index.js +1577 -225
  57. package/dist/npm/autocomplete/autocomplete.component.js +119 -4
  58. package/dist/npm/comboboxes/combobox.component.js +140 -19
  59. package/dist/npm/comboboxes/multicolumncombobox.component.js +29 -9
  60. package/dist/npm/common/list.component.js +96 -4
  61. package/dist/npm/common/models/fillmode.js +6 -0
  62. package/dist/npm/common/models/list-type.js +6 -0
  63. package/dist/npm/common/models/rounded.js +6 -0
  64. package/dist/npm/common/models/size.js +6 -0
  65. package/dist/npm/common/searchbar.component.js +1 -1
  66. package/dist/npm/common/selection/selectable.directive.js +2 -2
  67. package/dist/npm/common/taglist.component.js +56 -3
  68. package/dist/npm/common/util.js +37 -0
  69. package/dist/npm/dropdownlist/dropdownlist.component.js +336 -44
  70. package/dist/npm/dropdowntrees/dropdowntree.component.js +274 -40
  71. package/dist/npm/dropdowntrees/multiselecttree.component.js +304 -43
  72. package/dist/npm/multiselect/multiselect.component.js +160 -33
  73. package/dist/npm/package-metadata.js +1 -1
  74. package/dist/systemjs/kendo-angular-dropdowns.js +1 -1
  75. package/package.json +18 -14
@@ -3,7 +3,7 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { __decorate, __metadata, __assign, __param, __extends } from 'tslib';
6
- import { Input, Output, EventEmitter, ViewChild, ElementRef, HostBinding, Component, Renderer2, Directive, TemplateRef, Injectable, ViewChildren, QueryList, ChangeDetectorRef, NgZone, InjectionToken, forwardRef, isDevMode, ContentChild, ViewContainerRef, Optional, Inject, KeyValueDiffers, ContentChildren, ChangeDetectionStrategy, NgModule, HostListener } from '@angular/core';
6
+ import { Input, Output, EventEmitter, ViewChild, ElementRef, HostBinding, Component, Renderer2, Directive, TemplateRef, Injectable, ViewChildren, QueryList, ChangeDetectorRef, NgZone, InjectionToken, forwardRef, isDevMode, ContentChild, ViewContainerRef, Optional, Inject, HostListener, KeyValueDiffers, ContentChildren, ChangeDetectionStrategy, NgModule } from '@angular/core';
7
7
  import { isDocumentAvailable, Keys, isChanged, hasObservers, KendoInput, anyChanged, guid, ResizeSensorModule, EventsModule } from '@progress/kendo-angular-common';
8
8
  import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
9
9
  import { validatePackage } from '@progress/kendo-licensing';
@@ -23,7 +23,7 @@ var packageMetadata = {
23
23
  name: '@progress/kendo-angular-dropdowns',
24
24
  productName: 'Kendo UI for Angular',
25
25
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
26
- publishDate: 1635947106,
26
+ publishDate: 1642413450,
27
27
  version: '',
28
28
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
29
29
  };
@@ -279,6 +279,43 @@ var valueFrom = function (_a, valueField) {
279
279
  var field = fields[normalizedLevel];
280
280
  return getter(field)(dataItem);
281
281
  };
282
+ /**
283
+ * @hidden
284
+ * Returns the size class based on the component and size input.
285
+ */
286
+ var getSizeClass = function (component, size) {
287
+ var SIZE_CLASSES = {
288
+ 'small': "k-" + component + "-sm",
289
+ 'medium': "k-" + component + "-md",
290
+ 'large': "k-" + component + "-lg"
291
+ };
292
+ return SIZE_CLASSES[size];
293
+ };
294
+ /**
295
+ * @hidden
296
+ * Returns the rounded class based on the rounded input.
297
+ */
298
+ var getRoundedClass = function (rounded) {
299
+ var ROUNDED_CLASSES = {
300
+ 'small': 'k-rounded-sm',
301
+ 'medium': 'k-rounded-md',
302
+ 'large': 'k-rounded-lg',
303
+ 'full': 'k-rounded-full'
304
+ };
305
+ return ROUNDED_CLASSES[rounded];
306
+ };
307
+ /**
308
+ * @hidden
309
+ * Return the fillMode class based on the component and fillMode input.
310
+ */
311
+ var getFillModeClass = function (component, fillMode) {
312
+ var FILLMODE_CLASSES = {
313
+ 'solid': "k-" + component + "-solid",
314
+ 'flat': "k-" + component + "-flat",
315
+ 'outline': "k-" + component + "-outline"
316
+ };
317
+ return FILLMODE_CLASSES[fillMode];
318
+ };
282
319
 
283
320
  /* tslint:disable:member-ordering */
284
321
  /**
@@ -508,7 +545,7 @@ var SearchBarComponent = /** @class */ (function () {
508
545
  SearchBarComponent = __decorate([
509
546
  Component({
510
547
  selector: 'kendo-searchbar',
511
- template: "\n <input #input\n autocomplete=\"off\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [placeholder]=\"placeholder\"\n [class]=\"'k-input'\"\n (input)=\"handleInput($event)\"\n (keydown)=\"handleKeydown($event)\"\n [kendoEventsOutsideAngular]=\"{\n focus: handleFocus,\n blur: handleBlur\n }\"\n [scope]=\"this\"\n [attr.tabIndex]=\"tabIndex\"\n [attr.dir]=\"direction\"\n [attr.role]=\"role\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-readonly]=\"readonly\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"popupOpen\"\n [attr.aria-owns]=\"listId\"\n [attr.aria-describedby]=\"tagListId\"\n [attr.aria-activedescendant]=\"activeDescendant\"\n [attr.aria-label]=\"noDataLabel\"\n />\n "
548
+ template: "\n <input #input\n autocomplete=\"off\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [placeholder]=\"placeholder\"\n [class]=\"'k-input-inner'\"\n (input)=\"handleInput($event)\"\n (keydown)=\"handleKeydown($event)\"\n [kendoEventsOutsideAngular]=\"{\n focus: handleFocus,\n blur: handleBlur\n }\"\n [scope]=\"this\"\n [attr.tabIndex]=\"tabIndex\"\n [attr.dir]=\"direction\"\n [attr.role]=\"role\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-readonly]=\"readonly\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"popupOpen\"\n [attr.aria-owns]=\"listId\"\n [attr.aria-describedby]=\"tagListId\"\n [attr.aria-activedescendant]=\"activeDescendant\"\n [attr.aria-label]=\"noDataLabel\"\n />\n "
512
549
  }),
513
550
  __metadata("design:paramtypes", [LocalizationService,
514
551
  Renderer2])
@@ -1381,8 +1418,9 @@ var ListComponent = /** @class */ (function () {
1381
1418
  this.focused = -1;
1382
1419
  this.show = true;
1383
1420
  this.multipleSelection = false;
1384
- this.listClass = 'k-list k-reset';
1421
+ this.type = 'list';
1385
1422
  this.checkboxes = { enabled: false };
1423
+ this.rounded = 'medium';
1386
1424
  this.onClick = new EventEmitter();
1387
1425
  this.pageChange = new EventEmitter();
1388
1426
  this.listResize = new EventEmitter();
@@ -1390,11 +1428,13 @@ var ListComponent = /** @class */ (function () {
1390
1428
  this.lastLoaded = 0;
1391
1429
  this.lastScrollTop = 0;
1392
1430
  this.scrollToFocused = false;
1431
+ this._size = 'medium';
1393
1432
  this.selectSubscription = merge(this.selectionService.onSelect.pipe(map(function (args) { return args.indices[0]; })), this.selectionService.onFocus)
1394
1433
  .pipe(
1395
1434
  // handle only the very last onSelect/onFocus emission
1396
1435
  switchMap(function (event) { return _this.zone.onStable.pipe(take(1), map(function () { return event; })); }))
1397
1436
  .subscribe(this.scrollToItem.bind(this));
1437
+ this.prepareClasses();
1398
1438
  }
1399
1439
  Object.defineProperty(ListComponent.prototype, "data", {
1400
1440
  get: function () {
@@ -1406,6 +1446,22 @@ var ListComponent = /** @class */ (function () {
1406
1446
  enumerable: true,
1407
1447
  configurable: true
1408
1448
  });
1449
+ Object.defineProperty(ListComponent.prototype, "size", {
1450
+ get: function () {
1451
+ return this._size;
1452
+ },
1453
+ set: function (size) {
1454
+ if (this.type === 'list') {
1455
+ this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('list', this.size));
1456
+ if (size) {
1457
+ this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('list', size));
1458
+ }
1459
+ this._size = size;
1460
+ }
1461
+ },
1462
+ enumerable: true,
1463
+ configurable: true
1464
+ });
1409
1465
  Object.defineProperty(ListComponent.prototype, "pageSize", {
1410
1466
  get: function () {
1411
1467
  if (this.virtual.pageSize) {
@@ -1434,21 +1490,40 @@ var ListComponent = /** @class */ (function () {
1434
1490
  enumerable: true,
1435
1491
  configurable: true
1436
1492
  });
1493
+ Object.defineProperty(ListComponent.prototype, "checkboxClasses", {
1494
+ /**
1495
+ * @hidden
1496
+ */
1497
+ get: function () {
1498
+ return (this.size ? getSizeClass('checkbox', this.size) : '') + " " + (this.rounded ? getRoundedClass(this.rounded) : '');
1499
+ },
1500
+ enumerable: true,
1501
+ configurable: true
1502
+ });
1437
1503
  ListComponent.prototype.ngOnChanges = function (changes) {
1438
1504
  if (isChanged('data', changes, false)) {
1439
1505
  if (this.lastLoaded <= 0) {
1440
1506
  this.lastLoaded = this.data.length - 1;
1441
1507
  this.scrollToFocused = !changes.data.isFirstChange();
1442
1508
  }
1509
+ this.setOverflow();
1510
+ }
1511
+ if (isChanged('virtual', changes, false)) {
1512
+ this.setOverflow();
1513
+ }
1514
+ if (isChanged('type', changes, false)) {
1515
+ this.prepareClasses();
1443
1516
  }
1444
1517
  };
1445
1518
  ListComponent.prototype.ngAfterViewInit = function () {
1446
1519
  var _this = this;
1520
+ this.setComponentClasses();
1447
1521
  this.zone.runOutsideAngular(function () {
1448
1522
  _this.scrollSubscription = fromEvent(_this.content.nativeElement, "scroll").pipe(auditTime(100), tap(_this.prefetchData.bind(_this)), tap(_this.findCurrentGroup.bind(_this))).subscribe(function () {
1449
1523
  _this.lastScrollTop = _this.content.nativeElement.scrollTop;
1450
1524
  });
1451
1525
  });
1526
+ this.setOverflow();
1452
1527
  };
1453
1528
  ListComponent.prototype.ngAfterViewChecked = function () {
1454
1529
  if (this.virtual) {
@@ -1478,6 +1553,28 @@ var ListComponent = /** @class */ (function () {
1478
1553
  this.selectionService.unselect(index);
1479
1554
  }
1480
1555
  };
1556
+ ListComponent.prototype.prepareClasses = function () {
1557
+ if (this.type === 'list') {
1558
+ this.listContentClass = 'k-list-content';
1559
+ this.listClass = 'k-list-ul';
1560
+ this.listItemClass = 'k-list-item';
1561
+ this.listVirtualClass = 'k-virtual-list';
1562
+ this.listGroupStickyHeaderClass = 'k-list-group-sticky-header';
1563
+ this.listGroupStickyHeaderTextClass = 'k-list-header-text';
1564
+ this.listGroupItemClass = 'k-list-group-item';
1565
+ this.listGroupItemTextClass = 'k-list-item-text';
1566
+ }
1567
+ else {
1568
+ this.listContentClass = 'k-table-body k-table-scroller';
1569
+ this.listClass = 'k-table k-table-list';
1570
+ this.listItemClass = 'k-table-row';
1571
+ this.listVirtualClass = 'k-virtual-table';
1572
+ this.listGroupStickyHeaderClass = 'k-table-group-sticky-header';
1573
+ this.listGroupStickyHeaderTextClass = 'k-table-th';
1574
+ this.listGroupItemClass = 'k-table-group-row';
1575
+ this.listGroupItemTextClass = 'k-table-th';
1576
+ }
1577
+ };
1481
1578
  ListComponent.prototype.isChecked = function (index) {
1482
1579
  var normalizedIndex = this.virtual ? index + this.virtual.skip : index;
1483
1580
  return this.selectionService.isSelected(normalizedIndex);
@@ -1487,7 +1584,7 @@ var ListComponent = /** @class */ (function () {
1487
1584
  var content = this.content.nativeElement;
1488
1585
  var rect = content.getBoundingClientRect();
1489
1586
  // IE9 hack
1490
- var disabled = Array.prototype.slice.call(content.querySelectorAll(".k-state-disabled"));
1587
+ var disabled = Array.prototype.slice.call(content.querySelectorAll(".k-disabled"));
1491
1588
  // This is a workaround for finding elements with pointer-events: none;
1492
1589
  disabled.forEach(function (el) { return _this.renderer.setStyle(el, "pointer-events", "auto"); });
1493
1590
  var item = document.elementFromPoint(rect.left + 1, rect.top + 1);
@@ -1566,6 +1663,9 @@ var ListComponent = /** @class */ (function () {
1566
1663
  }
1567
1664
  return this.disabledItemsService.isIndexDisabled(index);
1568
1665
  };
1666
+ ListComponent.prototype.isAltRow = function (index) {
1667
+ return this.type === 'dropdowngrid' && index % 2 !== 0;
1668
+ };
1569
1669
  ListComponent.prototype.scrollToItem = function (index) {
1570
1670
  var flatIndex = index;
1571
1671
  if (this.dataService.grouped) {
@@ -1624,6 +1724,15 @@ var ListComponent = /** @class */ (function () {
1624
1724
  var hasVirtualScroll = isPresent(this.virtual) && this.hasVirtualScrollbar();
1625
1725
  return hasVirtualScroll || this.list.nativeElement.scrollHeight > this.content.nativeElement.offsetHeight;
1626
1726
  };
1727
+ /**
1728
+ * Sets the list's content overflow (hides/shows scrollbar)
1729
+ */
1730
+ ListComponent.prototype.setOverflow = function () {
1731
+ if (this.virtual) {
1732
+ var overflow = this.hasVirtualScrollbar() ? 'scroll' : 'hidden';
1733
+ this.renderer.setStyle(this.content.nativeElement, 'overflow-y', overflow);
1734
+ }
1735
+ };
1627
1736
  /**
1628
1737
  * Indicates whether the scrollbar should be visible in virtual mode.
1629
1738
  */
@@ -1648,6 +1757,17 @@ var ListComponent = /** @class */ (function () {
1648
1757
  }
1649
1758
  return this.virtual.skip === 0 && (this.virtual.pageSize > itemIndex);
1650
1759
  };
1760
+ ListComponent.prototype.setComponentClasses = function () {
1761
+ if (this.type === 'list') {
1762
+ this.renderer.addClass(this.wrapper.nativeElement, 'k-list');
1763
+ if (this.size) {
1764
+ this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('list', this.size));
1765
+ }
1766
+ }
1767
+ if (isPresent(this.virtual)) {
1768
+ this.renderer.addClass(this.wrapper.nativeElement, this.listVirtualClass);
1769
+ }
1770
+ };
1651
1771
  __decorate([
1652
1772
  Input(),
1653
1773
  __metadata("design:type", Array)
@@ -1703,7 +1823,7 @@ var ListComponent = /** @class */ (function () {
1703
1823
  __decorate([
1704
1824
  Input(),
1705
1825
  __metadata("design:type", String)
1706
- ], ListComponent.prototype, "listClass", void 0);
1826
+ ], ListComponent.prototype, "type", void 0);
1707
1827
  __decorate([
1708
1828
  Input(),
1709
1829
  __metadata("design:type", Object)
@@ -1713,6 +1833,15 @@ var ListComponent = /** @class */ (function () {
1713
1833
  __metadata("design:type", Array),
1714
1834
  __metadata("design:paramtypes", [Array])
1715
1835
  ], ListComponent.prototype, "data", null);
1836
+ __decorate([
1837
+ Input(),
1838
+ __metadata("design:type", String),
1839
+ __metadata("design:paramtypes", [String])
1840
+ ], ListComponent.prototype, "size", null);
1841
+ __decorate([
1842
+ Input(),
1843
+ __metadata("design:type", String)
1844
+ ], ListComponent.prototype, "rounded", void 0);
1716
1845
  __decorate([
1717
1846
  Output(),
1718
1847
  __metadata("design:type", EventEmitter)
@@ -1744,7 +1873,7 @@ var ListComponent = /** @class */ (function () {
1744
1873
  ListComponent = __decorate([
1745
1874
  Component({
1746
1875
  selector: 'kendo-list',
1747
- template: "\n <div *ngIf=\"dataService.grouped\"\n class='k-outer-group-header k-first'\n [ngClass]=\"{'k-virtual-item': virtual}\"\n [ngStyle]=\"{\n 'height.px': virtual?.itemHeight,\n 'minHeight.px' : virtual?.itemHeight,\n 'boxSizing' : virtual ? 'border-box' : 'inherit'}\"\n >\n <ng-template *ngIf=\"fixedGroupTemplate\"\n [templateContext]=\"{\n templateRef: fixedGroupTemplate.templateRef,\n $implicit: currentGroup\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!fixedGroupTemplate\"><strong>{{ currentGroup }}</strong> </ng-template>\n </div>\n <div #content\n [ngClass]=\"{ 'k-virtual-content': virtual, 'k-list-scroller': !virtual }\"\n [style.maxHeight.px]=\"height\"\n [style.overflowY]=\"overflowY\"\n unselectable=\"on\">\n <ul #list\n role=\"listbox\"\n [class]=\"listClass\"\n [ngClass]=\"{ 'k-virtual-list': virtual }\"\n [attr.id]=\"id\"\n [attr.aria-hidden]=\"!show\">\n <ng-template *ngIf=\"!dataService.grouped && show\" ngFor let-dataItem let-itemIndex=\"index\" [ngForOf]=\"data\">\n <li\n role=\"option\"\n kendoDropDownsSelectable\n [checkboxes]=\"checkboxes\"\n [height]=\"virtual?.itemHeight\"\n [index]=\"itemIndex + startFrom\"\n [multipleSelection]=\"multipleSelection\"\n [attr.id]=\"optionPrefix + '-' + getValue(dataItem)\"\n [attr.tabIndex]=\"-1\"\n class=\"k-item\"\n [ngClass]=\"{ 'k-virtual-item': virtual, 'k-state-disabled': isDisabled(itemIndex) }\">\n <label *ngIf=\"checkboxes.enabled\"\n class=\"k-checkbox-label\">\n <input type=\"checkbox\"\n class=\"k-checkbox\"\n (change)=\"onCheckedChange($event, itemIndex)\"\n [checked]=\"isChecked(itemIndex)\"\n />\n </label>\n <ng-template *ngIf=\"template\"\n [templateContext]=\"{\n templateRef: template.templateRef,\n $implicit: dataItem\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!template\">{{ getText(dataItem) }}</ng-template>\n </li>\n </ng-template>\n <ng-template *ngIf=\"dataService.grouped\" ngFor let-dataItem let-itemIndex=\"index\" [ngForOf]=\"data\">\n <li\n *ngIf=\"dataItem.header && dataItem.index > 0\"\n role=\"group\"\n class='k-outer-group-header'\n [ngClass]=\"{ 'k-virtual-item': virtual }\"\n [ngStyle]=\"{\n 'height.px': virtual?.itemHeight,\n 'minHeight.px' : virtual?.itemHeight,\n 'boxSizing' : virtual ? 'border-box' : 'inherit'}\"\n [attr.group-index]=\"dataItem.index\"\n [attr.id]=\"optionPrefix + '-' + getValue(dataItem.value)\"\n [attr.tabIndex]=\"-1\">\n <ng-template *ngIf=\"groupTemplate\"\n [templateContext]=\"{\n templateRef: groupTemplate.templateRef,\n $implicit: dataItem.value\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!groupTemplate\"><strong> {{ dataItem.value }}</strong> </ng-template>\n </li>\n <li\n *ngIf=\"!dataItem.header\"\n role=\"option\"\n kendoDropDownsSelectable\n [height]=\"virtual?.itemHeight\"\n [index]=\"dataItem.offsetIndex\"\n [multipleSelection]=\"multipleSelection\"\n [attr.absolute-index]=\"dataItem.index\"\n [attr.id]=\"optionPrefix + '-' + getValue(dataItem.value)\"\n [attr.tabIndex]=\"-1\"\n class=\"k-item\"\n [ngClass]=\"{ 'k-virtual-item': virtual, 'k-state-disabled': isDisabled(dataItem.offsetIndex) }\">\n <ng-template *ngIf=\"template\"\n [templateContext]=\"{\n templateRef: template.templateRef,\n $implicit: dataItem.value\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!template\">{{ getText(dataItem.value) }}</ng-template>\n </li>\n </ng-template>\n <kendo-resize-sensor\n *ngIf=\"!virtual\"\n (resize)=\"listResize.emit()\"\n >\n </kendo-resize-sensor>\n </ul>\n <div *ngIf=\"virtual\" #virtualContainer class=\"k-height-container\" role=\"presentation\">\n <div [style.height.px]=\"scrollHeight\">\n <kendo-resize-sensor (resize)=\"listResize.emit()\"></kendo-resize-sensor>\n </div>\n </div>\n </div>\n "
1876
+ template: "\n <div *ngIf=\"dataService.grouped\"\n [class]=\"listGroupStickyHeaderClass\"\n [ngStyle]=\"{\n 'height.px': virtual?.itemHeight,\n 'minHeight.px' : virtual?.itemHeight,\n 'boxSizing' : virtual ? 'border-box' : 'inherit'}\"\n >\n <ng-template *ngIf=\"fixedGroupTemplate\"\n [templateContext]=\"{\n templateRef: fixedGroupTemplate.templateRef,\n $implicit: currentGroup\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!fixedGroupTemplate\"><span [class]=\"listGroupStickyHeaderTextClass\">{{ currentGroup }}</span></ng-template>\n </div>\n <div #content\n [class]=\"listContentClass\"\n [style.overscrollBehavior]=\"'none'\"\n [style.maxHeight.px]=\"height\"\n unselectable=\"on\">\n <ul #list\n role=\"listbox\"\n [class]=\"listClass\"\n [attr.id]=\"id\"\n [attr.aria-hidden]=\"!show\">\n <ng-template *ngIf=\"!dataService.grouped && show\" ngFor let-dataItem let-itemIndex=\"index\" [ngForOf]=\"data\">\n <li\n role=\"option\"\n kendoDropDownsSelectable\n [checkboxes]=\"checkboxes\"\n [height]=\"virtual?.itemHeight\"\n [index]=\"itemIndex + startFrom\"\n [multipleSelection]=\"multipleSelection\"\n [attr.id]=\"optionPrefix + '-' + getValue(dataItem)\"\n [attr.tabIndex]=\"-1\"\n [class]=\"listItemClass\"\n [ngClass]=\"{\n 'k-disabled': isDisabled(itemIndex),\n 'k-table-alt-row': isAltRow(itemIndex)\n }\"\n >\n <input\n *ngIf=\"checkboxes.enabled\"\n type=\"checkbox\"\n class=\"k-checkbox\"\n [ngClass]=\"checkboxClasses\"\n (change)=\"onCheckedChange($event, itemIndex)\"\n [checked]=\"isChecked(itemIndex)\"\n />\n <ng-template *ngIf=\"template\"\n [templateContext]=\"{\n templateRef: template.templateRef,\n $implicit: dataItem\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!template\"><span class=\"k-list-item-text\">{{ getText(dataItem) }}</span></ng-template>\n </li>\n </ng-template>\n <ng-template *ngIf=\"dataService.grouped\" ngFor let-dataItem let-itemIndex=\"index\" [ngForOf]=\"data\">\n <li\n *ngIf=\"dataItem.header && dataItem.index > 0\"\n role=\"group\"\n [class]=\"listGroupItemClass\"\n [class.k-table-alt-row]=\"isAltRow(itemIndex - 1)\"\n [ngStyle]=\"{\n 'height.px': virtual?.itemHeight,\n 'minHeight.px' : virtual?.itemHeight,\n 'boxSizing' : virtual ? 'border-box' : 'inherit'}\"\n [attr.group-index]=\"dataItem.index\"\n [attr.id]=\"optionPrefix + '-' + getValue(dataItem.value)\"\n [attr.tabIndex]=\"-1\">\n <span [class]=\"listGroupItemTextClass\">\n <ng-template *ngIf=\"groupTemplate\"\n [templateContext]=\"{\n templateRef: groupTemplate.templateRef,\n $implicit: dataItem.value\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!groupTemplate\">{{ dataItem.value }}</ng-template>\n </span>\n </li>\n <li\n *ngIf=\"!dataItem.header\"\n role=\"option\"\n kendoDropDownsSelectable\n [height]=\"virtual?.itemHeight\"\n [index]=\"dataItem.offsetIndex\"\n [multipleSelection]=\"multipleSelection\"\n [attr.absolute-index]=\"dataItem.index\"\n [attr.id]=\"optionPrefix + '-' + getValue(dataItem.value)\"\n [attr.tabIndex]=\"-1\"\n [class]=\"listItemClass\"\n [ngClass]=\"{\n 'k-disabled': isDisabled(dataItem.offsetIndex),\n 'k-table-alt-row': isAltRow(itemIndex - 1)\n }\"\n >\n <ng-template *ngIf=\"template\"\n [templateContext]=\"{\n templateRef: template.templateRef,\n $implicit: dataItem.value\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!template\"><span class=\"k-list-item-text\">{{ getText(dataItem.value) }}</span></ng-template>\n </li>\n </ng-template>\n <kendo-resize-sensor\n *ngIf=\"!virtual\"\n (resize)=\"listResize.emit()\"\n >\n </kendo-resize-sensor>\n </ul>\n <div *ngIf=\"virtual\" #virtualContainer class=\"k-height-container\" role=\"presentation\">\n <div [style.height.px]=\"scrollHeight\">\n <kendo-resize-sensor (resize)=\"listResize.emit()\"></kendo-resize-sensor>\n </div>\n </div>\n </div>\n "
1748
1877
  }),
1749
1878
  __metadata("design:paramtypes", [DataService,
1750
1879
  ElementRef,
@@ -1922,6 +2051,9 @@ var AutoCompleteComponent = /** @class */ (function () {
1922
2051
  this._value = "";
1923
2052
  this.valueChangeSubject = new Subject();
1924
2053
  this._isFocused = false;
2054
+ this._size = 'medium';
2055
+ this._rounded = 'medium';
2056
+ this._fillMode = 'solid';
1925
2057
  validatePackage(packageMetadata);
1926
2058
  this.direction = localization.rtl ? 'rtl' : 'ltr';
1927
2059
  this.wrapper = this.hostElement.nativeElement;
@@ -2172,12 +2304,85 @@ var AutoCompleteComponent = /** @class */ (function () {
2172
2304
  enumerable: true,
2173
2305
  configurable: true
2174
2306
  });
2307
+ Object.defineProperty(AutoCompleteComponent.prototype, "size", {
2308
+ get: function () {
2309
+ return this._size;
2310
+ },
2311
+ /**
2312
+ * Sets the size of the component.
2313
+ *
2314
+ * The possible values are:
2315
+ * * `'small'`
2316
+ * * `'medium'` (default)
2317
+ * * `'large'`
2318
+ * * `null`
2319
+ *
2320
+ */
2321
+ set: function (size) {
2322
+ this.renderer.removeClass(this.wrapper, getSizeClass('input', this.size));
2323
+ if (size) {
2324
+ this.renderer.addClass(this.wrapper, getSizeClass('input', size));
2325
+ }
2326
+ this._size = size;
2327
+ },
2328
+ enumerable: true,
2329
+ configurable: true
2330
+ });
2331
+ Object.defineProperty(AutoCompleteComponent.prototype, "rounded", {
2332
+ get: function () {
2333
+ return this._rounded;
2334
+ },
2335
+ /**
2336
+ * Sets the border radius of the component.
2337
+ *
2338
+ * The possible values are:
2339
+ * * `'small'`
2340
+ * * `'medium'` (default)
2341
+ * * `'large'`
2342
+ * * `'full'`
2343
+ * * `null`
2344
+ *
2345
+ */
2346
+ set: function (rounded) {
2347
+ this.renderer.removeClass(this.wrapper, getRoundedClass(this.rounded));
2348
+ if (rounded) {
2349
+ this.renderer.addClass(this.wrapper, getRoundedClass(rounded));
2350
+ }
2351
+ this._rounded = rounded;
2352
+ },
2353
+ enumerable: true,
2354
+ configurable: true
2355
+ });
2356
+ Object.defineProperty(AutoCompleteComponent.prototype, "fillMode", {
2357
+ get: function () {
2358
+ return this._fillMode;
2359
+ },
2360
+ /**
2361
+ * Sets the fillMode of the component.
2362
+ *
2363
+ * The possible values are:
2364
+ * * `'flat'`
2365
+ * * `'solid'` (default)
2366
+ * * `'outline'`
2367
+ * * `null`
2368
+ *
2369
+ */
2370
+ set: function (fillMode) {
2371
+ this.renderer.removeClass(this.wrapper, getFillModeClass('input', this.fillMode));
2372
+ if (fillMode) {
2373
+ this.renderer.addClass(this.wrapper, getFillModeClass('input', fillMode));
2374
+ }
2375
+ this._fillMode = fillMode;
2376
+ },
2377
+ enumerable: true,
2378
+ configurable: true
2379
+ });
2175
2380
  Object.defineProperty(AutoCompleteComponent.prototype, "isFocused", {
2176
2381
  get: function () {
2177
2382
  return this._isFocused;
2178
2383
  },
2179
2384
  set: function (isFocused) {
2180
- this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper, "k-state-focused");
2385
+ this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper, "k-focus");
2181
2386
  this._isFocused = isFocused;
2182
2387
  },
2183
2388
  enumerable: true,
@@ -2190,6 +2395,13 @@ var AutoCompleteComponent = /** @class */ (function () {
2190
2395
  enumerable: true,
2191
2396
  configurable: true
2192
2397
  });
2398
+ Object.defineProperty(AutoCompleteComponent.prototype, "isLoading", {
2399
+ get: function () {
2400
+ return this.loading;
2401
+ },
2402
+ enumerable: true,
2403
+ configurable: true
2404
+ });
2193
2405
  Object.defineProperty(AutoCompleteComponent.prototype, "dir", {
2194
2406
  get: function () {
2195
2407
  return this.direction;
@@ -2208,6 +2420,7 @@ var AutoCompleteComponent = /** @class */ (function () {
2208
2420
  _this.setMessages();
2209
2421
  });
2210
2422
  this.setMessages();
2423
+ this.setComponentClasses();
2211
2424
  };
2212
2425
  AutoCompleteComponent.prototype.ngOnDestroy = function () {
2213
2426
  this.destroyPopup();
@@ -2644,6 +2857,17 @@ var AutoCompleteComponent = /** @class */ (function () {
2644
2857
  });
2645
2858
  });
2646
2859
  };
2860
+ AutoCompleteComponent.prototype.setComponentClasses = function () {
2861
+ if (this.size) {
2862
+ this.renderer.addClass(this.wrapper, getSizeClass('input', this.size));
2863
+ }
2864
+ if (this.rounded) {
2865
+ this.renderer.addClass(this.wrapper, getRoundedClass(this.rounded));
2866
+ }
2867
+ if (this.fillMode) {
2868
+ this.renderer.addClass(this.wrapper, getFillModeClass('input', this.fillMode));
2869
+ }
2870
+ };
2647
2871
  var AutoCompleteComponent_1;
2648
2872
  __decorate([
2649
2873
  Input(),
@@ -2723,6 +2947,21 @@ var AutoCompleteComponent = /** @class */ (function () {
2723
2947
  __metadata("design:type", Object),
2724
2948
  __metadata("design:paramtypes", [Object])
2725
2949
  ], AutoCompleteComponent.prototype, "virtual", null);
2950
+ __decorate([
2951
+ Input(),
2952
+ __metadata("design:type", String),
2953
+ __metadata("design:paramtypes", [String])
2954
+ ], AutoCompleteComponent.prototype, "size", null);
2955
+ __decorate([
2956
+ Input(),
2957
+ __metadata("design:type", String),
2958
+ __metadata("design:paramtypes", [String])
2959
+ ], AutoCompleteComponent.prototype, "rounded", null);
2960
+ __decorate([
2961
+ Input(),
2962
+ __metadata("design:type", String),
2963
+ __metadata("design:paramtypes", [String])
2964
+ ], AutoCompleteComponent.prototype, "fillMode", null);
2726
2965
  __decorate([
2727
2966
  Output(),
2728
2967
  __metadata("design:type", EventEmitter)
@@ -2796,15 +3035,20 @@ var AutoCompleteComponent = /** @class */ (function () {
2796
3035
  __metadata("design:type", ListComponent)
2797
3036
  ], AutoCompleteComponent.prototype, "optionsList", void 0);
2798
3037
  __decorate([
2799
- HostBinding('class.k-widget'),
2800
3038
  HostBinding('class.k-autocomplete'),
3039
+ HostBinding('class.k-input'),
2801
3040
  __metadata("design:type", Boolean)
2802
3041
  ], AutoCompleteComponent.prototype, "widgetClasses", void 0);
2803
3042
  __decorate([
2804
- HostBinding('class.k-state-disabled'),
3043
+ HostBinding('class.k-disabled'),
2805
3044
  __metadata("design:type", Boolean),
2806
3045
  __metadata("design:paramtypes", [])
2807
3046
  ], AutoCompleteComponent.prototype, "isDisabled", null);
3047
+ __decorate([
3048
+ HostBinding('class.k-loading'),
3049
+ __metadata("design:type", Boolean),
3050
+ __metadata("design:paramtypes", [])
3051
+ ], AutoCompleteComponent.prototype, "isLoading", null);
2808
3052
  __decorate([
2809
3053
  HostBinding('attr.dir'),
2810
3054
  __metadata("design:type", Object),
@@ -2834,7 +3078,7 @@ var AutoCompleteComponent = /** @class */ (function () {
2834
3078
  }
2835
3079
  ],
2836
3080
  selector: 'kendo-autocomplete',
2837
- template: "\n <ng-container kendoAutoCompleteLocalizedMessages\n i18n-noDataText=\"kendo.autocomplete.noDataText|The text displayed in the popup when there are no items\"\n noDataText=\"NO DATA FOUND\"\n\n i18n-clearTitle=\"kendo.autocomplete.clearTitle|The title of the clear button\"\n clearTitle=\"clear\"\n >\n </ng-container>\n <kendo-searchbar #searchbar\n [role]=\"'combobox'\"\n [id]=\"focusableId\"\n [listId]=\"listBoxId\"\n [activeDescendant]=\"activeDescendant\"\n [noDataLabel]=\"noDataLabel\"\n [userInput]=\"text\"\n [suggestedText]=\"suggestion\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabIndex\"\n [popupOpen]=\"isOpen\"\n [placeholder]=\"placeholder\"\n (onNavigate)=\"handleNavigate($event)\"\n (valueChange)=\"searchBarChange($event)\"\n (onBlur)=\"handleBlur()\"\n (onFocus)=\"handleFocus()\"\n ></kendo-searchbar>\n <span\n *ngIf=\"!loading && !readonly && (clearButton && text?.length)\"\n class=\"k-icon k-clear-value k-i-close\"\n [style.visibility]=\"clearButtonVisiblity\"\n [attr.title]=\"clearTitle\"\n role=\"button\"\n tabindex=\"-1\"\n (click)=\"clearValue($event)\"\n (mousedown)=\"$event.preventDefault()\"\n >\n</span>\n <span *ngIf=\"loading\" class=\"k-icon k-i-loading\"></span>\n <ng-template #popupTemplate>\n <!--header template-->\n <ng-template *ngIf=\"headerTemplate\"\n [templateContext]=\"{\n templateRef: headerTemplate.templateRef\n }\">\n </ng-template>\n <!--list-->\n <kendo-list\n #optionsList\n [id]=\"listBoxId\"\n [optionPrefix]=\"optionPrefix\"\n [data]=\"data\"\n [textField]=\"valueField\"\n [valueField]=\"valueField\"\n [template]=\"template\"\n [groupTemplate]=\"groupTemplate\"\n [fixedGroupTemplate]=\"fixedGroupTemplate\"\n [height]=\"listHeight\"\n [show]=\"isOpen\"\n [virtual]=\"virtual\"\n (pageChange)=\"pageChange($event)\"\n >\n </kendo-list>\n <!--no-data template-->\n <div class=\"k-nodata\" *ngIf=\"data.length === 0\">\n <ng-template [ngIf]=\"noDataTemplate\"\n [templateContext]=\"{\n templateRef: noDataTemplate?.templateRef\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!noDataTemplate\">\n <div>{{ noDataText }}</div>\n </ng-template>\n </div>\n <!--footer template-->\n <ng-template *ngIf=\"footerTemplate\"\n [templateContext]=\"{\n templateRef: footerTemplate.templateRef\n }\">\n </ng-template>\n </ng-template>\n <ng-template [ngIf]=\"isOpen\">\n <kendo-resize-sensor (resize)=\"onResize()\"></kendo-resize-sensor>\n </ng-template>\n <ng-container #container></ng-container>\n "
3081
+ template: "\n <ng-container kendoAutoCompleteLocalizedMessages\n i18n-noDataText=\"kendo.autocomplete.noDataText|The text displayed in the popup when there are no items\"\n noDataText=\"NO DATA FOUND\"\n\n i18n-clearTitle=\"kendo.autocomplete.clearTitle|The title of the clear button\"\n clearTitle=\"clear\"\n >\n </ng-container>\n <kendo-searchbar #searchbar\n [role]=\"'combobox'\"\n [id]=\"focusableId\"\n [listId]=\"listBoxId\"\n [activeDescendant]=\"activeDescendant\"\n [noDataLabel]=\"noDataLabel\"\n [userInput]=\"text\"\n [suggestedText]=\"suggestion\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabIndex\"\n [popupOpen]=\"isOpen\"\n [placeholder]=\"placeholder\"\n (onNavigate)=\"handleNavigate($event)\"\n (valueChange)=\"searchBarChange($event)\"\n (onBlur)=\"handleBlur()\"\n (onFocus)=\"handleFocus()\"\n ></kendo-searchbar>\n <span\n *ngIf=\"!loading && !readonly && (clearButton && text?.length)\"\n class=\"k-clear-value\"\n [style.visibility]=\"clearButtonVisiblity\"\n [attr.title]=\"clearTitle\"\n role=\"button\"\n tabindex=\"-1\"\n (click)=\"clearValue($event)\"\n (mousedown)=\"$event.preventDefault()\"\n >\n <span class=\"k-icon k-i-x\"></span>\n </span>\n <span *ngIf=\"loading\" class=\"k-icon k-i-loading\"></span>\n <ng-template #popupTemplate>\n <!--header template-->\n <ng-template *ngIf=\"headerTemplate\"\n [templateContext]=\"{\n templateRef: headerTemplate.templateRef\n }\">\n </ng-template>\n <!--list-->\n <kendo-list\n #optionsList\n [size]=\"size\"\n [rounded]=\"rounded\"\n [id]=\"listBoxId\"\n [optionPrefix]=\"optionPrefix\"\n [data]=\"data\"\n [textField]=\"valueField\"\n [valueField]=\"valueField\"\n [template]=\"template\"\n [groupTemplate]=\"groupTemplate\"\n [fixedGroupTemplate]=\"fixedGroupTemplate\"\n [height]=\"listHeight\"\n [show]=\"isOpen\"\n [virtual]=\"virtual\"\n (pageChange)=\"pageChange($event)\"\n >\n </kendo-list>\n <!--no-data template-->\n <div class=\"k-no-data\" *ngIf=\"data.length === 0\">\n <ng-template [ngIf]=\"noDataTemplate\"\n [templateContext]=\"{\n templateRef: noDataTemplate?.templateRef\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!noDataTemplate\">\n <div>{{ noDataText }}</div>\n </ng-template>\n </div>\n <!--footer template-->\n <ng-template *ngIf=\"footerTemplate\"\n [templateContext]=\"{\n templateRef: footerTemplate.templateRef\n }\">\n </ng-template>\n </ng-template>\n <ng-template [ngIf]=\"isOpen\">\n <kendo-resize-sensor (resize)=\"onResize()\"></kendo-resize-sensor>\n </ng-template>\n <ng-container #container></ng-container>\n "
2838
3082
  }),
2839
3083
  __param(10, Optional()), __param(10, Inject(TOUCH_ENABLED)),
2840
3084
  __metadata("design:paramtypes", [LocalizationService,
@@ -2937,7 +3181,8 @@ var COMBOBOX_VALUE_ACCESSOR = {
2937
3181
  * ```
2938
3182
  */
2939
3183
  var ComboBoxComponent = /** @class */ (function () {
2940
- function ComboBoxComponent(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, cdr, renderer, hostElement, touchEnabled$$1) {
3184
+ function ComboBoxComponent(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, cdr, renderer, touchEnabled$$1) {
3185
+ this.wrapper = wrapper;
2941
3186
  this.localization = localization;
2942
3187
  this.popupService = popupService;
2943
3188
  this.selectionService = selectionService;
@@ -2947,7 +3192,6 @@ var ComboBoxComponent = /** @class */ (function () {
2947
3192
  this.zone = zone;
2948
3193
  this.cdr = cdr;
2949
3194
  this.renderer = renderer;
2950
- this.hostElement = hostElement;
2951
3195
  this.touchEnabled = touchEnabled$$1;
2952
3196
  this.selected = [];
2953
3197
  /**
@@ -3114,6 +3358,9 @@ var ComboBoxComponent = /** @class */ (function () {
3114
3358
  this.valueSubject = new Subject();
3115
3359
  this.clearValueSubject = new Subject();
3116
3360
  this.subs = new Subscription();
3361
+ this._size = 'medium';
3362
+ this._rounded = 'medium';
3363
+ this._fillMode = 'solid';
3117
3364
  validatePackage(packageMetadata);
3118
3365
  this.direction = localization.rtl ? 'rtl' : 'ltr';
3119
3366
  this.data = [];
@@ -3317,9 +3564,89 @@ var ComboBoxComponent = /** @class */ (function () {
3317
3564
  enumerable: true,
3318
3565
  configurable: true
3319
3566
  });
3320
- Object.defineProperty(ComboBoxComponent.prototype, "clearable", {
3567
+ Object.defineProperty(ComboBoxComponent.prototype, "size", {
3568
+ get: function () {
3569
+ return this._size;
3570
+ },
3571
+ /**
3572
+ * Sets the size of the component.
3573
+ *
3574
+ * The possible values are:
3575
+ * * `'small'`
3576
+ * * `'medium'` (default)
3577
+ * * `'large'`
3578
+ * * `null`
3579
+ *
3580
+ */
3581
+ set: function (size) {
3582
+ this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));
3583
+ if (size) {
3584
+ this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', size));
3585
+ }
3586
+ this._size = size;
3587
+ },
3588
+ enumerable: true,
3589
+ configurable: true
3590
+ });
3591
+ Object.defineProperty(ComboBoxComponent.prototype, "rounded", {
3592
+ get: function () {
3593
+ return this._rounded;
3594
+ },
3595
+ /**
3596
+ * Sets the border radius of the component.
3597
+ *
3598
+ * The possible values are:
3599
+ * * `'small'`
3600
+ * * `'medium'` (default)
3601
+ * * `'large'`
3602
+ * * `'full'`
3603
+ * * `null`
3604
+ *
3605
+ */
3606
+ set: function (rounded) {
3607
+ this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));
3608
+ if (rounded) {
3609
+ this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(rounded));
3610
+ }
3611
+ this._rounded = rounded;
3612
+ },
3613
+ enumerable: true,
3614
+ configurable: true
3615
+ });
3616
+ Object.defineProperty(ComboBoxComponent.prototype, "fillMode", {
3617
+ get: function () {
3618
+ return this._fillMode;
3619
+ },
3620
+ /**
3621
+ * Sets the fillMode of the component.
3622
+ *
3623
+ * The possible values are:
3624
+ * * `'flat'`
3625
+ * * `'solid'` (default)
3626
+ * * `'outline'`
3627
+ * * `null`
3628
+ *
3629
+ */
3630
+ set: function (fillMode) {
3631
+ this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));
3632
+ if (fillMode) {
3633
+ this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', fillMode));
3634
+ }
3635
+ this._fillMode = fillMode;
3636
+ },
3637
+ enumerable: true,
3638
+ configurable: true
3639
+ });
3640
+ Object.defineProperty(ComboBoxComponent.prototype, "isDisabled", {
3641
+ get: function () {
3642
+ return this.disabled;
3643
+ },
3644
+ enumerable: true,
3645
+ configurable: true
3646
+ });
3647
+ Object.defineProperty(ComboBoxComponent.prototype, "isLoading", {
3321
3648
  get: function () {
3322
- return this.clearButton;
3649
+ return this.loading;
3323
3650
  },
3324
3651
  enumerable: true,
3325
3652
  configurable: true
@@ -3336,7 +3663,7 @@ var ComboBoxComponent = /** @class */ (function () {
3336
3663
  return this._isFocused;
3337
3664
  },
3338
3665
  set: function (value) {
3339
- this.renderer[value ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, "k-state-focused");
3666
+ this.renderer[value ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, "k-focus");
3340
3667
  this._isFocused = value;
3341
3668
  },
3342
3669
  enumerable: true,
@@ -3374,12 +3701,13 @@ var ComboBoxComponent = /** @class */ (function () {
3374
3701
  configurable: true
3375
3702
  });
3376
3703
  ComboBoxComponent.prototype.ngOnInit = function () {
3377
- this.renderer.removeAttribute(this.hostElement.nativeElement, 'tabindex');
3704
+ this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');
3378
3705
  this.attachStreams();
3379
3706
  this.createValueStream();
3380
3707
  this.subscribeTouchEvents();
3381
3708
  this.attachSelectClickHandler();
3382
3709
  this.setMessages();
3710
+ this.setComponentClasses();
3383
3711
  };
3384
3712
  ComboBoxComponent.prototype.createValueStream = function () {
3385
3713
  var _this = this;
@@ -3669,6 +3997,16 @@ var ComboBoxComponent = /** @class */ (function () {
3669
3997
  enumerable: true,
3670
3998
  configurable: true
3671
3999
  });
4000
+ Object.defineProperty(ComboBoxComponent.prototype, "selectButtonClasses", {
4001
+ /**
4002
+ * @hidden
4003
+ */
4004
+ get: function () {
4005
+ return (this.size ? getSizeClass('button', this.size) : '') + " " + (this.fillMode ? 'k-button-' + this.fillMode : '') + " " + (this.fillMode ? 'k-button-' + this.fillMode + '-base' : '') + "\n ";
4006
+ },
4007
+ enumerable: true,
4008
+ configurable: true
4009
+ });
3672
4010
  /**
3673
4011
  * @hidden
3674
4012
  */
@@ -3900,7 +4238,7 @@ var ComboBoxComponent = /** @class */ (function () {
3900
4238
  var currentText = this.searchbar.value;
3901
4239
  var textHasChanged = currentText !== (getter$1(this.dataItem, this.textField) || '');
3902
4240
  var valueHasChanged = unresolvedSelection || textHasChanged;
3903
- var runInZone = valueHasChanged || hasObservers(this.onBlur) || hasObservers(this.close) || isUntouched(this.hostElement.nativeElement);
4241
+ var runInZone = valueHasChanged || hasObservers(this.onBlur) || hasObservers(this.close) || isUntouched(this.wrapper.nativeElement);
3904
4242
  if (runInZone) {
3905
4243
  this.zone.run(function () {
3906
4244
  if (valueHasChanged) {
@@ -4138,7 +4476,7 @@ var ComboBoxComponent = /** @class */ (function () {
4138
4476
  // Roll up ComboBox on iOS when tapped outside
4139
4477
  return _this.touchstartDisposeHandler = _this.renderer.listen(document, 'touchstart', function (e) {
4140
4478
  var target = e.target;
4141
- var isInDropDown = inDropDown(_this.hostElement, target, _this.popupRef);
4479
+ var isInDropDown = inDropDown(_this.wrapper, target, _this.popupRef);
4142
4480
  if (_this.isFocused && !isInDropDown) {
4143
4481
  // Close popup and mobile keyboard if searchbar is focused
4144
4482
  _this.zone.run(function () { return _this.blur(); });
@@ -4155,6 +4493,17 @@ var ComboBoxComponent = /** @class */ (function () {
4155
4493
  var event = pointers ? 'pointerdown' : 'click';
4156
4494
  this.selectClickDisposeHandler = this.renderer.listen(selectElement, event, this.selectClick.bind(this));
4157
4495
  };
4496
+ ComboBoxComponent.prototype.setComponentClasses = function () {
4497
+ if (this.size) {
4498
+ this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));
4499
+ }
4500
+ if (this.rounded) {
4501
+ this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));
4502
+ }
4503
+ if (this.fillMode) {
4504
+ this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));
4505
+ }
4506
+ };
4158
4507
  var ComboBoxComponent_1;
4159
4508
  __decorate([
4160
4509
  Input(),
@@ -4251,6 +4600,21 @@ var ComboBoxComponent = /** @class */ (function () {
4251
4600
  __metadata("design:type", Object),
4252
4601
  __metadata("design:paramtypes", [Object])
4253
4602
  ], ComboBoxComponent.prototype, "virtual", null);
4603
+ __decorate([
4604
+ Input(),
4605
+ __metadata("design:type", String),
4606
+ __metadata("design:paramtypes", [String])
4607
+ ], ComboBoxComponent.prototype, "size", null);
4608
+ __decorate([
4609
+ Input(),
4610
+ __metadata("design:type", String),
4611
+ __metadata("design:paramtypes", [String])
4612
+ ], ComboBoxComponent.prototype, "rounded", null);
4613
+ __decorate([
4614
+ Input(),
4615
+ __metadata("design:type", String),
4616
+ __metadata("design:paramtypes", [String])
4617
+ ], ComboBoxComponent.prototype, "fillMode", null);
4254
4618
  __decorate([
4255
4619
  Output(),
4256
4620
  __metadata("design:type", EventEmitter)
@@ -4327,24 +4691,25 @@ var ComboBoxComponent = /** @class */ (function () {
4327
4691
  ViewChild('optionsList', { static: false }),
4328
4692
  __metadata("design:type", ListComponent)
4329
4693
  ], ComboBoxComponent.prototype, "optionsList", void 0);
4330
- __decorate([
4331
- ViewChild('wrapper', { static: true }),
4332
- __metadata("design:type", ElementRef)
4333
- ], ComboBoxComponent.prototype, "wrapper", void 0);
4334
4694
  __decorate([
4335
4695
  ViewChild('select', { static: true }),
4336
4696
  __metadata("design:type", ElementRef)
4337
4697
  ], ComboBoxComponent.prototype, "select", void 0);
4338
4698
  __decorate([
4339
- HostBinding('class.k-widget'),
4340
4699
  HostBinding('class.k-combobox'),
4700
+ HostBinding('class.k-input'),
4341
4701
  __metadata("design:type", Boolean)
4342
4702
  ], ComboBoxComponent.prototype, "widgetClasses", void 0);
4343
4703
  __decorate([
4344
- HostBinding('class.k-combobox-clearable'),
4704
+ HostBinding('class.k-disabled'),
4705
+ __metadata("design:type", Boolean),
4706
+ __metadata("design:paramtypes", [])
4707
+ ], ComboBoxComponent.prototype, "isDisabled", null);
4708
+ __decorate([
4709
+ HostBinding('class.k-loading'),
4345
4710
  __metadata("design:type", Boolean),
4346
4711
  __metadata("design:paramtypes", [])
4347
- ], ComboBoxComponent.prototype, "clearable", null);
4712
+ ], ComboBoxComponent.prototype, "isLoading", null);
4348
4713
  __decorate([
4349
4714
  HostBinding('attr.dir'),
4350
4715
  __metadata("design:type", Object),
@@ -4372,10 +4737,11 @@ var ComboBoxComponent = /** @class */ (function () {
4372
4737
  }
4373
4738
  ],
4374
4739
  selector: 'kendo-combobox',
4375
- template: "\n <ng-container kendoComboBoxLocalizedMessages\n i18n-noDataText=\"kendo.combobox.noDataText|The text displayed in the popup when there are no items\"\n noDataText=\"NO DATA FOUND\"\n\n i18n-clearTitle=\"kendo.combobox.clearTitle|The title of the clear button\"\n clearTitle=\"clear\"\n >\n </ng-container>\n <span #wrapper unselectable=\"on\"\n class=\"k-dropdown-wrap\"\n [ngClass]=\"{'k-state-disabled': disabled }\"\n >\n <kendo-searchbar #searchbar\n [role]=\"'combobox'\"\n [id]=\"focusableId\"\n [listId]=\"listBoxId\"\n [activeDescendant]=\"activeDescendant\"\n [noDataLabel]=\"noDataLabel\"\n [userInput]=\"text\"\n [suggestedText]=\"getSuggestion()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabIndex\"\n [popupOpen]=\"isOpen\"\n [placeholder]=\"placeholder\"\n (onNavigate)=\"handleNavigate($event)\"\n (valueChange)=\"searchBarChange($event)\"\n (onBlur)=\"handleBlur()\"\n (onFocus)=\"handleFocus()\"\n ></kendo-searchbar>\n <span\n *ngIf=\"clearButton && !loading && !disabled && !readonly && text?.length\"\n class=\"k-icon k-clear-value k-i-close\"\n [style.visibility]=\"clearButtonVisiblity\"\n aria-hidden=\"true\"\n [attr.title]=\"clearTitle\"\n (click)=\"clearValue($event)\"\n [kendoEventsOutsideAngular]=\"{\n mousedown: preventEventDefault\n }\"\n >\n </span>\n <span\n #select\n aria-hidden=\"true\"\n unselectable=\"on\"\n class=\"k-select\"\n [kendoEventsOutsideAngular]=\"{\n mousedown: preventEventDefault\n }\"\n >\n <span class=\"k-icon\" [ngClass]=\"buttonClasses\">\n </span>\n </span>\n <ng-template #popupTemplate>\n <!--header template-->\n <ng-template *ngIf=\"headerTemplate\"\n [templateContext]=\"{\n templateRef: headerTemplate.templateRef\n }\">\n </ng-template>\n <!--list-->\n <kendo-list\n #optionsList\n [id]=\"listBoxId\"\n [optionPrefix]=\"optionPrefix\"\n [data]=\"data\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [template]=\"template\"\n [groupTemplate]=\"groupTemplate\"\n [fixedGroupTemplate]=\"fixedGroupTemplate\"\n [height]=\"listHeight\"\n [show]=\"isOpen\"\n [virtual]=\"virtual\"\n (pageChange)=\"pageChange($event)\"\n >\n </kendo-list>\n <!--no-data template-->\n <div class=\"k-nodata\" *ngIf=\"data.length === 0\">\n <ng-template [ngIf]=\"noDataTemplate\"\n [templateContext]=\"{\n templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!noDataTemplate\">\n <div>{{ noDataText }}</div>\n </ng-template>\n </div>\n <!--footer template-->\n <ng-template *ngIf=\"footerTemplate\"\n [templateContext]=\"{\n templateRef: footerTemplate.templateRef\n }\">\n </ng-template>\n </ng-template>\n </span>\n <ng-template [ngIf]=\"isOpen\">\n <kendo-resize-sensor (resize)=\"onResize()\"></kendo-resize-sensor>\n </ng-template>\n <ng-container #container></ng-container>\n "
4740
+ template: "\n <ng-container kendoComboBoxLocalizedMessages\n i18n-noDataText=\"kendo.combobox.noDataText|The text displayed in the popup when there are no items\"\n noDataText=\"NO DATA FOUND\"\n\n i18n-clearTitle=\"kendo.combobox.clearTitle|The title of the clear button\"\n clearTitle=\"clear\"\n >\n </ng-container>\n <kendo-searchbar #searchbar\n [role]=\"'combobox'\"\n [id]=\"focusableId\"\n [listId]=\"listBoxId\"\n [activeDescendant]=\"activeDescendant\"\n [noDataLabel]=\"noDataLabel\"\n [userInput]=\"text\"\n [suggestedText]=\"getSuggestion()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabIndex\"\n [popupOpen]=\"isOpen\"\n [placeholder]=\"placeholder\"\n (onNavigate)=\"handleNavigate($event)\"\n (valueChange)=\"searchBarChange($event)\"\n (onBlur)=\"handleBlur()\"\n (onFocus)=\"handleFocus()\"\n ></kendo-searchbar>\n <span\n *ngIf=\"clearButton && !loading && !disabled && !readonly && text?.length\"\n class=\"k-clear-value\"\n [style.visibility]=\"clearButtonVisiblity\"\n aria-hidden=\"true\"\n [attr.title]=\"clearTitle\"\n (click)=\"clearValue($event)\"\n [kendoEventsOutsideAngular]=\"{\n mousedown: preventEventDefault\n }\"\n >\n <span class=\"k-icon k-i-x\"></span>\n </span>\n <button\n #select\n aria-hidden=\"true\"\n unselectable=\"on\"\n type=\"button\"\n class=\"k-input-button k-button k-icon-button\"\n [ngClass]=\"selectButtonClasses\"\n [kendoEventsOutsideAngular]=\"{\n mousedown: preventEventDefault\n }\"\n >\n <span class=\"k-button-icon k-icon\" [ngClass]=\"buttonClasses\"></span>\n </button>\n <ng-template #popupTemplate>\n <!--header template-->\n <ng-template *ngIf=\"headerTemplate\"\n [templateContext]=\"{\n templateRef: headerTemplate.templateRef\n }\">\n </ng-template>\n <!--list-->\n <kendo-list\n #optionsList\n [size]=\"size\"\n [rounded]=\"rounded\"\n [id]=\"listBoxId\"\n [optionPrefix]=\"optionPrefix\"\n [data]=\"data\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [template]=\"template\"\n [groupTemplate]=\"groupTemplate\"\n [fixedGroupTemplate]=\"fixedGroupTemplate\"\n [height]=\"listHeight\"\n [show]=\"isOpen\"\n [virtual]=\"virtual\"\n (pageChange)=\"pageChange($event)\"\n >\n </kendo-list>\n <!--no-data template-->\n <div class=\"k-no-data\" *ngIf=\"data.length === 0\">\n <ng-template [ngIf]=\"noDataTemplate\"\n [templateContext]=\"{\n templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!noDataTemplate\">\n <div>{{ noDataText }}</div>\n </ng-template>\n </div>\n <!--footer template-->\n <ng-template *ngIf=\"footerTemplate\"\n [templateContext]=\"{\n templateRef: footerTemplate.templateRef\n }\">\n </ng-template>\n </ng-template>\n <ng-template [ngIf]=\"isOpen\">\n <kendo-resize-sensor (resize)=\"onResize()\"></kendo-resize-sensor>\n </ng-template>\n <ng-container #container></ng-container>\n "
4376
4741
  }),
4377
4742
  __param(10, Optional()), __param(10, Inject(TOUCH_ENABLED)),
4378
- __metadata("design:paramtypes", [LocalizationService,
4743
+ __metadata("design:paramtypes", [ElementRef,
4744
+ LocalizationService,
4379
4745
  PopupService,
4380
4746
  SelectionService,
4381
4747
  NavigationService,
@@ -4383,8 +4749,7 @@ var ComboBoxComponent = /** @class */ (function () {
4383
4749
  DataService,
4384
4750
  NgZone,
4385
4751
  ChangeDetectorRef,
4386
- Renderer2,
4387
- ElementRef, Boolean])
4752
+ Renderer2, Boolean])
4388
4753
  ], ComboBoxComponent);
4389
4754
  return ComboBoxComponent;
4390
4755
  }());
@@ -4458,7 +4823,8 @@ var DROPDOWNLIST_VALUE_ACCESSOR = {
4458
4823
  * ```
4459
4824
  */
4460
4825
  var DropDownListComponent = /** @class */ (function () {
4461
- function DropDownListComponent(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, _zone, renderer, hostElement, cdr, touchEnabled$$1) {
4826
+ function DropDownListComponent(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, _zone, renderer, cdr, touchEnabled$$1) {
4827
+ this.wrapper = wrapper;
4462
4828
  this.localization = localization;
4463
4829
  this.popupService = popupService;
4464
4830
  this.selectionService = selectionService;
@@ -4467,7 +4833,6 @@ var DropDownListComponent = /** @class */ (function () {
4467
4833
  this.dataService = dataService;
4468
4834
  this._zone = _zone;
4469
4835
  this.renderer = renderer;
4470
- this.hostElement = hostElement;
4471
4836
  this.cdr = cdr;
4472
4837
  this.touchEnabled = touchEnabled$$1;
4473
4838
  /**
@@ -4551,7 +4916,8 @@ var DropDownListComponent = /** @class */ (function () {
4551
4916
  * Fires each time the DropDownList gets blurred.
4552
4917
  */
4553
4918
  this.onBlur = new EventEmitter();
4554
- this.widgetClasses = true;
4919
+ this.hostClasses = true;
4920
+ this.role = 'listbox';
4555
4921
  this.groupIndices = [];
4556
4922
  this.listBoxId = guid$1();
4557
4923
  this.optionPrefix = guid$1();
@@ -4563,16 +4929,20 @@ var DropDownListComponent = /** @class */ (function () {
4563
4929
  this.last = "";
4564
4930
  this.filterFocused = new EventEmitter();
4565
4931
  this.filterBlurred = new EventEmitter();
4566
- this.wrapperFocused = new EventEmitter();
4567
- this.wrapperBlurred = new EventEmitter();
4932
+ this.hostElementFocused = new EventEmitter();
4933
+ this.hostElementBlurred = new EventEmitter();
4568
4934
  this.selectionSubscription = new Subscription();
4569
4935
  this._open = false;
4570
4936
  this._popupSettings = { animate: true };
4937
+ this._size = 'medium';
4938
+ this._rounded = 'medium';
4939
+ this._fillMode = 'solid';
4571
4940
  validatePackage(packageMetadata);
4572
4941
  this.direction = localization.rtl ? 'rtl' : 'ltr';
4573
4942
  this.data = [];
4574
4943
  this.subscribeEvents();
4575
4944
  this.subscribeTouchEvents();
4945
+ this.subscribeFocusEvents();
4576
4946
  this.popupMouseDownHandler = this.onMouseDown.bind(this);
4577
4947
  }
4578
4948
  DropDownListComponent_1 = DropDownListComponent;
@@ -4781,11 +5151,88 @@ var DropDownListComponent = /** @class */ (function () {
4781
5151
  enumerable: true,
4782
5152
  configurable: true
4783
5153
  });
5154
+ Object.defineProperty(DropDownListComponent.prototype, "size", {
5155
+ get: function () {
5156
+ return this._size;
5157
+ },
5158
+ /**
5159
+ * Sets the size of the component.
5160
+ *
5161
+ * The possible values are:
5162
+ * * `'small'`
5163
+ * * `'medium'` (default)
5164
+ * * `'large'`
5165
+ * * `null`
5166
+ *
5167
+ */
5168
+ set: function (size) {
5169
+ this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));
5170
+ if (size) {
5171
+ this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', size));
5172
+ }
5173
+ this._size = size;
5174
+ },
5175
+ enumerable: true,
5176
+ configurable: true
5177
+ });
5178
+ Object.defineProperty(DropDownListComponent.prototype, "rounded", {
5179
+ get: function () {
5180
+ return this._rounded;
5181
+ },
5182
+ /**
5183
+ * Sets the border radius of the component.
5184
+ *
5185
+ * The possible values are:
5186
+ * * `'small'`
5187
+ * * `'medium'` (default)
5188
+ * * `'large'`
5189
+ * * `'full'`
5190
+ * * `null`
5191
+ *
5192
+ */
5193
+ set: function (rounded) {
5194
+ this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));
5195
+ if (rounded) {
5196
+ this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(rounded));
5197
+ }
5198
+ this._rounded = rounded;
5199
+ },
5200
+ enumerable: true,
5201
+ configurable: true
5202
+ });
5203
+ Object.defineProperty(DropDownListComponent.prototype, "fillMode", {
5204
+ get: function () {
5205
+ return this._fillMode;
5206
+ },
5207
+ /**
5208
+ * Sets the fillMode of the component.
5209
+ *
5210
+ * The possible values are:
5211
+ * * `'flat'`
5212
+ * * `'solid'` (default)
5213
+ * * `'outline'`
5214
+ * * `null`
5215
+ *
5216
+ */
5217
+ set: function (fillMode) {
5218
+ this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));
5219
+ if (fillMode) {
5220
+ this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', fillMode));
5221
+ }
5222
+ this._fillMode = fillMode;
5223
+ },
5224
+ enumerable: true,
5225
+ configurable: true
5226
+ });
4784
5227
  /**
4785
5228
  * @hidden
4786
5229
  */
4787
- DropDownListComponent.prototype.blurComponent = function () {
4788
- this.wrapperBlurred.emit();
5230
+ DropDownListComponent.prototype.blurComponent = function (event) {
5231
+ if (event.target !== this.wrapper.nativeElement) {
5232
+ return;
5233
+ }
5234
+ event.stopImmediatePropagation();
5235
+ this.hostElementBlurred.emit();
4789
5236
  };
4790
5237
  /**
4791
5238
  * @hidden
@@ -4796,9 +5243,13 @@ var DropDownListComponent = /** @class */ (function () {
4796
5243
  /**
4797
5244
  * @hidden
4798
5245
  */
4799
- DropDownListComponent.prototype.focusComponent = function () {
5246
+ DropDownListComponent.prototype.focusComponent = function (event) {
4800
5247
  var _this = this;
4801
- this.wrapperFocused.emit();
5248
+ if (event.target !== this.wrapper.nativeElement) {
5249
+ return;
5250
+ }
5251
+ event.stopImmediatePropagation();
5252
+ this.hostElementFocused.emit();
4802
5253
  if (!this.isFocused) {
4803
5254
  this.isFocused = true;
4804
5255
  if (hasObservers(this.onFocus)) {
@@ -4811,27 +5262,108 @@ var DropDownListComponent = /** @class */ (function () {
4811
5262
  /**
4812
5263
  * @hidden
4813
5264
  */
4814
- DropDownListComponent.prototype.keydown = function (event) {
4815
- var firstIndex = isPresent(this.defaultItem) ? -1 : 0;
4816
- var focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(firstIndex) : this.selectionService.focused;
4817
- var offset = 0;
4818
- if (this.disabled || this.readonly) {
4819
- return;
4820
- }
4821
- var isHomeEnd = event.keyCode === Keys.Home || event.keyCode === Keys.End;
4822
- var isFilterFocused = this.filterable && this.isFocused && this.isOpen;
4823
- if (isFilterFocused && isHomeEnd) {
4824
- return;
4825
- }
4826
- var hasSelected = isPresent(this.selectionService.selected[0]);
4827
- var focusedItemNotSelected = isPresent(this.selectionService.focused) && !this.selectionService.isSelected(this.selectionService.focused);
4828
- if (!hasSelected || focusedItemNotSelected) {
4829
- if (event.keyCode === Keys.ArrowDown || event.keyCode === Keys.ArrowRight) {
4830
- offset = -1;
4831
- }
4832
- else if (event.keyCode === Keys.ArrowUp || event.keyCode === Keys.ArrowLeft) {
4833
- offset = 1;
4834
- }
5265
+ DropDownListComponent.prototype.onResize = function () {
5266
+ if (this._open) {
5267
+ var popupWrapper = this.popupRef.popupElement;
5268
+ var _a = this.width, min = _a.min, max = _a.max;
5269
+ popupWrapper.style.minWidth = min;
5270
+ popupWrapper.style.width = max;
5271
+ }
5272
+ };
5273
+ Object.defineProperty(DropDownListComponent.prototype, "isDisabled", {
5274
+ get: function () {
5275
+ return this.disabled;
5276
+ },
5277
+ enumerable: true,
5278
+ configurable: true
5279
+ });
5280
+ Object.defineProperty(DropDownListComponent.prototype, "isLoading", {
5281
+ get: function () {
5282
+ return this.loading;
5283
+ },
5284
+ enumerable: true,
5285
+ configurable: true
5286
+ });
5287
+ Object.defineProperty(DropDownListComponent.prototype, "id", {
5288
+ get: function () {
5289
+ return this.focusableId;
5290
+ },
5291
+ enumerable: true,
5292
+ configurable: true
5293
+ });
5294
+ Object.defineProperty(DropDownListComponent.prototype, "dir", {
5295
+ get: function () {
5296
+ return this.direction;
5297
+ },
5298
+ enumerable: true,
5299
+ configurable: true
5300
+ });
5301
+ Object.defineProperty(DropDownListComponent.prototype, "hostTabIndex", {
5302
+ get: function () {
5303
+ return this.widgetTabIndex;
5304
+ },
5305
+ enumerable: true,
5306
+ configurable: true
5307
+ });
5308
+ Object.defineProperty(DropDownListComponent.prototype, "isReadonly", {
5309
+ get: function () {
5310
+ return this.readonly;
5311
+ },
5312
+ enumerable: true,
5313
+ configurable: true
5314
+ });
5315
+ Object.defineProperty(DropDownListComponent.prototype, "isAriaExpanded", {
5316
+ get: function () {
5317
+ return this.ariaExpanded;
5318
+ },
5319
+ enumerable: true,
5320
+ configurable: true
5321
+ });
5322
+ Object.defineProperty(DropDownListComponent.prototype, "hostAriaOwns", {
5323
+ get: function () {
5324
+ return this.ariaOwns;
5325
+ },
5326
+ enumerable: true,
5327
+ configurable: true
5328
+ });
5329
+ Object.defineProperty(DropDownListComponent.prototype, "hostAriaActivedescendant", {
5330
+ get: function () {
5331
+ return this.ariaActivedescendant;
5332
+ },
5333
+ enumerable: true,
5334
+ configurable: true
5335
+ });
5336
+ Object.defineProperty(DropDownListComponent.prototype, "hostNoDataLabel", {
5337
+ get: function () {
5338
+ return this.noDataLabel;
5339
+ },
5340
+ enumerable: true,
5341
+ configurable: true
5342
+ });
5343
+ /**
5344
+ * @hidden
5345
+ */
5346
+ DropDownListComponent.prototype.keydown = function (event) {
5347
+ var firstIndex = isPresent(this.defaultItem) ? -1 : 0;
5348
+ var focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(firstIndex) : this.selectionService.focused;
5349
+ var offset = 0;
5350
+ if (this.disabled || this.readonly) {
5351
+ return;
5352
+ }
5353
+ var isHomeEnd = event.keyCode === Keys.Home || event.keyCode === Keys.End;
5354
+ var isFilterFocused = this.filterable && this.isFocused && this.isOpen;
5355
+ if (isFilterFocused && isHomeEnd) {
5356
+ return;
5357
+ }
5358
+ var hasSelected = isPresent(this.selectionService.selected[0]);
5359
+ var focusedItemNotSelected = isPresent(this.selectionService.focused) && !this.selectionService.isSelected(this.selectionService.focused);
5360
+ if (!hasSelected || focusedItemNotSelected) {
5361
+ if (event.keyCode === Keys.ArrowDown || event.keyCode === Keys.ArrowRight) {
5362
+ offset = -1;
5363
+ }
5364
+ else if (event.keyCode === Keys.ArrowUp || event.keyCode === Keys.ArrowLeft) {
5365
+ offset = 1;
5366
+ }
4835
5367
  }
4836
5368
  var eventData = event;
4837
5369
  var action = this.navigationService.process({
@@ -4868,30 +5400,12 @@ var DropDownListComponent = /** @class */ (function () {
4868
5400
  this.focus();
4869
5401
  this.togglePopup(!this.isOpen);
4870
5402
  };
4871
- /**
4872
- * @hidden
4873
- */
4874
- DropDownListComponent.prototype.onResize = function () {
4875
- if (this._open) {
4876
- var popupWrapper = this.popupRef.popupElement;
4877
- var _a = this.width, min = _a.min, max = _a.max;
4878
- popupWrapper.style.minWidth = min;
4879
- popupWrapper.style.width = max;
4880
- }
4881
- };
4882
- Object.defineProperty(DropDownListComponent.prototype, "dir", {
4883
- get: function () {
4884
- return this.direction;
4885
- },
4886
- enumerable: true,
4887
- configurable: true
4888
- });
4889
5403
  Object.defineProperty(DropDownListComponent.prototype, "isFocused", {
4890
5404
  get: function () {
4891
5405
  return this._isFocused;
4892
5406
  },
4893
5407
  set: function (isFocused) {
4894
- this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-state-focused');
5408
+ this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');
4895
5409
  this._isFocused = isFocused;
4896
5410
  },
4897
5411
  enumerable: true,
@@ -4899,7 +5413,7 @@ var DropDownListComponent = /** @class */ (function () {
4899
5413
  });
4900
5414
  DropDownListComponent.prototype.ngOnInit = function () {
4901
5415
  var _this = this;
4902
- this.renderer.removeAttribute(this.hostElement.nativeElement, "tabindex");
5416
+ this.renderer.removeAttribute(this.wrapper.nativeElement, "tabindex");
4903
5417
  this.localizationChangesSubscription = this.localization
4904
5418
  .changes.subscribe(function (_a) {
4905
5419
  var rtl = _a.rtl;
@@ -4908,6 +5422,7 @@ var DropDownListComponent = /** @class */ (function () {
4908
5422
  });
4909
5423
  this.setMessages();
4910
5424
  this.assignAriaDescribedBy();
5425
+ this.setComponentClasses();
4911
5426
  };
4912
5427
  /**
4913
5428
  * @hidden
@@ -5089,6 +5604,36 @@ var DropDownListComponent = /** @class */ (function () {
5089
5604
  enumerable: true,
5090
5605
  configurable: true
5091
5606
  });
5607
+ Object.defineProperty(DropDownListComponent.prototype, "selectButtonClasses", {
5608
+ /**
5609
+ * @hidden
5610
+ */
5611
+ get: function () {
5612
+ return (this.size ? getSizeClass('button', this.size) : '') + " " + (this.fillMode ? 'k-button-' + this.fillMode : '') + " " + (this.fillMode ? 'k-button-' + this.fillMode + '-base' : '');
5613
+ },
5614
+ enumerable: true,
5615
+ configurable: true
5616
+ });
5617
+ Object.defineProperty(DropDownListComponent.prototype, "filterInputClasses", {
5618
+ /**
5619
+ * @hidden
5620
+ */
5621
+ get: function () {
5622
+ return (this.size ? getSizeClass('input', this.size) : '') + " " + (this.fillMode ? 'k-input-' + this.fillMode : '') + " " + (this.rounded ? getRoundedClass(this.rounded) : '');
5623
+ },
5624
+ enumerable: true,
5625
+ configurable: true
5626
+ });
5627
+ Object.defineProperty(DropDownListComponent.prototype, "optionLabelSizeClass", {
5628
+ /**
5629
+ * @hidden
5630
+ */
5631
+ get: function () {
5632
+ return "" + (this.size ? getSizeClass('list', this.size) : '');
5633
+ },
5634
+ enumerable: true,
5635
+ configurable: true
5636
+ });
5092
5637
  Object.defineProperty(DropDownListComponent.prototype, "listContainerClasses", {
5093
5638
  /**
5094
5639
  * @hidden
@@ -5236,13 +5781,13 @@ var DropDownListComponent = /** @class */ (function () {
5236
5781
  .subscribe(this.handleEnter.bind(this));
5237
5782
  this.escSubscription = this.navigationService.esc
5238
5783
  .subscribe(this.handleEscape.bind(this));
5239
- this.filterBlurredSubscription = this.filterBlurred.pipe(concatMap(function () { return interval(10).pipe(take(1), takeUntil(_this.wrapperFocused)); }))
5784
+ this.filterBlurredSubscription = this.filterBlurred.pipe(concatMap(function () { return interval(10).pipe(take(1), takeUntil(_this.hostElementFocused)); }))
5240
5785
  .subscribe(function () {
5241
- _this.wrapperBlurred.emit();
5786
+ _this.hostElementBlurred.emit();
5242
5787
  });
5243
5788
  this._zone.runOutsideAngular(function () {
5244
5789
  _this.componentBlurredSubscription =
5245
- merge(_this.wrapperBlurred.pipe(concatMap(function () { return interval(10).pipe(take(1), takeUntil(_this.filterFocused)); })), _this.navigationService.tab).pipe(tap(function (event) { return event instanceof NavigationEvent && _this.focus(); }), filter(function () { return _this.isFocused; }))
5790
+ merge(_this.hostElementBlurred.pipe(concatMap(function () { return interval(10).pipe(take(1), takeUntil(_this.filterFocused)); })), _this.navigationService.tab).pipe(tap(function (event) { return event instanceof NavigationEvent && _this.focus(); }), filter(function () { return _this.isFocused; }))
5246
5791
  .subscribe(function () { return _this.componentBlur(); });
5247
5792
  });
5248
5793
  };
@@ -5255,7 +5800,7 @@ var DropDownListComponent = /** @class */ (function () {
5255
5800
  // Roll up DropDownList on iOS when tapped outside
5256
5801
  return _this.touchstartDisposeHandler = _this.renderer.listen(document, 'touchstart', function (e) {
5257
5802
  var target = e.target;
5258
- if (_this.isFocused && !inDropDown(_this.hostElement, target, _this.popupRef)) {
5803
+ if (_this.isFocused && !inDropDown(_this.wrapper, target, _this.popupRef)) {
5259
5804
  _this._zone.run(function () {
5260
5805
  if (_this.filterFocused) {
5261
5806
  // Close popup if filter is focused
@@ -5267,6 +5812,25 @@ var DropDownListComponent = /** @class */ (function () {
5267
5812
  });
5268
5813
  });
5269
5814
  };
5815
+ DropDownListComponent.prototype.subscribeFocusEvents = function () {
5816
+ var _this = this;
5817
+ if (isDocumentAvailable()) {
5818
+ this.focusComponent = this.focusComponent.bind(this);
5819
+ this.blurComponent = this.blurComponent.bind(this);
5820
+ this._zone.runOutsideAngular(function () {
5821
+ var useCapture = true;
5822
+ document.addEventListener('focus', _this.focusComponent, useCapture);
5823
+ document.addEventListener('blur', _this.blurComponent, useCapture);
5824
+ });
5825
+ }
5826
+ };
5827
+ DropDownListComponent.prototype.unSubscribeFocusEvents = function () {
5828
+ if (isDocumentAvailable()) {
5829
+ var useCapture = true;
5830
+ document.removeEventListener('focus', this.focusComponent, useCapture);
5831
+ document.removeEventListener('blur', this.blurComponent, useCapture);
5832
+ }
5833
+ };
5270
5834
  DropDownListComponent.prototype.unsubscribeEvents = function () {
5271
5835
  if (!isDocumentAvailable()) {
5272
5836
  return;
@@ -5278,6 +5842,7 @@ var DropDownListComponent = /** @class */ (function () {
5278
5842
  this.escSubscription.unsubscribe();
5279
5843
  this.componentBlurredSubscription.unsubscribe();
5280
5844
  this.filterBlurredSubscription.unsubscribe();
5845
+ this.unSubscribeFocusEvents();
5281
5846
  if (this.touchstartDisposeHandler) {
5282
5847
  this.touchstartDisposeHandler();
5283
5848
  }
@@ -5370,7 +5935,7 @@ var DropDownListComponent = /** @class */ (function () {
5370
5935
  hasObservers(this.close) ||
5371
5936
  hasObservers(this.onBlur) ||
5372
5937
  hasObservers(this.filterChange) ||
5373
- isUntouched(this.hostElement.nativeElement)) {
5938
+ isUntouched(this.wrapper.nativeElement)) {
5374
5939
  this._zone.run(function () {
5375
5940
  if (valueHasChanged) {
5376
5941
  _this.selectionService.change(_this.selectionService.selected[0]);
@@ -5554,6 +6119,17 @@ var DropDownListComponent = /** @class */ (function () {
5554
6119
  var newValue = (this.valueLabelId + " " + trimmed).trim();
5555
6120
  this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);
5556
6121
  };
6122
+ DropDownListComponent.prototype.setComponentClasses = function () {
6123
+ if (this.size) {
6124
+ this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));
6125
+ }
6126
+ if (this.rounded) {
6127
+ this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));
6128
+ }
6129
+ if (this.fillMode) {
6130
+ this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));
6131
+ }
6132
+ };
5557
6133
  var DropDownListComponent_1;
5558
6134
  __decorate([
5559
6135
  Input(),
@@ -5642,6 +6218,21 @@ var DropDownListComponent = /** @class */ (function () {
5642
6218
  __metadata("design:type", Number),
5643
6219
  __metadata("design:paramtypes", [Number])
5644
6220
  ], DropDownListComponent.prototype, "tabIndex", null);
6221
+ __decorate([
6222
+ Input(),
6223
+ __metadata("design:type", String),
6224
+ __metadata("design:paramtypes", [String])
6225
+ ], DropDownListComponent.prototype, "size", null);
6226
+ __decorate([
6227
+ Input(),
6228
+ __metadata("design:type", String),
6229
+ __metadata("design:paramtypes", [String])
6230
+ ], DropDownListComponent.prototype, "rounded", null);
6231
+ __decorate([
6232
+ Input(),
6233
+ __metadata("design:type", String),
6234
+ __metadata("design:paramtypes", [String])
6235
+ ], DropDownListComponent.prototype, "fillMode", null);
5645
6236
  __decorate([
5646
6237
  Output(),
5647
6238
  __metadata("design:type", EventEmitter)
@@ -5714,24 +6305,90 @@ var DropDownListComponent = /** @class */ (function () {
5714
6305
  ViewChild('popupTemplate', { static: true }),
5715
6306
  __metadata("design:type", TemplateRef)
5716
6307
  ], DropDownListComponent.prototype, "popupTemplate", void 0);
5717
- __decorate([
5718
- ViewChild('wrapper', { static: true }),
5719
- __metadata("design:type", ElementRef)
5720
- ], DropDownListComponent.prototype, "wrapper", void 0);
5721
6308
  __decorate([
5722
6309
  ViewChild('optionsList', { static: false }),
5723
6310
  __metadata("design:type", ListComponent)
5724
6311
  ], DropDownListComponent.prototype, "optionsList", void 0);
5725
6312
  __decorate([
5726
- HostBinding('class.k-widget'),
5727
- HostBinding('class.k-dropdown'),
6313
+ HostBinding('class.k-dropdownlist'),
6314
+ HostBinding('class.k-picker'),
5728
6315
  __metadata("design:type", Boolean)
5729
- ], DropDownListComponent.prototype, "widgetClasses", void 0);
6316
+ ], DropDownListComponent.prototype, "hostClasses", void 0);
6317
+ __decorate([
6318
+ HostBinding('class.k-disabled'),
6319
+ HostBinding('attr.aria-disabled'),
6320
+ __metadata("design:type", Boolean),
6321
+ __metadata("design:paramtypes", [])
6322
+ ], DropDownListComponent.prototype, "isDisabled", null);
6323
+ __decorate([
6324
+ HostBinding('class.k-loading'),
6325
+ __metadata("design:type", Boolean),
6326
+ __metadata("design:paramtypes", [])
6327
+ ], DropDownListComponent.prototype, "isLoading", null);
6328
+ __decorate([
6329
+ HostBinding('attr.id'),
6330
+ __metadata("design:type", String),
6331
+ __metadata("design:paramtypes", [])
6332
+ ], DropDownListComponent.prototype, "id", null);
5730
6333
  __decorate([
5731
6334
  HostBinding('attr.dir'),
5732
6335
  __metadata("design:type", String),
5733
6336
  __metadata("design:paramtypes", [])
5734
6337
  ], DropDownListComponent.prototype, "dir", null);
6338
+ __decorate([
6339
+ HostBinding('attr.tabindex'),
6340
+ __metadata("design:type", Number),
6341
+ __metadata("design:paramtypes", [])
6342
+ ], DropDownListComponent.prototype, "hostTabIndex", null);
6343
+ __decorate([
6344
+ HostBinding('attr.readonly'),
6345
+ HostBinding('attr.aria-readonly'),
6346
+ __metadata("design:type", Boolean),
6347
+ __metadata("design:paramtypes", [])
6348
+ ], DropDownListComponent.prototype, "isReadonly", null);
6349
+ __decorate([
6350
+ HostBinding('attr.role'),
6351
+ HostBinding('attr.aria-haspopup'),
6352
+ __metadata("design:type", String)
6353
+ ], DropDownListComponent.prototype, "role", void 0);
6354
+ __decorate([
6355
+ HostBinding('attr.aria-expanded'),
6356
+ __metadata("design:type", Boolean),
6357
+ __metadata("design:paramtypes", [])
6358
+ ], DropDownListComponent.prototype, "isAriaExpanded", null);
6359
+ __decorate([
6360
+ HostBinding('attr.aria-owns'),
6361
+ __metadata("design:type", String),
6362
+ __metadata("design:paramtypes", [])
6363
+ ], DropDownListComponent.prototype, "hostAriaOwns", null);
6364
+ __decorate([
6365
+ HostBinding('attr.aria-activedescendant'),
6366
+ __metadata("design:type", String),
6367
+ __metadata("design:paramtypes", [])
6368
+ ], DropDownListComponent.prototype, "hostAriaActivedescendant", null);
6369
+ __decorate([
6370
+ HostBinding('attr.aria-label'),
6371
+ __metadata("design:type", String),
6372
+ __metadata("design:paramtypes", [])
6373
+ ], DropDownListComponent.prototype, "hostNoDataLabel", null);
6374
+ __decorate([
6375
+ HostListener('keydown', ['$event']),
6376
+ __metadata("design:type", Function),
6377
+ __metadata("design:paramtypes", [Object]),
6378
+ __metadata("design:returntype", void 0)
6379
+ ], DropDownListComponent.prototype, "keydown", null);
6380
+ __decorate([
6381
+ HostListener('keypress', ['$event']),
6382
+ __metadata("design:type", Function),
6383
+ __metadata("design:paramtypes", [Object]),
6384
+ __metadata("design:returntype", void 0)
6385
+ ], DropDownListComponent.prototype, "keypress", null);
6386
+ __decorate([
6387
+ HostListener('click', ['$event']),
6388
+ __metadata("design:type", Function),
6389
+ __metadata("design:paramtypes", [MouseEvent]),
6390
+ __metadata("design:returntype", void 0)
6391
+ ], DropDownListComponent.prototype, "click", null);
5735
6392
  DropDownListComponent = DropDownListComponent_1 = __decorate([
5736
6393
  Component({
5737
6394
  exportAs: 'kendoDropDownList',
@@ -5754,10 +6411,11 @@ var DropDownListComponent = /** @class */ (function () {
5754
6411
  }
5755
6412
  ],
5756
6413
  selector: 'kendo-dropdownlist',
5757
- template: "\n <ng-container kendoDropDownListLocalizedMessages\n i18n-noDataText=\"kendo.dropdownlist.noDataText|The text displayed in the popup when there are no items\"\n noDataText=\"NO DATA FOUND\"\n >\n </ng-container>\n <span #wrapper unselectable=\"on\"\n role=\"listbox\"\n [id]=\"focusableId\"\n [ngClass]=\"{\n 'k-dropdown-wrap': true,\n 'k-state-disabled': this.disabled\n }\"\n [attr.dir]=\"direction\"\n [attr.readonly]=\"readonly\"\n [attr.tabindex]=\"widgetTabIndex\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-readonly]=\"readonly\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.aria-activedescendant]=\"ariaActivedescendant\"\n [attr.aria-label]=\"noDataLabel\"\n (keydown)=\"keydown($event)\"\n (keypress)=\"keypress($event)\"\n (click)=\"click($event)\"\n [kendoEventsOutsideAngular]=\"{\n focus: focusComponent,\n blur: blurComponent\n }\"\n [scope]=\"this\"\n >\n <span class=\"k-input\" unselectable=\"on\" [id]=\"valueLabelId\">\n <ng-template *ngIf=\"valueTemplate\"\n [templateContext]=\"{\n templateRef: valueTemplate.templateRef,\n $implicit: dataItem\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!valueTemplate\">{{ getText() }}</ng-template>\n </span>\n <span class=\"k-select\" unselectable=\"on\">\n <span\n class=\"k-icon\"\n unselectable=\"on\"\n [ngClass]=\"buttonClasses\"\n >\n </span>\n </span>\n <ng-template #popupTemplate>\n <!--filterable-->\n\n <ng-template [ngIf]=\"filterable\">\n <span class=\"k-list-filter\" (click)=\"$event.stopImmediatePropagation()\">\n <input\n [attr.aria-owns]=\"ariaOwns\"\n [attr.aria-activedescendant]=\"ariaActivedescendant\"\n [attr.aria-label]=\"noDataLabel\"\n tabindex=\"-1\"\n [filterInput]=\"isFocused && !touchEnabled\"\n [dir]=\"direction\"\n [(ngModel)]=\"filterText\"\n class=\"k-textbox\"\n (keydown)=\"keydown($event)\"\n (input)=\"handleFilter($event)\"\n (focus)=\"onFilterFocus()\"\n (blur)=\"blurFilterInput()\" />\n <span class=\"k-icon k-i-search\" unselectable=\"on\"></span>\n </span>\n </ng-template>\n <!--default item-->\n <ng-template [ngIf]=\"defaultItem && !itemTemplate\">\n <div class=\"k-list-optionlabel\" [ngClass]=\"{ 'k-state-disabled': isDisabledDefaultItem }\" kendoDropDownsSelectable [index]=\"-1\">\n {{ getDefaultItemText() }}\n </div>\n </ng-template>\n <ng-template [ngIf]=\"defaultItem && itemTemplate\">\n <div class=\"k-list-optionlabel\" [ngClass]=\"{ 'k-state-disabled': isDisabledDefaultItem }\" kendoDropDownsSelectable [index]=\"-1\">\n <ng-template\n [templateContext]=\"{\n templateRef: itemTemplate.templateRef,\n $implicit: defaultItem\n }\">\n </ng-template>\n </div>\n </ng-template>\n <!--header template-->\n <ng-template *ngIf=\"headerTemplate\"\n [templateContext]=\"{\n templateRef: headerTemplate.templateRef\n }\">\n </ng-template>\n <!--list-->\n <kendo-list\n #optionsList\n [id]=\"listBoxId\"\n [optionPrefix]=\"optionPrefix\"\n [data]=\"data\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [template]=\"itemTemplate\"\n [groupTemplate]=\"groupTemplate\"\n [fixedGroupTemplate]=\"fixedGroupTemplate\"\n [height]=\"listHeight\"\n [show]=\"isOpen\"\n [virtual]=\"virtual\"\n (pageChange)=\"pageChange($event)\"\n >\n </kendo-list>\n <!--no-data template-->\n <div class=\"k-nodata\" *ngIf=\"data.length === 0\">\n <ng-template [ngIf]=\"noDataTemplate\"\n [templateContext]=\"{\n templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!noDataTemplate\">\n <div>{{ noDataText }}</div>\n </ng-template>\n </div>\n <!--footer template-->\n <ng-template *ngIf=\"footerTemplate\"\n [templateContext]=\"{\n templateRef: footerTemplate.templateRef\n }\">\n </ng-template>\n </ng-template>\n </span>\n <ng-template [ngIf]=\"isOpen\">\n <kendo-resize-sensor (resize)=\"onResize()\"></kendo-resize-sensor>\n </ng-template>\n <ng-container #container></ng-container>\n "
6414
+ template: "\n <ng-container kendoDropDownListLocalizedMessages\n i18n-noDataText=\"kendo.dropdownlist.noDataText|The text displayed in the popup when there are no items\"\n noDataText=\"NO DATA FOUND\"\n >\n </ng-container>\n <span class=\"k-input-inner\" unselectable=\"on\" [id]=\"valueLabelId\">\n <span class=\"k-input-value-text\">\n <ng-template *ngIf=\"valueTemplate\"\n [templateContext]=\"{\n templateRef: valueTemplate.templateRef,\n $implicit: dataItem\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!valueTemplate\">{{ getText() }}</ng-template>\n </span>\n </span>\n <button\n tabindex=\"-1\"\n unselectable=\"on\"\n type=\"button\"\n class=\"k-input-button k-button k-icon-button\"\n [ngClass]=\"selectButtonClasses\"\n [kendoEventsOutsideAngular]=\"{\n mousedown: onMouseDown\n }\"\n >\n <span\n class=\"k-button-icon k-icon\"\n unselectable=\"on\"\n [ngClass]=\"buttonClasses\"\n ></span>\n </button>\n <ng-template #popupTemplate>\n <!--filterable-->\n\n <ng-template [ngIf]=\"filterable\">\n <div class=\"k-list-filter\" (click)=\"$event.stopImmediatePropagation()\">\n <span\n class=\"k-searchbox k-input\"\n [ngClass]=\"filterInputClasses\"\n >\n <span class=\"k-input-icon k-icon k-i-search\" unselectable=\"on\"></span>\n <input\n [attr.aria-owns]=\"ariaOwns\"\n [attr.aria-activedescendant]=\"ariaActivedescendant\"\n [attr.aria-label]=\"noDataLabel\"\n tabindex=\"-1\"\n [filterInput]=\"isFocused && !touchEnabled\"\n [dir]=\"direction\"\n [(ngModel)]=\"filterText\"\n class=\"k-input-inner\"\n (keydown)=\"keydown($event)\"\n (input)=\"handleFilter($event)\"\n (focus)=\"onFilterFocus()\"\n (blur)=\"blurFilterInput()\" />\n </span>\n </div>\n </ng-template>\n <!--default item-->\n <ng-template [ngIf]=\"defaultItem && !itemTemplate\">\n <div\n class=\"k-list\"\n [ngClass]=\"optionLabelSizeClass\"\n >\n <div class=\"k-list-optionlabel k-list-item\" [ngClass]=\"{ 'k-disabled': isDisabledDefaultItem }\" kendoDropDownsSelectable [index]=\"-1\">\n {{ getDefaultItemText() }}\n </div>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"defaultItem && itemTemplate\">\n <div\n class=\"k-list\"\n [ngClass]=\"optionLabelSizeClass\"\n >\n <div class=\"k-list-optionlabel k-list-item\" [ngClass]=\"{ 'k-disabled': isDisabledDefaultItem }\" kendoDropDownsSelectable [index]=\"-1\">\n <ng-template\n [templateContext]=\"{\n templateRef: itemTemplate.templateRef,\n $implicit: defaultItem\n }\">\n </ng-template>\n </div>\n </div>\n </ng-template>\n <!--header template-->\n <ng-template *ngIf=\"headerTemplate\"\n [templateContext]=\"{\n templateRef: headerTemplate.templateRef\n }\">\n </ng-template>\n <!--list-->\n <kendo-list\n #optionsList\n [size]=\"size\"\n [rounded]=\"rounded\"\n [id]=\"listBoxId\"\n [optionPrefix]=\"optionPrefix\"\n [data]=\"data\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [template]=\"itemTemplate\"\n [groupTemplate]=\"groupTemplate\"\n [fixedGroupTemplate]=\"fixedGroupTemplate\"\n [height]=\"listHeight\"\n [show]=\"isOpen\"\n [virtual]=\"virtual\"\n (pageChange)=\"pageChange($event)\"\n >\n </kendo-list>\n <!--no-data template-->\n <div class=\"k-no-data\" *ngIf=\"data.length === 0\">\n <ng-template [ngIf]=\"noDataTemplate\"\n [templateContext]=\"{\n templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!noDataTemplate\">\n <div>{{ noDataText }}</div>\n </ng-template>\n </div>\n <!--footer template-->\n <ng-template *ngIf=\"footerTemplate\"\n [templateContext]=\"{\n templateRef: footerTemplate.templateRef\n }\">\n </ng-template>\n </ng-template>\n <ng-template [ngIf]=\"isOpen\">\n <kendo-resize-sensor (resize)=\"onResize()\"></kendo-resize-sensor>\n </ng-template>\n <ng-container #container></ng-container>\n "
5758
6415
  }),
5759
6416
  __param(10, Optional()), __param(10, Inject(TOUCH_ENABLED)),
5760
- __metadata("design:paramtypes", [LocalizationService,
6417
+ __metadata("design:paramtypes", [ElementRef,
6418
+ LocalizationService,
5761
6419
  PopupService,
5762
6420
  SelectionService,
5763
6421
  NavigationService,
@@ -5765,7 +6423,6 @@ var DropDownListComponent = /** @class */ (function () {
5765
6423
  DataService,
5766
6424
  NgZone,
5767
6425
  Renderer2,
5768
- ElementRef,
5769
6426
  ChangeDetectorRef, Boolean])
5770
6427
  ], DropDownListComponent);
5771
6428
  return DropDownListComponent;
@@ -5942,8 +6599,9 @@ var MULTISELECT_VALUE_ACCESSOR = {
5942
6599
  * ```
5943
6600
  */
5944
6601
  var MultiSelectComponent = /** @class */ (function () {
5945
- function MultiSelectComponent(localization, popupService, dataService, selectionService, navigationService, disabledItemsService, cdr, differs, renderer, hostElement, _zone, touchEnabled$$1) {
6602
+ function MultiSelectComponent(wrapper, localization, popupService, dataService, selectionService, navigationService, disabledItemsService, cdr, differs, renderer, _zone, touchEnabled$$1) {
5946
6603
  var _this = this;
6604
+ this.wrapper = wrapper;
5947
6605
  this.localization = localization;
5948
6606
  this.popupService = popupService;
5949
6607
  this.dataService = dataService;
@@ -5953,7 +6611,6 @@ var MultiSelectComponent = /** @class */ (function () {
5953
6611
  this.cdr = cdr;
5954
6612
  this.differs = differs;
5955
6613
  this.renderer = renderer;
5956
- this.hostElement = hostElement;
5957
6614
  this._zone = _zone;
5958
6615
  this.touchEnabled = touchEnabled$$1;
5959
6616
  this.listBoxId = guid$1();
@@ -6114,8 +6771,11 @@ var MultiSelectComponent = /** @class */ (function () {
6114
6771
  * This event is preventable. If you cancel it, the tag will not be removed.
6115
6772
  */
6116
6773
  this.removeTag = new EventEmitter();
6117
- this.widgetClasses = true;
6774
+ this.hostClasses = true;
6118
6775
  this.initialized = false;
6776
+ this._size = 'medium';
6777
+ this._rounded = 'medium';
6778
+ this._fillMode = 'solid';
6119
6779
  this.onChangeCallback = function (_) { };
6120
6780
  this.onTouchedCallback = function (_) { };
6121
6781
  this._placeholder = '';
@@ -6192,7 +6852,7 @@ var MultiSelectComponent = /** @class */ (function () {
6192
6852
  if (hasObservers(this.onBlur) ||
6193
6853
  hasObservers(this.filterChange) ||
6194
6854
  hasObservers(this.close) ||
6195
- isUntouched(this.hostElement.nativeElement)) {
6855
+ isUntouched(this.wrapper.nativeElement)) {
6196
6856
  this._zone.run(function () {
6197
6857
  _this.closePopup();
6198
6858
  if (!(_this.isOpen && _this.allowCustom)) {
@@ -6209,22 +6869,6 @@ var MultiSelectComponent = /** @class */ (function () {
6209
6869
  this.closePopup();
6210
6870
  }
6211
6871
  };
6212
- /**
6213
- * @hidden
6214
- */
6215
- MultiSelectComponent.prototype.wrapperMousedown = function (event) {
6216
- var inputElement = this.searchbar.input.nativeElement;
6217
- if (event.button === 0) {
6218
- if (this.isFocused && this.isOpen && event.target === inputElement) {
6219
- return;
6220
- }
6221
- if (!this.touchEnabled || (this.touchEnabled && event.target.tagName !== 'SPAN')) {
6222
- this.searchbar.focus();
6223
- }
6224
- this.togglePopup(!this.isOpen);
6225
- event.preventDefault();
6226
- }
6227
- };
6228
6872
  /**
6229
6873
  * @hidden
6230
6874
  */
@@ -6318,6 +6962,79 @@ var MultiSelectComponent = /** @class */ (function () {
6318
6962
  enumerable: true,
6319
6963
  configurable: true
6320
6964
  });
6965
+ Object.defineProperty(MultiSelectComponent.prototype, "size", {
6966
+ get: function () {
6967
+ return this._size;
6968
+ },
6969
+ /**
6970
+ * Sets the size of the component.
6971
+ *
6972
+ * The possible values are:
6973
+ * * `'small'`
6974
+ * * `'medium'` (default)
6975
+ * * `'large'`
6976
+ * * `null`
6977
+ *
6978
+ */
6979
+ set: function (size) {
6980
+ this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));
6981
+ if (size) {
6982
+ this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', size));
6983
+ }
6984
+ this._size = size;
6985
+ },
6986
+ enumerable: true,
6987
+ configurable: true
6988
+ });
6989
+ Object.defineProperty(MultiSelectComponent.prototype, "rounded", {
6990
+ get: function () {
6991
+ return this._rounded;
6992
+ },
6993
+ /**
6994
+ * Sets the border radius of the component.
6995
+ *
6996
+ * The possible values are:
6997
+ * * `'small'`
6998
+ * * `'medium'` (default)
6999
+ * * `'large'`
7000
+ * * `'full'`
7001
+ * * `null`
7002
+ *
7003
+ */
7004
+ set: function (rounded) {
7005
+ this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));
7006
+ if (rounded) {
7007
+ this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(rounded));
7008
+ }
7009
+ this._rounded = rounded;
7010
+ },
7011
+ enumerable: true,
7012
+ configurable: true
7013
+ });
7014
+ Object.defineProperty(MultiSelectComponent.prototype, "fillMode", {
7015
+ get: function () {
7016
+ return this._fillMode;
7017
+ },
7018
+ /**
7019
+ * Sets the fillMode of the component.
7020
+ *
7021
+ * The possible values are:
7022
+ * * `'flat'`
7023
+ * * `'solid'` (default)
7024
+ * * `'outline'`
7025
+ * * `null`
7026
+ *
7027
+ */
7028
+ set: function (fillMode) {
7029
+ this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));
7030
+ if (fillMode) {
7031
+ this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', fillMode));
7032
+ }
7033
+ this._fillMode = fillMode;
7034
+ },
7035
+ enumerable: true,
7036
+ configurable: true
7037
+ });
6321
7038
  Object.defineProperty(MultiSelectComponent.prototype, "placeholder", {
6322
7039
  get: function () {
6323
7040
  return this.selectedDataItems.length ? '' : this._placeholder;
@@ -6424,6 +7141,29 @@ var MultiSelectComponent = /** @class */ (function () {
6424
7141
  enumerable: true,
6425
7142
  configurable: true
6426
7143
  });
7144
+ Object.defineProperty(MultiSelectComponent.prototype, "isLoading", {
7145
+ get: function () {
7146
+ return this.loading;
7147
+ },
7148
+ enumerable: true,
7149
+ configurable: true
7150
+ });
7151
+ /**
7152
+ * @hidden
7153
+ */
7154
+ MultiSelectComponent.prototype.hostMousedown = function (event) {
7155
+ var inputElement = this.searchbar.input.nativeElement;
7156
+ if (event.button === 0) {
7157
+ if (this.isFocused && this.isOpen && event.target === inputElement) {
7158
+ return;
7159
+ }
7160
+ if (!this.touchEnabled || (this.touchEnabled && event.target.tagName !== 'SPAN')) {
7161
+ this.searchbar.focus();
7162
+ }
7163
+ this.togglePopup(!this.isOpen);
7164
+ event.preventDefault();
7165
+ }
7166
+ };
6427
7167
  Object.defineProperty(MultiSelectComponent.prototype, "listContainerClasses", {
6428
7168
  get: function () {
6429
7169
  var containerClasses = ['k-list-container', 'k-reset'];
@@ -6435,6 +7175,16 @@ var MultiSelectComponent = /** @class */ (function () {
6435
7175
  enumerable: true,
6436
7176
  configurable: true
6437
7177
  });
7178
+ Object.defineProperty(MultiSelectComponent.prototype, "customItemSizeClass", {
7179
+ /**
7180
+ * @hidden
7181
+ */
7182
+ get: function () {
7183
+ return "" + (this.size ? getSizeClass('list', this.size) : '');
7184
+ },
7185
+ enumerable: true,
7186
+ configurable: true
7187
+ });
6438
7188
  Object.defineProperty(MultiSelectComponent.prototype, "width", {
6439
7189
  get: function () {
6440
7190
  var wrapperOffsetWidth = 0;
@@ -6708,7 +7458,7 @@ var MultiSelectComponent = /** @class */ (function () {
6708
7458
  };
6709
7459
  MultiSelectComponent.prototype.ngOnInit = function () {
6710
7460
  var _this = this;
6711
- this.renderer.removeAttribute(this.hostElement.nativeElement, "tabindex");
7461
+ this.renderer.removeAttribute(this.wrapper.nativeElement, "tabindex");
6712
7462
  this.createCustomValueStream();
6713
7463
  this.localizationChangeSubscription = this.localization
6714
7464
  .changes.subscribe(function (_a) {
@@ -6718,6 +7468,7 @@ var MultiSelectComponent = /** @class */ (function () {
6718
7468
  });
6719
7469
  this.setMessages();
6720
7470
  this.setState(this.value);
7471
+ this.setComponentClasses();
6721
7472
  this.initialized = true;
6722
7473
  };
6723
7474
  MultiSelectComponent.prototype.ngOnChanges = function (changes) {
@@ -6814,7 +7565,7 @@ var MultiSelectComponent = /** @class */ (function () {
6814
7565
  return this._isFocused;
6815
7566
  },
6816
7567
  set: function (isFocused) {
6817
- this.renderer[isFocused ? 'addClass' : 'removeClass'](this.hostElement.nativeElement, 'k-state-focused');
7568
+ this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');
6818
7569
  this._isFocused = isFocused;
6819
7570
  },
6820
7571
  enumerable: true,
@@ -6853,7 +7604,7 @@ var MultiSelectComponent = /** @class */ (function () {
6853
7604
  // Roll up MultiSelect on iOS when tapped outside
6854
7605
  return _this.touchstartDisposeHandler = _this.renderer.listen(document, 'touchstart', function (e) {
6855
7606
  var target = e.target;
6856
- if ((_this.isFocused || _this.isOpen) && !inDropDown(_this.hostElement, target, _this.popupRef)) {
7607
+ if ((_this.isFocused || _this.isOpen) && !inDropDown(_this.wrapper, target, _this.popupRef)) {
6857
7608
  _this._zone.run(function () {
6858
7609
  _this.blur();
6859
7610
  if (_this.isOpen) {
@@ -7231,6 +7982,17 @@ var MultiSelectComponent = /** @class */ (function () {
7231
7982
  });
7232
7983
  });
7233
7984
  };
7985
+ MultiSelectComponent.prototype.setComponentClasses = function () {
7986
+ if (this.size) {
7987
+ this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));
7988
+ }
7989
+ if (this.rounded) {
7990
+ this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));
7991
+ }
7992
+ if (this.fillMode) {
7993
+ this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));
7994
+ }
7995
+ };
7234
7996
  var MultiSelectComponent_1;
7235
7997
  __decorate([
7236
7998
  Input(),
@@ -7271,6 +8033,21 @@ var MultiSelectComponent = /** @class */ (function () {
7271
8033
  __metadata("design:type", Number),
7272
8034
  __metadata("design:paramtypes", [Number])
7273
8035
  ], MultiSelectComponent.prototype, "tabIndex", null);
8036
+ __decorate([
8037
+ Input(),
8038
+ __metadata("design:type", String),
8039
+ __metadata("design:paramtypes", [String])
8040
+ ], MultiSelectComponent.prototype, "size", null);
8041
+ __decorate([
8042
+ Input(),
8043
+ __metadata("design:type", String),
8044
+ __metadata("design:paramtypes", [String])
8045
+ ], MultiSelectComponent.prototype, "rounded", null);
8046
+ __decorate([
8047
+ Input(),
8048
+ __metadata("design:type", String),
8049
+ __metadata("design:paramtypes", [String])
8050
+ ], MultiSelectComponent.prototype, "fillMode", null);
7274
8051
  __decorate([
7275
8052
  Input(),
7276
8053
  __metadata("design:type", String),
@@ -7381,10 +8158,6 @@ var MultiSelectComponent = /** @class */ (function () {
7381
8158
  ViewChild('popupTemplate', { static: true }),
7382
8159
  __metadata("design:type", TemplateRef)
7383
8160
  ], MultiSelectComponent.prototype, "popupTemplate", void 0);
7384
- __decorate([
7385
- ViewChild('wrapper', { static: true }),
7386
- __metadata("design:type", ElementRef)
7387
- ], MultiSelectComponent.prototype, "wrapper", void 0);
7388
8161
  __decorate([
7389
8162
  ViewChild('optionsList', { static: false }),
7390
8163
  __metadata("design:type", ListComponent)
@@ -7426,20 +8199,31 @@ var MultiSelectComponent = /** @class */ (function () {
7426
8199
  __metadata("design:type", NoDataTemplateDirective)
7427
8200
  ], MultiSelectComponent.prototype, "noDataTemplate", void 0);
7428
8201
  __decorate([
7429
- HostBinding('class.k-widget'),
7430
8202
  HostBinding('class.k-multiselect'),
8203
+ HostBinding('class.k-input'),
7431
8204
  __metadata("design:type", Boolean)
7432
- ], MultiSelectComponent.prototype, "widgetClasses", void 0);
8205
+ ], MultiSelectComponent.prototype, "hostClasses", void 0);
7433
8206
  __decorate([
7434
8207
  HostBinding('attr.dir'),
7435
8208
  __metadata("design:type", String),
7436
8209
  __metadata("design:paramtypes", [])
7437
8210
  ], MultiSelectComponent.prototype, "dir", null);
7438
8211
  __decorate([
7439
- HostBinding('class.k-state-disabled'),
8212
+ HostBinding('class.k-disabled'),
7440
8213
  __metadata("design:type", Boolean),
7441
8214
  __metadata("design:paramtypes", [])
7442
8215
  ], MultiSelectComponent.prototype, "disabledClass", null);
8216
+ __decorate([
8217
+ HostBinding('class.k-loading'),
8218
+ __metadata("design:type", Boolean),
8219
+ __metadata("design:paramtypes", [])
8220
+ ], MultiSelectComponent.prototype, "isLoading", null);
8221
+ __decorate([
8222
+ HostListener('mousedown', ['$event']),
8223
+ __metadata("design:type", Function),
8224
+ __metadata("design:paramtypes", [Object]),
8225
+ __metadata("design:returntype", void 0)
8226
+ ], MultiSelectComponent.prototype, "hostMousedown", null);
7443
8227
  MultiSelectComponent = MultiSelectComponent_1 = __decorate([
7444
8228
  Component({
7445
8229
  exportAs: 'kendoMultiSelect',
@@ -7462,10 +8246,11 @@ var MultiSelectComponent = /** @class */ (function () {
7462
8246
  }
7463
8247
  ],
7464
8248
  selector: 'kendo-multiselect',
7465
- template: "\n <ng-container kendoMultiSelectLocalizedMessages\n i18n-noDataText=\"kendo.multiselect.noDataText|The text displayed in the popup when there are no items\"\n noDataText=\"NO DATA FOUND\"\n\n i18n-clearTitle=\"kendo.combobox.clearTitle|The title of the clear button\"\n clearTitle=\"clear\"\n >\n </ng-container>\n <div class=\"k-multiselect-wrap k-floatwrap\"\n #wrapper\n (mousedown)=\"wrapperMousedown($event)\"\n >\n <kendo-taglist\n [id]=\"tagListId\"\n [tags]=\"tags\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [focused]=\"focusedTagIndex\"\n [disabled]=\"disabled\"\n [template]=\"tagTemplate\"\n [groupTemplate]=\"groupTagTemplate\"\n [tagPrefix]=\"tagPrefix\"\n [disabledIndices]=\"disabledIndices\"\n (removeTag)=\"handleRemoveTag($event)\"\n >\n </kendo-taglist>\n <kendo-searchbar\n #searchbar\n [id]=\"focusableId\"\n [role]=\"'listbox'\"\n [tagListId]=\"tagListId\"\n [activeDescendant]=\"activeDescendant\"\n [noDataLabel]=\"noDataLabel\"\n [userInput]=\"text\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabIndex\"\n [popupOpen]=\"isOpen\"\n [placeholder]=\"placeholder\"\n (onNavigate)=\"handleNavigate($event)\"\n (valueChange)=\"handleFilter($event)\"\n (onBlur)=\"onSearchBarBlur()\"\n (onFocus)=\"onSearchBarFocus()\"\n >\n </kendo-searchbar>\n <span\n *ngIf=\"!loading && !readonly && clearButton && (tags?.length || text?.length)\"\n class=\"k-icon k-clear-value k-i-close\"\n [style.visibility]=\"clearButtonVisiblity\"\n [attr.title]=\"clearTitle\"\n role=\"button\"\n tabindex=\"-1\"\n (mousedown)=\"clearAll($event)\"\n >\n </span>\n <span\n *ngIf=\"loading\"\n class=\"k-icon k-i-loading\"\n >\n </span>\n </div>\n <ng-template #popupTemplate>\n <!--header template-->\n <ng-template *ngIf=\"headerTemplate\"\n [templateContext]=\"{\n templateRef: headerTemplate.templateRef\n }\">\n </ng-template>\n <!--custom item template-->\n <div class=\"k-list\" *ngIf=\"allowCustom && text\">\n <div class=\"k-item k-custom-item\" kendoDropDownsSelectable [multipleSelection]=\"true\" [index]=\"-1\">\n <ng-template *ngIf=\"customItemTemplate;else default_custom_item_template\"\n [templateContext]=\"{\n templateRef: customItemTemplate.templateRef,\n $implicit: text\n }\">\n </ng-template>\n <ng-template #default_custom_item_template>{{ text }}</ng-template>\n <span class=\"k-icon k-i-plus\" style=\"float: right\"></span>\n </div>\n </div>\n <!--list-->\n <kendo-list\n #optionsList\n [id]=\"listBoxId\"\n [optionPrefix]=\"optionPrefix\"\n [data]=\"data\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [height]=\"listHeight\"\n [template]=\"template\"\n [groupTemplate]=\"groupTemplate\"\n [fixedGroupTemplate]=\"fixedGroupTemplate\"\n [show]=\"isOpen\"\n [multipleSelection]=\"true\"\n [virtual]=\"virtual\"\n (pageChange)=\"pageChange($event)\"\n [checkboxes]=\"checkboxes\"\n >\n </kendo-list>\n <!--no data template-->\n <div class=\"k-nodata\" *ngIf=\"data.length === 0\">\n <ng-template [ngIf]=\"noDataTemplate\"\n [templateContext]=\"{\n templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!noDataTemplate\">\n <div>{{ noDataText }}</div>\n </ng-template>\n </div>\n <!--footer template-->\n <ng-template *ngIf=\"footerTemplate\"\n [templateContext]=\"{\n templateRef: footerTemplate.templateRef\n }\">\n </ng-template>\n </ng-template>\n <ng-template [ngIf]=\"isOpen\">\n <kendo-resize-sensor (resize)=\"onResize()\"></kendo-resize-sensor>\n </ng-template>\n <ng-container #container></ng-container>\n "
8249
+ template: "\n <ng-container kendoMultiSelectLocalizedMessages\n i18n-noDataText=\"kendo.multiselect.noDataText|The text displayed in the popup when there are no items\"\n noDataText=\"NO DATA FOUND\"\n\n i18n-clearTitle=\"kendo.combobox.clearTitle|The title of the clear button\"\n clearTitle=\"clear\"\n >\n </ng-container>\n <kendo-taglist\n [size]=\"size\"\n [rounded]=\"rounded\"\n [fillMode]=\"fillMode\"\n [id]=\"tagListId\"\n [tags]=\"tags\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [focused]=\"focusedTagIndex\"\n [disabled]=\"disabled\"\n [template]=\"tagTemplate\"\n [groupTemplate]=\"groupTagTemplate\"\n [tagPrefix]=\"tagPrefix\"\n [disabledIndices]=\"disabledIndices\"\n (removeTag)=\"handleRemoveTag($event)\"\n >\n <kendo-searchbar\n #searchbar\n [id]=\"focusableId\"\n [role]=\"'listbox'\"\n [tagListId]=\"tagListId\"\n [activeDescendant]=\"activeDescendant\"\n [noDataLabel]=\"noDataLabel\"\n [userInput]=\"text\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabIndex\"\n [popupOpen]=\"isOpen\"\n [placeholder]=\"placeholder\"\n (onNavigate)=\"handleNavigate($event)\"\n (valueChange)=\"handleFilter($event)\"\n (onBlur)=\"onSearchBarBlur()\"\n (onFocus)=\"onSearchBarFocus()\"\n >\n </kendo-searchbar>\n </kendo-taglist>\n\n <span\n *ngIf=\"!loading && !readonly && clearButton && (tags?.length || text?.length)\"\n class=\"k-clear-value\"\n [style.visibility]=\"clearButtonVisiblity\"\n [attr.title]=\"clearTitle\"\n role=\"button\"\n tabindex=\"-1\"\n (mousedown)=\"clearAll($event)\"\n >\n <span class=\"k-icon k-i-x\"></span>\n </span>\n <span\n *ngIf=\"loading\"\n class=\"k-icon k-i-loading\"\n >\n </span>\n <ng-template #popupTemplate>\n <!--header template-->\n <ng-template *ngIf=\"headerTemplate\"\n [templateContext]=\"{\n templateRef: headerTemplate.templateRef\n }\">\n </ng-template>\n <!--custom item template-->\n <div\n *ngIf=\"allowCustom && text\"\n class=\"k-list\"\n [ngClass]=\"customItemSizeClass\"\n >\n <div class=\"k-list-item k-custom-item\" kendoDropDownsSelectable [multipleSelection]=\"true\" [index]=\"-1\">\n <ng-template *ngIf=\"customItemTemplate;else default_custom_item_template\"\n [templateContext]=\"{\n templateRef: customItemTemplate.templateRef,\n $implicit: text\n }\">\n </ng-template>\n <ng-template #default_custom_item_template>{{ text }}</ng-template>\n <span class=\"k-icon k-i-plus\" style=\"float: right\"></span>\n </div>\n </div>\n <!--list-->\n <kendo-list\n #optionsList\n [size]=\"size\"\n [rounded]=\"rounded\"\n [id]=\"listBoxId\"\n [optionPrefix]=\"optionPrefix\"\n [data]=\"data\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [height]=\"listHeight\"\n [template]=\"template\"\n [groupTemplate]=\"groupTemplate\"\n [fixedGroupTemplate]=\"fixedGroupTemplate\"\n [show]=\"isOpen\"\n [multipleSelection]=\"true\"\n [virtual]=\"virtual\"\n (pageChange)=\"pageChange($event)\"\n [checkboxes]=\"checkboxes\"\n >\n </kendo-list>\n <!--no data template-->\n <div class=\"k-no-data\" *ngIf=\"data.length === 0\">\n <ng-template [ngIf]=\"noDataTemplate\"\n [templateContext]=\"{\n templateRef: noDataTemplate ? noDataTemplate.templateRef : undefined\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!noDataTemplate\">\n <div>{{ noDataText }}</div>\n </ng-template>\n </div>\n <!--footer template-->\n <ng-template *ngIf=\"footerTemplate\"\n [templateContext]=\"{\n templateRef: footerTemplate.templateRef\n }\">\n </ng-template>\n </ng-template>\n <ng-template [ngIf]=\"isOpen\">\n <kendo-resize-sensor (resize)=\"onResize()\"></kendo-resize-sensor>\n </ng-template>\n <ng-container #container></ng-container>\n "
7466
8250
  }),
7467
8251
  __param(11, Optional()), __param(11, Inject(TOUCH_ENABLED)),
7468
- __metadata("design:paramtypes", [LocalizationService,
8252
+ __metadata("design:paramtypes", [ElementRef,
8253
+ LocalizationService,
7469
8254
  PopupService,
7470
8255
  DataService,
7471
8256
  SelectionService,
@@ -7474,7 +8259,6 @@ var MultiSelectComponent = /** @class */ (function () {
7474
8259
  ChangeDetectorRef,
7475
8260
  KeyValueDiffers,
7476
8261
  Renderer2,
7477
- ElementRef,
7478
8262
  NgZone, Boolean])
7479
8263
  ], MultiSelectComponent);
7480
8264
  return MultiSelectComponent;
@@ -7649,8 +8433,8 @@ var getRowWidthFromColumnsMeta = function (columns) {
7649
8433
  */
7650
8434
  var MultiColumnComboBoxComponent = /** @class */ (function (_super) {
7651
8435
  __extends(MultiColumnComboBoxComponent, _super);
7652
- function MultiColumnComboBoxComponent(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, hostElement, touchEnabled$$1) {
7653
- var _this = _super.call(this, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, hostElement, touchEnabled$$1) || this;
8436
+ function MultiColumnComboBoxComponent(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, wrapper, touchEnabled$$1) {
8437
+ var _this = _super.call(this, wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, touchEnabled$$1) || this;
7654
8438
  /**
7655
8439
  * @hidden
7656
8440
  */
@@ -7663,6 +8447,16 @@ var MultiColumnComboBoxComponent = /** @class */ (function (_super) {
7663
8447
  return _this;
7664
8448
  }
7665
8449
  MultiColumnComboBoxComponent_1 = MultiColumnComboBoxComponent;
8450
+ Object.defineProperty(MultiColumnComboBoxComponent.prototype, "isDisabled", {
8451
+ /**
8452
+ * @hidden
8453
+ */
8454
+ get: function () {
8455
+ return this.disabled;
8456
+ },
8457
+ enumerable: true,
8458
+ configurable: true
8459
+ });
7666
8460
  Object.defineProperty(MultiColumnComboBoxComponent.prototype, "header", {
7667
8461
  /**
7668
8462
  * @hidden
@@ -7685,19 +8479,24 @@ var MultiColumnComboBoxComponent = /** @class */ (function (_super) {
7685
8479
  enumerable: true,
7686
8480
  configurable: true
7687
8481
  });
8482
+ Object.defineProperty(MultiColumnComboBoxComponent.prototype, "tableSizeClass", {
8483
+ /**
8484
+ * @hidden
8485
+ */
8486
+ get: function () {
8487
+ return "" + (this.size ? getSizeClass('table', this.size) : '');
8488
+ },
8489
+ enumerable: true,
8490
+ configurable: true
8491
+ });
7688
8492
  Object.defineProperty(MultiColumnComboBoxComponent.prototype, "listContainerClasses", {
7689
8493
  /**
7690
8494
  * @hidden
7691
8495
  */
7692
8496
  get: function () {
7693
8497
  return [
7694
- 'k-list-container',
7695
8498
  'k-popup',
7696
- 'k-reset',
7697
- 'k-group',
7698
- 'k-dropdowngrid-popup',
7699
- 'k-popup-flush',
7700
- 'k-state-border-up'
8499
+ 'k-dropdowngrid-popup'
7701
8500
  ].concat(this.popupSettings.popupClass || []);
7702
8501
  },
7703
8502
  enumerable: true,
@@ -7780,6 +8579,11 @@ var MultiColumnComboBoxComponent = /** @class */ (function (_super) {
7780
8579
  HostBinding('class.k-dropdowngrid'),
7781
8580
  __metadata("design:type", Boolean)
7782
8581
  ], MultiColumnComboBoxComponent.prototype, "hostClasses", void 0);
8582
+ __decorate([
8583
+ HostBinding('class.k-disabled'),
8584
+ __metadata("design:type", Boolean),
8585
+ __metadata("design:paramtypes", [])
8586
+ ], MultiColumnComboBoxComponent.prototype, "isDisabled", null);
7783
8587
  __decorate([
7784
8588
  ContentChildren(ComboBoxColumnComponent),
7785
8589
  __metadata("design:type", QueryList)
@@ -7816,7 +8620,7 @@ var MultiColumnComboBoxComponent = /** @class */ (function (_super) {
7816
8620
  }
7817
8621
  ],
7818
8622
  selector: 'kendo-multicolumncombobox',
7819
- template: "\n <ng-container\n kendoMultiColumnComboBoxLocalizedMessages\n\n i18n-noDataText=\"kendo.multicolumncombobox.noDataText|The text displayed in the popup when there are no items\"\n noDataText=\"NO DATA FOUND\"\n\n i18n-clearTitle=\"kendo.multicolumncombobox.clearTitle|The title of the clear button\"\n clearTitle=\"clear\"\n >\n </ng-container>\n <span\n #wrapper\n unselectable=\"on\"\n class=\"k-dropdown-wrap\"\n [class.k-state-disabled]=\"disabled\"\n >\n <kendo-searchbar\n #searchbar\n [role]=\"'combobox'\"\n [id]=\"focusableId\"\n [listId]=\"listBoxId\"\n [activeDescendant]=\"activeDescendant\"\n [noDataLabel]=\"noDataLabel\"\n [userInput]=\"text\"\n [suggestedText]=\"getSuggestion()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabIndex\"\n [popupOpen]=\"isOpen\"\n [placeholder]=\"placeholder\"\n (onNavigate)=\"handleNavigate($event)\"\n (valueChange)=\"searchBarChange($event)\"\n (onBlur)=\"handleBlur()\"\n (onFocus)=\"handleFocus()\"\n >\n </kendo-searchbar>\n\n <span\n *ngIf=\"clearButton && !loading && !disabled && !readonly && text?.length\"\n class=\"k-icon k-clear-value k-i-close\"\n [style.visibility]=\"clearButtonVisiblity\"\n aria-hidden=\"true\"\n [attr.title]=\"clearTitle\"\n (click)=\"clearValue($event)\"\n [kendoEventsOutsideAngular]=\"{\n mousedown: preventEventDefault\n }\"\n >\n </span>\n\n <span\n #select\n aria-hidden=\"true\"\n unselectable=\"on\"\n class=\"k-select\"\n [kendoEventsOutsideAngular]=\"{\n mousedown: preventEventDefault\n }\"\n >\n <span\n class=\"k-icon\"\n [ngClass]=\"buttonClasses\"\n >\n </span>\n </span>\n </span>\n\n <ng-template #popupTemplate>\n <!--user-defined header template -->\n <ng-template\n *ngIf=\"headerTemplate\"\n [templateContext]=\"{\n templateRef: headerTemplate?.templateRef\n }\"\n >\n </ng-template>\n\n <!--grid header-->\n <div\n #header\n class=\"k-grid-header\"\n >\n <div class=\"k-grid-header-wrap\">\n <table role=\"presentation\">\n <colgroup>\n <ng-container *ngFor=\"let column of columns\">\n <col\n *ngIf=\"!column.hidden && column.matchesMedia\"\n [style.width.px]=\"column.width\"\n />\n </ng-container>\n </colgroup>\n <tbody>\n <tr>\n <ng-container *ngFor=\"let column of columns\">\n <th\n *ngIf=\"!column.hidden && column.matchesMedia\"\n class=\"k-header\"\n [ngStyle]=\"column.headerStyle\"\n [ngClass]=\"column.headerClass\"\n >\n <ng-container *ngIf=\"!column.headerTemplate\">\n {{ column.title || column.field }}\n </ng-container>\n <ng-template\n *ngIf=\"column.headerTemplate\"\n [templateContext]=\"{\n templateRef: column.headerTemplate?.templateRef,\n $implicit: column,\n column: column\n }\"\n >\n </ng-template>\n </th>\n </ng-container>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <!-- item template -->\n <ng-template #rowTemplate let-dataItem>\n <ng-container *ngFor=\"let column of columns\">\n <span\n *ngIf=\"!column.hidden && column.matchesMedia\"\n class=\"k-cell\"\n [ngClass]=\"column.class\"\n [style.width.px]=\"column.width\"\n [ngStyle]=\"column.style\"\n >\n <ng-container *ngIf=\"!column.cellTemplate\">\n {{ textFrom(dataItem, column.field) }}\n </ng-container>\n <ng-template\n *ngIf=\"column.cellTemplate\"\n [templateContext]=\"{\n templateRef: column.cellTemplate?.templateRef,\n $implicit: dataItem,\n dataItem: dataItem,\n column: column\n }\"\n >\n </ng-template>\n </span>\n </ng-container>\n </ng-template>\n\n <!--list-->\n <kendo-list\n #optionsList\n [id]=\"listBoxId\"\n [optionPrefix]=\"optionPrefix\"\n [data]=\"data\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [template]=\"{ templateRef: rowTemplate }\"\n [groupTemplate]=\"groupTemplate\"\n [fixedGroupTemplate]=\"fixedGroupTemplate\"\n [height]=\"listHeight\"\n [show]=\"isOpen\"\n [virtual]=\"virtual\"\n [listClass]=\"'k-reset k-grid-list'\"\n (pageChange)=\"pageChange($event)\"\n (listResize)=\"updateHeaderPadding(header)\"\n >\n </kendo-list>\n\n <!--no-data template-->\n <div\n class=\"k-nodata\"\n *ngIf=\"data.length === 0\"\n >\n <ng-template\n [ngIf]=\"noDataTemplate\"\n [templateContext]=\"{\n templateRef: noDataTemplate?.templateRef\n }\"\n >\n </ng-template>\n <ng-template [ngIf]=\"!noDataTemplate\">\n <div>{{ noDataText }}</div>\n </ng-template>\n </div>\n\n <!--user-defined footer template-->\n <ng-container *ngIf=\"footerTemplate\">\n <div class=\"k-footer\">\n <ng-template\n [templateContext]=\"{\n templateRef: footerTemplate.templateRef\n }\"\n >\n </ng-template>\n </div>\n </ng-container>\n </ng-template>\n\n <kendo-resize-sensor\n *ngIf=\"isOpen\"\n (resize)=\"onResize()\"\n >\n </kendo-resize-sensor>\n\n <!-- when the popupSettings.appendTo value is set to 'component', this container is used -->\n <ng-container #container></ng-container>\n "
8623
+ template: "\n <ng-container\n kendoMultiColumnComboBoxLocalizedMessages\n\n i18n-noDataText=\"kendo.multicolumncombobox.noDataText|The text displayed in the popup when there are no items\"\n noDataText=\"NO DATA FOUND\"\n\n i18n-clearTitle=\"kendo.multicolumncombobox.clearTitle|The title of the clear button\"\n clearTitle=\"clear\"\n >\n </ng-container>\n <kendo-searchbar\n #searchbar\n [role]=\"'combobox'\"\n [id]=\"focusableId\"\n [listId]=\"listBoxId\"\n [activeDescendant]=\"activeDescendant\"\n [noDataLabel]=\"noDataLabel\"\n [userInput]=\"text\"\n [suggestedText]=\"getSuggestion()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabIndex\"\n [popupOpen]=\"isOpen\"\n [placeholder]=\"placeholder\"\n (onNavigate)=\"handleNavigate($event)\"\n (valueChange)=\"searchBarChange($event)\"\n (onBlur)=\"handleBlur()\"\n (onFocus)=\"handleFocus()\"\n >\n </kendo-searchbar>\n\n <span\n *ngIf=\"clearButton && !loading && !disabled && !readonly && text?.length\"\n class=\"k-clear-value\"\n [style.visibility]=\"clearButtonVisiblity\"\n aria-hidden=\"true\"\n [attr.title]=\"clearTitle\"\n (click)=\"clearValue($event)\"\n [kendoEventsOutsideAngular]=\"{\n mousedown: preventEventDefault\n }\"\n >\n <span class=\"k-icon k-i-x\"></span>\n </span>\n\n <button\n #select\n tabindex=\"-1\"\n aria-hidden=\"true\"\n unselectable=\"on\"\n type=\"button\"\n class=\"k-input-button k-button k-icon-button\"\n [ngClass]=\"selectButtonClasses\"\n [kendoEventsOutsideAngular]=\"{\n mousedown: preventEventDefault\n }\"\n >\n <span class=\"k-button-icon k-icon\" [ngClass]=\"buttonClasses\"></span>\n </button>\n\n <ng-template #popupTemplate>\n <!--user-defined header template -->\n <ng-template\n *ngIf=\"headerTemplate\"\n [templateContext]=\"{\n templateRef: headerTemplate?.templateRef\n }\"\n >\n </ng-template>\n\n <!--data table-->\n <div class=\"k-data-table\" [ngClass]=\"tableSizeClass\">\n\n <!--grid header-->\n <div\n #header\n class=\"k-table-header\"\n >\n <div class=\"k-table-header-wrap\">\n <table class=\"k-table\" role=\"presentation\">\n <colgroup>\n <ng-container *ngFor=\"let column of columns\">\n <col\n *ngIf=\"!column.hidden && column.matchesMedia\"\n [style.width.px]=\"column.width\"\n />\n </ng-container>\n </colgroup>\n <thead class=\"k-table-thead\">\n <tr class=\"k-table-row\">\n <ng-container *ngFor=\"let column of columns\">\n <th\n *ngIf=\"!column.hidden && column.matchesMedia\"\n class=\"k-table-th\"\n [ngStyle]=\"column.headerStyle\"\n [ngClass]=\"column.headerClass\"\n >\n <ng-container *ngIf=\"!column.headerTemplate\">\n {{ column.title || column.field }}\n </ng-container>\n <ng-template\n *ngIf=\"column.headerTemplate\"\n [templateContext]=\"{\n templateRef: column.headerTemplate?.templateRef,\n $implicit: column,\n column: column\n }\"\n >\n </ng-template>\n </th>\n </ng-container>\n </tr>\n </thead>\n </table>\n </div>\n </div>\n\n <!-- item template -->\n <ng-template #rowTemplate let-dataItem>\n <ng-container *ngFor=\"let column of columns\">\n <span\n *ngIf=\"!column.hidden && column.matchesMedia\"\n class=\"k-table-td\"\n [ngClass]=\"column.class\"\n [style.width.px]=\"column.width\"\n [ngStyle]=\"column.style\"\n >\n <ng-container *ngIf=\"!column.cellTemplate\">\n {{ textFrom(dataItem, column.field) }}\n </ng-container>\n <ng-template\n *ngIf=\"column.cellTemplate\"\n [templateContext]=\"{\n templateRef: column.cellTemplate?.templateRef,\n $implicit: dataItem,\n dataItem: dataItem,\n column: column\n }\"\n >\n </ng-template>\n </span>\n </ng-container>\n </ng-template>\n\n <!--list-->\n <kendo-list\n #optionsList\n [id]=\"listBoxId\"\n [optionPrefix]=\"optionPrefix\"\n [data]=\"data\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [template]=\"{ templateRef: rowTemplate }\"\n [groupTemplate]=\"groupTemplate\"\n [fixedGroupTemplate]=\"fixedGroupTemplate\"\n [height]=\"listHeight\"\n [show]=\"isOpen\"\n [virtual]=\"virtual\"\n [type]=\"'dropdowngrid'\"\n (pageChange)=\"pageChange($event)\"\n (listResize)=\"updateHeaderPadding(header)\"\n >\n </kendo-list>\n\n <!--no-data template-->\n <div\n class=\"k-no-data\"\n *ngIf=\"data.length === 0\"\n >\n <ng-template\n [ngIf]=\"noDataTemplate\"\n [templateContext]=\"{\n templateRef: noDataTemplate?.templateRef\n }\"\n >\n </ng-template>\n <ng-template [ngIf]=\"!noDataTemplate\">\n <div>{{ noDataText }}</div>\n </ng-template>\n </div>\n\n <!--user-defined footer template-->\n <ng-container *ngIf=\"footerTemplate\">\n <div class=\"k-table-footer\">\n <table class=\"k-table\">\n <tfoot class=\"k-table-tfoot\">\n <tr class=\"k-table-row\">\n <td class=\"k-table-td\">\n <ng-template\n [templateContext]=\"{\n templateRef: footerTemplate.templateRef\n }\"\n >\n </ng-template>\n </td>\n </tr>\n </tfoot>\n </table>\n </div>\n </ng-container>\n\n </div>\n\n </ng-template>\n\n <kendo-resize-sensor\n *ngIf=\"isOpen\"\n (resize)=\"onResize()\"\n >\n </kendo-resize-sensor>\n\n <!-- when the popupSettings.appendTo value is set to 'component', this container is used -->\n <ng-container #container></ng-container>\n "
7820
8624
  }),
7821
8625
  __param(10, Inject(TOUCH_ENABLED)),
7822
8626
  __metadata("design:paramtypes", [LocalizationService,
@@ -7865,16 +8669,18 @@ var isNodeVisible = function () { return true; };
7865
8669
  * Represents the [Kendo UI DropDownTree component for Angular]({% slug overview_ddt %}).
7866
8670
  */
7867
8671
  var DropDownTreeComponent = /** @class */ (function () {
7868
- function DropDownTreeComponent(popupService, navigationService, renderer, hostElement, _zone, cdr, localization, touchEnabled$$1) {
8672
+ function DropDownTreeComponent(wrapper, popupService, navigationService, renderer, _zone, cdr, localization, touchEnabled$$1) {
8673
+ this.wrapper = wrapper;
7869
8674
  this.popupService = popupService;
7870
8675
  this.navigationService = navigationService;
7871
8676
  this.renderer = renderer;
7872
- this.hostElement = hostElement;
7873
8677
  this._zone = _zone;
7874
8678
  this.cdr = cdr;
7875
8679
  this.localization = localization;
7876
8680
  this.touchEnabled = touchEnabled$$1;
7877
8681
  this.hostClasses = true;
8682
+ this.role = 'listbox';
8683
+ this.ariaHasPopup = 'tree';
7878
8684
  /**
7879
8685
  * Fires each time the popup is about to open
7880
8686
  * ([see example]({% slug openstate_ddt %})).
@@ -8009,21 +8815,78 @@ var DropDownTreeComponent = /** @class */ (function () {
8009
8815
  this._popupSettings = DEFAULT_POPUP_SETTINGS;
8010
8816
  this._tabindex = 0;
8011
8817
  this._isFocused = false;
8818
+ this._size = 'medium';
8819
+ this._rounded = 'medium';
8820
+ this._fillMode = 'solid';
8012
8821
  this.subscriptions = [];
8013
8822
  this.onTouchedCallback = noop;
8014
8823
  this.onChangeCallback = noop;
8015
8824
  this.direction = localization.rtl ? 'rtl' : 'ltr';
8016
8825
  this.subscribeEvents();
8017
8826
  this.subscribeTouchEvents();
8827
+ this.subscribeFocusEvents();
8018
8828
  }
8019
8829
  DropDownTreeComponent_1 = DropDownTreeComponent;
8020
- Object.defineProperty(DropDownTreeComponent.prototype, "clearable", {
8830
+ Object.defineProperty(DropDownTreeComponent.prototype, "isDisabled", {
8831
+ get: function () {
8832
+ return this.disabled;
8833
+ },
8834
+ enumerable: true,
8835
+ configurable: true
8836
+ });
8837
+ Object.defineProperty(DropDownTreeComponent.prototype, "isLoading", {
8838
+ get: function () {
8839
+ return this.loading;
8840
+ },
8841
+ enumerable: true,
8842
+ configurable: true
8843
+ });
8844
+ Object.defineProperty(DropDownTreeComponent.prototype, "id", {
8845
+ get: function () {
8846
+ return this.focusableId;
8847
+ },
8848
+ enumerable: true,
8849
+ configurable: true
8850
+ });
8851
+ Object.defineProperty(DropDownTreeComponent.prototype, "hostTabIndex", {
8852
+ get: function () {
8853
+ return this.tabindex;
8854
+ },
8855
+ enumerable: true,
8856
+ configurable: true
8857
+ });
8858
+ Object.defineProperty(DropDownTreeComponent.prototype, "isAriaExpanded", {
8859
+ get: function () {
8860
+ return this.isOpen;
8861
+ },
8862
+ enumerable: true,
8863
+ configurable: true
8864
+ });
8865
+ Object.defineProperty(DropDownTreeComponent.prototype, "isReadonly", {
8021
8866
  get: function () {
8022
- return this.clearButton;
8867
+ return this.readonly;
8023
8868
  },
8024
8869
  enumerable: true,
8025
8870
  configurable: true
8026
8871
  });
8872
+ /**
8873
+ * @hidden
8874
+ */
8875
+ DropDownTreeComponent.prototype.handleClick = function () {
8876
+ this.togglePopup(!this.isOpen);
8877
+ };
8878
+ /**
8879
+ * @hidden
8880
+ */
8881
+ DropDownTreeComponent.prototype.handleKeydown = function (event) {
8882
+ if (this.disabled || this.readonly) {
8883
+ return;
8884
+ }
8885
+ var eventData = event;
8886
+ this.navigationService.process({
8887
+ originalEvent: eventData
8888
+ });
8889
+ };
8027
8890
  Object.defineProperty(DropDownTreeComponent.prototype, "treeview", {
8028
8891
  get: function () {
8029
8892
  return this._treeview;
@@ -8125,12 +8988,85 @@ var DropDownTreeComponent = /** @class */ (function () {
8125
8988
  enumerable: true,
8126
8989
  configurable: true
8127
8990
  });
8991
+ Object.defineProperty(DropDownTreeComponent.prototype, "size", {
8992
+ get: function () {
8993
+ return this._size;
8994
+ },
8995
+ /**
8996
+ * Sets the size of the component.
8997
+ *
8998
+ * The possible values are:
8999
+ * * `'small'`
9000
+ * * `'medium'` (default)
9001
+ * * `'large'`
9002
+ * * `null`
9003
+ *
9004
+ */
9005
+ set: function (size) {
9006
+ this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));
9007
+ if (size) {
9008
+ this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', size));
9009
+ }
9010
+ this._size = size;
9011
+ },
9012
+ enumerable: true,
9013
+ configurable: true
9014
+ });
9015
+ Object.defineProperty(DropDownTreeComponent.prototype, "rounded", {
9016
+ get: function () {
9017
+ return this._rounded;
9018
+ },
9019
+ /**
9020
+ * Sets the border radius of the component.
9021
+ *
9022
+ * The possible values are:
9023
+ * * `'small'`
9024
+ * * `'medium'` (default)
9025
+ * * `'large'`
9026
+ * * `'full'`
9027
+ * * `null`
9028
+ *
9029
+ */
9030
+ set: function (rounded) {
9031
+ this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));
9032
+ if (rounded) {
9033
+ this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(rounded));
9034
+ }
9035
+ this._rounded = rounded;
9036
+ },
9037
+ enumerable: true,
9038
+ configurable: true
9039
+ });
9040
+ Object.defineProperty(DropDownTreeComponent.prototype, "fillMode", {
9041
+ get: function () {
9042
+ return this._fillMode;
9043
+ },
9044
+ /**
9045
+ * Sets the fillMode of the component.
9046
+ *
9047
+ * The possible values are:
9048
+ * * `'flat'`
9049
+ * * `'solid'` (default)
9050
+ * * `'outline'`
9051
+ * * `null`
9052
+ *
9053
+ */
9054
+ set: function (fillMode) {
9055
+ this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));
9056
+ if (fillMode) {
9057
+ this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', fillMode));
9058
+ }
9059
+ this._fillMode = fillMode;
9060
+ },
9061
+ enumerable: true,
9062
+ configurable: true
9063
+ });
8128
9064
  Object.defineProperty(DropDownTreeComponent.prototype, "isFocused", {
8129
9065
  get: function () {
8130
9066
  return this._isFocused;
8131
9067
  },
8132
9068
  set: function (isFocused) {
8133
- this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-state-focused');
9069
+ this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');
8134
9070
  this._isFocused = isFocused;
8135
9071
  },
8136
9072
  enumerable: true,
@@ -8266,7 +9202,7 @@ var DropDownTreeComponent = /** @class */ (function () {
8266
9202
  });
8267
9203
  DropDownTreeComponent.prototype.ngOnInit = function () {
8268
9204
  var _this = this;
8269
- this.renderer.removeAttribute(this.hostElement.nativeElement, 'tabindex');
9205
+ this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');
8270
9206
  this.assignAriaDescribedBy();
8271
9207
  this.subscriptions.push(this.localization
8272
9208
  .changes.subscribe(function (_a) {
@@ -8274,6 +9210,7 @@ var DropDownTreeComponent = /** @class */ (function () {
8274
9210
  _this.direction = rtl ? 'rtl' : 'ltr';
8275
9211
  _this.cdr.markForCheck();
8276
9212
  }));
9213
+ this.setComponentClasses();
8277
9214
  };
8278
9215
  /**
8279
9216
  * @hidden
@@ -8324,8 +9261,12 @@ var DropDownTreeComponent = /** @class */ (function () {
8324
9261
  /**
8325
9262
  * @hidden
8326
9263
  */
8327
- DropDownTreeComponent.prototype.handleFocus = function () {
9264
+ DropDownTreeComponent.prototype.handleFocus = function (event) {
8328
9265
  var _this = this;
9266
+ if (event.target !== this.wrapper.nativeElement) {
9267
+ return;
9268
+ }
9269
+ event.stopImmediatePropagation();
8329
9270
  if (!this.isFocused) {
8330
9271
  this.isFocused = true;
8331
9272
  if (hasObservers(this.onFocus)) {
@@ -8341,13 +9282,13 @@ var DropDownTreeComponent = /** @class */ (function () {
8341
9282
  DropDownTreeComponent.prototype.handleBlur = function (e) {
8342
9283
  var _this = this;
8343
9284
  var relatedTarget = e && e.relatedTarget;
8344
- if (this.hostElement.nativeElement.contains(relatedTarget) ||
9285
+ if (this.wrapper.nativeElement.contains(relatedTarget) ||
8345
9286
  (this.isOpen && this.popupRef.popupElement.contains(relatedTarget))) {
8346
9287
  return;
8347
9288
  }
8348
9289
  this.isFocused = false;
8349
9290
  if (hasObservers(this.onBlur) ||
8350
- isUntouched(this.hostElement.nativeElement)) {
9291
+ isUntouched(this.wrapper.nativeElement)) {
8351
9292
  this._zone.run(function () {
8352
9293
  _this.togglePopup(false);
8353
9294
  _this.onBlur.emit();
@@ -8358,24 +9299,6 @@ var DropDownTreeComponent = /** @class */ (function () {
8358
9299
  this.togglePopup(false);
8359
9300
  }
8360
9301
  };
8361
- /**
8362
- * @hidden
8363
- */
8364
- DropDownTreeComponent.prototype.handleKeydown = function (event) {
8365
- if (this.disabled || this.readonly) {
8366
- return;
8367
- }
8368
- var eventData = event;
8369
- this.navigationService.process({
8370
- originalEvent: eventData
8371
- });
8372
- };
8373
- /**
8374
- * @hidden
8375
- */
8376
- DropDownTreeComponent.prototype.handleClick = function () {
8377
- this.togglePopup(!this.isOpen);
8378
- };
8379
9302
  /**
8380
9303
  * Focuses a specific item of the DropDownTree based on a provided index in the format of `1_1`.
8381
9304
  * The targeted item should be expanded in order for it to be focused.
@@ -8439,7 +9362,7 @@ var DropDownTreeComponent = /** @class */ (function () {
8439
9362
  * @hidden
8440
9363
  */
8441
9364
  get: function () {
8442
- var containerClasses = ['k-popup-dropdowntree', 'k-reset', 'k-group', 'k-list-container'];
9365
+ var containerClasses = ['k-popup-dropdowntree'];
8443
9366
  if (this.popupSettings.popupClass) {
8444
9367
  containerClasses.push(this.popupSettings.popupClass);
8445
9368
  }
@@ -8552,6 +9475,26 @@ var DropDownTreeComponent = /** @class */ (function () {
8552
9475
  enumerable: true,
8553
9476
  configurable: true
8554
9477
  });
9478
+ Object.defineProperty(DropDownTreeComponent.prototype, "selectButtonClasses", {
9479
+ /**
9480
+ * @hidden
9481
+ */
9482
+ get: function () {
9483
+ return (this.size ? getSizeClass('button', this.size) : '') + " " + (this.fillMode ? 'k-button-' + this.fillMode : '') + " " + (this.fillMode ? 'k-button-' + this.fillMode + '-base' : '');
9484
+ },
9485
+ enumerable: true,
9486
+ configurable: true
9487
+ });
9488
+ Object.defineProperty(DropDownTreeComponent.prototype, "filterInputClasses", {
9489
+ /**
9490
+ * @hidden
9491
+ */
9492
+ get: function () {
9493
+ return (this.size ? getSizeClass('input', this.size) : '') + " " + (this.fillMode ? 'k-input-' + this.fillMode : '') + " " + (this.rounded ? getRoundedClass(this.rounded) : '');
9494
+ },
9495
+ enumerable: true,
9496
+ configurable: true
9497
+ });
8555
9498
  DropDownTreeComponent.prototype.verifySettings = function () {
8556
9499
  if (!isDevMode()) {
8557
9500
  return;
@@ -8715,7 +9658,7 @@ var DropDownTreeComponent = /** @class */ (function () {
8715
9658
  // Roll up DropDownTree on iOS when tapped outside
8716
9659
  return _this.touchstartDisposeHandler = _this.renderer.listen(document, 'touchstart', function (e) {
8717
9660
  var target = e.target;
8718
- if (_this.isFocused && !inDropDown(_this.hostElement, target, _this.popupRef)) {
9661
+ if (_this.isFocused && !inDropDown(_this.wrapper, target, _this.popupRef)) {
8719
9662
  _this._zone.run(function () {
8720
9663
  if (_this.isOpen) {
8721
9664
  _this.treeview.blur();
@@ -8726,34 +9669,118 @@ var DropDownTreeComponent = /** @class */ (function () {
8726
9669
  });
8727
9670
  });
8728
9671
  };
9672
+ DropDownTreeComponent.prototype.subscribeFocusEvents = function () {
9673
+ var _this = this;
9674
+ if (isDocumentAvailable()) {
9675
+ this.handleFocus = this.handleFocus.bind(this);
9676
+ this.handleDocumentBlur = this.handleDocumentBlur.bind(this);
9677
+ this._zone.runOutsideAngular(function () {
9678
+ var useCapture = true;
9679
+ document.addEventListener('focus', _this.handleFocus, useCapture);
9680
+ document.addEventListener('blur', _this.handleDocumentBlur, useCapture);
9681
+ });
9682
+ }
9683
+ };
9684
+ DropDownTreeComponent.prototype.unSubscribeFocusEvents = function () {
9685
+ if (isDocumentAvailable()) {
9686
+ var useCapture = true;
9687
+ document.removeEventListener('focus', this.handleFocus, useCapture);
9688
+ document.removeEventListener('blur', this.handleDocumentBlur, useCapture);
9689
+ }
9690
+ };
8729
9691
  DropDownTreeComponent.prototype.unsubscribeEvents = function () {
8730
9692
  this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });
9693
+ this.unSubscribeFocusEvents();
8731
9694
  if (this.touchstartDisposeHandler) {
8732
9695
  this.touchstartDisposeHandler();
8733
9696
  }
8734
9697
  };
9698
+ DropDownTreeComponent.prototype.handleDocumentBlur = function (event) {
9699
+ if (event.target !== this.wrapper.nativeElement) {
9700
+ return;
9701
+ }
9702
+ event.stopImmediatePropagation();
9703
+ this.handleBlur(event);
9704
+ };
8735
9705
  DropDownTreeComponent.prototype.assignAriaDescribedBy = function () {
8736
9706
  var currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';
8737
9707
  // add to the current value - don't replace it (the aria-describedby is used by the FormField component as well)
8738
9708
  var newValue = (this.valueLabelId + " " + currentValue.trim()).trim();
8739
9709
  this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);
8740
9710
  };
9711
+ DropDownTreeComponent.prototype.setComponentClasses = function () {
9712
+ if (this.size) {
9713
+ this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));
9714
+ }
9715
+ if (this.rounded) {
9716
+ this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));
9717
+ }
9718
+ if (this.fillMode) {
9719
+ this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));
9720
+ }
9721
+ };
8741
9722
  var DropDownTreeComponent_1;
8742
9723
  __decorate([
8743
- HostBinding('class.k-widget'),
8744
9724
  HostBinding('class.k-dropdowntree'),
8745
- HostBinding('class.k-dropdowntree-clearable'),
9725
+ HostBinding('class.k-picker'),
8746
9726
  __metadata("design:type", Boolean)
8747
9727
  ], DropDownTreeComponent.prototype, "hostClasses", void 0);
9728
+ __decorate([
9729
+ HostBinding('class.k-disabled'),
9730
+ HostBinding('attr.aria-disabled'),
9731
+ __metadata("design:type", Boolean),
9732
+ __metadata("design:paramtypes", [])
9733
+ ], DropDownTreeComponent.prototype, "isDisabled", null);
9734
+ __decorate([
9735
+ HostBinding('class.k-loading'),
9736
+ __metadata("design:type", Boolean),
9737
+ __metadata("design:paramtypes", [])
9738
+ ], DropDownTreeComponent.prototype, "isLoading", null);
9739
+ __decorate([
9740
+ HostBinding('attr.id'),
9741
+ __metadata("design:type", String),
9742
+ __metadata("design:paramtypes", [])
9743
+ ], DropDownTreeComponent.prototype, "id", null);
8748
9744
  __decorate([
8749
9745
  HostBinding('attr.dir'),
8750
9746
  __metadata("design:type", String)
8751
9747
  ], DropDownTreeComponent.prototype, "direction", void 0);
8752
9748
  __decorate([
8753
- HostBinding('class.k-dropdowntree-clearable'),
9749
+ HostBinding('attr.tabindex'),
9750
+ __metadata("design:type", Number),
9751
+ __metadata("design:paramtypes", [])
9752
+ ], DropDownTreeComponent.prototype, "hostTabIndex", null);
9753
+ __decorate([
9754
+ HostBinding('attr.role'),
9755
+ __metadata("design:type", String)
9756
+ ], DropDownTreeComponent.prototype, "role", void 0);
9757
+ __decorate([
9758
+ HostBinding('attr.aria-haspopup'),
9759
+ __metadata("design:type", String)
9760
+ ], DropDownTreeComponent.prototype, "ariaHasPopup", void 0);
9761
+ __decorate([
9762
+ HostBinding('attr.aria-expanded'),
9763
+ __metadata("design:type", Boolean),
9764
+ __metadata("design:paramtypes", [])
9765
+ ], DropDownTreeComponent.prototype, "isAriaExpanded", null);
9766
+ __decorate([
9767
+ HostBinding('attr.readonly'),
9768
+ HostBinding('attr.aria-readonly'),
8754
9769
  __metadata("design:type", Boolean),
8755
9770
  __metadata("design:paramtypes", [])
8756
- ], DropDownTreeComponent.prototype, "clearable", null);
9771
+ ], DropDownTreeComponent.prototype, "isReadonly", null);
9772
+ __decorate([
9773
+ HostListener('click'),
9774
+ __metadata("design:type", Function),
9775
+ __metadata("design:paramtypes", []),
9776
+ __metadata("design:returntype", void 0)
9777
+ ], DropDownTreeComponent.prototype, "handleClick", null);
9778
+ __decorate([
9779
+ HostListener('keydown', ['$event']),
9780
+ __metadata("design:type", Function),
9781
+ __metadata("design:paramtypes", [Object]),
9782
+ __metadata("design:returntype", void 0)
9783
+ ], DropDownTreeComponent.prototype, "handleKeydown", null);
8757
9784
  __decorate([
8758
9785
  ContentChild(NoDataTemplateDirective, { static: false }),
8759
9786
  __metadata("design:type", NoDataTemplateDirective)
@@ -8778,10 +9805,6 @@ var DropDownTreeComponent = /** @class */ (function () {
8778
9805
  ViewChild('popupTemplate', { static: true }),
8779
9806
  __metadata("design:type", TemplateRef)
8780
9807
  ], DropDownTreeComponent.prototype, "popupTemplate", void 0);
8781
- __decorate([
8782
- ViewChild('wrapper', { static: true }),
8783
- __metadata("design:type", ElementRef)
8784
- ], DropDownTreeComponent.prototype, "wrapper", void 0);
8785
9808
  __decorate([
8786
9809
  ViewChild('container', { read: ViewContainerRef, static: true }),
8787
9810
  __metadata("design:type", ViewContainerRef)
@@ -8908,6 +9931,21 @@ var DropDownTreeComponent = /** @class */ (function () {
8908
9931
  __metadata("design:type", Number),
8909
9932
  __metadata("design:paramtypes", [Number])
8910
9933
  ], DropDownTreeComponent.prototype, "tabindex", null);
9934
+ __decorate([
9935
+ Input(),
9936
+ __metadata("design:type", String),
9937
+ __metadata("design:paramtypes", [String])
9938
+ ], DropDownTreeComponent.prototype, "size", null);
9939
+ __decorate([
9940
+ Input(),
9941
+ __metadata("design:type", String),
9942
+ __metadata("design:paramtypes", [String])
9943
+ ], DropDownTreeComponent.prototype, "rounded", null);
9944
+ __decorate([
9945
+ Input(),
9946
+ __metadata("design:type", String),
9947
+ __metadata("design:paramtypes", [String])
9948
+ ], DropDownTreeComponent.prototype, "fillMode", null);
8911
9949
  __decorate([
8912
9950
  Input(),
8913
9951
  __metadata("design:type", Function)
@@ -8968,14 +10006,14 @@ var DropDownTreeComponent = /** @class */ (function () {
8968
10006
  }
8969
10007
  ],
8970
10008
  selector: 'kendo-dropdowntree',
8971
- template: "\n <ng-container kendoDropDownTreeLocalizedMessages\n i18n-noDataText=\"kendo.dropdowntree.noDataText|The text displayed in the popup when there are no items\"\n noDataText=\"NO DATA FOUND\"\n\n i18n-clearTitle=\"kendo.dropdowntree.clearTitle|The title of the clear button\"\n clearTitle=\"clear\"\n >\n </ng-container>\n <span\n #wrapper\n [ngClass]=\"{\n 'k-dropdown-wrap': true,\n 'k-state-disabled': this.disabled\n }\"\n [attr.id]=\"focusableId\"\n role=\"listbox\"\n aria-haspopup=\"tree\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-readonly]=\"readonly\"\n [attr.tabindex]=\"tabindex\"\n [attr.dir]=\"direction\"\n (click)=\"handleClick()\"\n (keydown)=\"handleKeydown($event)\"\n [kendoEventsOutsideAngular]=\"{\n focus: handleFocus,\n blur: handleBlur\n }\"\n [scope]=\"this\"\n >\n <span\n [attr.id]=\"valueLabelId\"\n class=\"k-input\"\n >\n <ng-template *ngIf=\"valueTemplate\"\n [templateContext]=\"{\n templateRef: valueTemplate.templateRef,\n $implicit: dataItem\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!valueTemplate\"> {{ text || placeholder }} </ng-template>\n </span>\n <span\n *ngIf=\"!loading && !readonly && clearButton && text?.length && !disabled\"\n class=\"k-icon k-clear-value k-i-close\"\n [style.visibility]=\"clearButtonVisiblity\"\n aria-hidden=\"true\"\n [attr.title]=\"messageFor('clearTitle')\"\n (click)=\"clearValue($event)\"\n >\n </span>\n <span class=\"k-select\" aria-hidden=\"true\">\n <span\n class=\"k-icon k-i-arrow-60-down\"\n [ngClass]=\"buttonClasses\"\n ></span>\n </span>\n </span>\n <ng-template #popupTemplate>\n <span\n *ngIf=\"filterable\"\n class=\"k-list-filter\"\n >\n <input\n #filterInput\n (input)=\"handleFilterInputChange($event.target.value)\"\n [filterInput]=\"filterable && !touchEnabled\"\n (keydown.arrowdown)=\"handleKeydown($event)\"\n (keydown.alt.arrowup)=\"handleKeydown($event)\"\n [(ngModel)]=\"filter\"\n class=\"k-textbox\"\n role=\"textbox\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n aria-readonly=\"false\"\n [kendoEventsOutsideAngular]=\"{\n blur: handleBlur\n }\"\n [scope]=\"this\"\n >\n <span class=\"k-icon k-i-zoom\"></span>\n </span>\n <!--header template-->\n <ng-template\n *ngIf=\"headerTemplate\"\n [templateContext]=\"{\n templateRef: headerTemplate?.templateRef\n }\">\n </ng-template>\n <kendo-treeview\n #treeview\n *ngIf=\"data.length !== 0 && !allNodesHidden\"\n [nodes]=\"data\"\n [style.maxHeight.px]=\"listHeight\"\n [animate]=\"false\"\n [(selectedKeys)]=\"selectedKeys\"\n [selectBy]=\"selectBy\"\n [textField]=\"textField\"\n kendoTreeViewSelectable\n [children]=\"children\"\n [hasChildren]=\"hasChildren\"\n [loadOnDemand]=\"loadOnDemand\"\n [isExpanded]=\"isNodeExpanded\"\n [isDisabled]=\"itemDisabled\"\n [nodeTemplate]=\"nodeTemplate\"\n [filter]=\"filter\"\n [isVisible]=\"isNodeVisible\"\n (focusout)=\"handleBlur($event)\"\n (keydown)=\"handleKeydown($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (expand)=\"nodeExpand.emit($event)\"\n (collapse)=\"nodeCollapse.emit($event)\"\n >\n </kendo-treeview>\n <!--footer template-->\n <ng-template\n *ngIf=\"footerTemplate\"\n [templateContext]=\"{\n templateRef: footerTemplate?.templateRef\n }\">\n </ng-template>\n <!--no-data template-->\n <div class=\"k-nodata\" *ngIf=\"data.length === 0 || allNodesHidden\">\n <ng-template [ngIf]=\"noDataTemplate\"\n [templateContext]=\"{\n templateRef: noDataTemplate?.templateRef\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!noDataTemplate\">\n <div>{{ messageFor('noDataText') }}</div>\n </ng-template>\n </div>\n </ng-template>\n <ng-container #container></ng-container>\n ",
10009
+ template: "\n <ng-container kendoDropDownTreeLocalizedMessages\n i18n-noDataText=\"kendo.dropdowntree.noDataText|The text displayed in the popup when there are no items\"\n noDataText=\"NO DATA FOUND\"\n\n i18n-clearTitle=\"kendo.dropdowntree.clearTitle|The title of the clear button\"\n clearTitle=\"clear\"\n >\n </ng-container>\n <span\n [attr.id]=\"valueLabelId\"\n class=\"k-input-inner\"\n >\n <span class=\"k-input-value-text\">\n <ng-template *ngIf=\"valueTemplate\"\n [templateContext]=\"{\n templateRef: valueTemplate.templateRef,\n $implicit: dataItem\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!valueTemplate\"> {{ text || placeholder }} </ng-template>\n </span>\n </span>\n <span\n *ngIf=\"!loading && !readonly && clearButton && text?.length && !disabled\"\n class=\"k-clear-value\"\n [style.visibility]=\"clearButtonVisiblity\"\n aria-hidden=\"true\"\n [attr.title]=\"messageFor('clearTitle')\"\n (click)=\"clearValue($event)\"\n >\n <span class=\"k-icon k-i-x\"></span>\n </span>\n <button\n tabindex=\"-1\"\n type=\"button\"\n aria-hidden=\"true\"\n class=\"k-input-button k-button k-icon-button\"\n [ngClass]=\"selectButtonClasses\"\n >\n <span\n class=\"k-button-icon k-icon\"\n [ngClass]=\"buttonClasses\"\n ></span>\n </button>\n <ng-template #popupTemplate>\n <span\n *ngIf=\"filterable\"\n class=\"k-list-filter\"\n >\n <span\n class=\"k-textbox k-input\"\n [ngClass]=\"filterInputClasses\"\n >\n <span class=\"k-input-prefix\">\n <span class=\"k-input-icon k-icon k-i-search\"></span>\n </span>\n <input\n #filterInput\n (input)=\"handleFilterInputChange($event.target.value)\"\n [filterInput]=\"filterable && !touchEnabled\"\n (keydown.arrowdown)=\"handleKeydown($event)\"\n (keydown.alt.arrowup)=\"handleKeydown($event)\"\n [(ngModel)]=\"filter\"\n class=\"k-input-inner\"\n role=\"textbox\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n aria-readonly=\"false\"\n [kendoEventsOutsideAngular]=\"{\n blur: handleBlur\n }\"\n [scope]=\"this\"\n >\n </span>\n </span>\n <!--header template-->\n <ng-template\n *ngIf=\"headerTemplate\"\n [templateContext]=\"{\n templateRef: headerTemplate?.templateRef\n }\">\n </ng-template>\n <kendo-treeview\n #treeview\n *ngIf=\"data.length !== 0 && !allNodesHidden\"\n [size]=\"size\"\n [nodes]=\"data\"\n [style.maxHeight.px]=\"listHeight\"\n [animate]=\"false\"\n [(selectedKeys)]=\"selectedKeys\"\n [selectBy]=\"selectBy\"\n [textField]=\"textField\"\n kendoTreeViewSelectable\n [children]=\"children\"\n [hasChildren]=\"hasChildren\"\n [loadOnDemand]=\"loadOnDemand\"\n [isExpanded]=\"isNodeExpanded\"\n [isDisabled]=\"itemDisabled\"\n [nodeTemplate]=\"nodeTemplate\"\n [filter]=\"filter\"\n [isVisible]=\"isNodeVisible\"\n (focusout)=\"handleBlur($event)\"\n (keydown)=\"handleKeydown($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (expand)=\"nodeExpand.emit($event)\"\n (collapse)=\"nodeCollapse.emit($event)\"\n >\n </kendo-treeview>\n <!--footer template-->\n <ng-template\n *ngIf=\"footerTemplate\"\n [templateContext]=\"{\n templateRef: footerTemplate?.templateRef\n }\">\n </ng-template>\n <!--no-data template-->\n <div class=\"k-no-data\" *ngIf=\"data.length === 0 || allNodesHidden\">\n <ng-template [ngIf]=\"noDataTemplate\"\n [templateContext]=\"{\n templateRef: noDataTemplate?.templateRef\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!noDataTemplate\">\n <div>{{ messageFor('noDataText') }}</div>\n </ng-template>\n </div>\n </ng-template>\n <ng-container #container></ng-container>\n ",
8972
10010
  changeDetection: ChangeDetectionStrategy.OnPush
8973
10011
  }),
8974
10012
  __param(7, Optional()), __param(7, Inject(TOUCH_ENABLED)),
8975
- __metadata("design:paramtypes", [PopupService,
10013
+ __metadata("design:paramtypes", [ElementRef,
10014
+ PopupService,
8976
10015
  NavigationService,
8977
10016
  Renderer2,
8978
- ElementRef,
8979
10017
  NgZone,
8980
10018
  ChangeDetectorRef,
8981
10019
  LocalizationService, Boolean])
@@ -8994,16 +10032,18 @@ var isNodeVisible$1 = function () { return true; };
8994
10032
  * Represents the [Kendo UI MultiSelectTree component for Angular]({% slug overview_multiselecttree %}).
8995
10033
  */
8996
10034
  var MultiSelectTreeComponent = /** @class */ (function () {
8997
- function MultiSelectTreeComponent(popupService, renderer, hostElement, navigationService, _zone, localization, cdr, touchEnabled$$1) {
10035
+ function MultiSelectTreeComponent(wrapper, popupService, renderer, navigationService, _zone, localization, cdr, touchEnabled$$1) {
10036
+ this.wrapper = wrapper;
8998
10037
  this.popupService = popupService;
8999
10038
  this.renderer = renderer;
9000
- this.hostElement = hostElement;
9001
10039
  this.navigationService = navigationService;
9002
10040
  this._zone = _zone;
9003
10041
  this.localization = localization;
9004
10042
  this.cdr = cdr;
9005
10043
  this.touchEnabled = touchEnabled$$1;
9006
10044
  this.hostClasses = true;
10045
+ this.role = 'listbox';
10046
+ this.ariaHasPopup = 'tree';
9007
10047
  /**
9008
10048
  * Sets the levels in the data set where the values can be found when `valueField` is an Array.
9009
10049
  * The field serves to correctly allocate a data item used when the MultiSelectTree is initialized with a value.
@@ -9166,14 +10206,93 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9166
10206
  this._popupSettings = DEFAULT_POPUP_SETTINGS$1;
9167
10207
  this._checkableSettings = DEFAULT_CHECKABLE_SETTINGS;
9168
10208
  this._isFocused = false;
10209
+ this._size = 'medium';
10210
+ this._rounded = 'medium';
10211
+ this._fillMode = 'solid';
9169
10212
  this.subscriptions = [];
9170
10213
  this.lastAction = 'check';
9171
10214
  this.onTouchedCallback = noop;
9172
10215
  this.onChangeCallback = noop;
9173
10216
  this.direction = localization.rtl ? 'rtl' : 'ltr';
9174
10217
  this.subscribeEvents();
10218
+ this.subscribeFocusEvents();
9175
10219
  }
9176
10220
  MultiSelectTreeComponent_1 = MultiSelectTreeComponent;
10221
+ Object.defineProperty(MultiSelectTreeComponent.prototype, "isDisabled", {
10222
+ get: function () {
10223
+ return this.disabled;
10224
+ },
10225
+ enumerable: true,
10226
+ configurable: true
10227
+ });
10228
+ Object.defineProperty(MultiSelectTreeComponent.prototype, "isLoading", {
10229
+ get: function () {
10230
+ return this.loading;
10231
+ },
10232
+ enumerable: true,
10233
+ configurable: true
10234
+ });
10235
+ Object.defineProperty(MultiSelectTreeComponent.prototype, "id", {
10236
+ get: function () {
10237
+ return this.focusableId;
10238
+ },
10239
+ enumerable: true,
10240
+ configurable: true
10241
+ });
10242
+ Object.defineProperty(MultiSelectTreeComponent.prototype, "hostTabIndex", {
10243
+ get: function () {
10244
+ return this.tabindex;
10245
+ },
10246
+ enumerable: true,
10247
+ configurable: true
10248
+ });
10249
+ Object.defineProperty(MultiSelectTreeComponent.prototype, "isReadonly", {
10250
+ get: function () {
10251
+ return this.readonly;
10252
+ },
10253
+ enumerable: true,
10254
+ configurable: true
10255
+ });
10256
+ Object.defineProperty(MultiSelectTreeComponent.prototype, "ariaDescribedBy", {
10257
+ get: function () {
10258
+ return this.tagListId;
10259
+ },
10260
+ enumerable: true,
10261
+ configurable: true
10262
+ });
10263
+ Object.defineProperty(MultiSelectTreeComponent.prototype, "ariaActiveDescendant", {
10264
+ get: function () {
10265
+ return this.focusedTagId;
10266
+ },
10267
+ enumerable: true,
10268
+ configurable: true
10269
+ });
10270
+ /**
10271
+ * @hidden
10272
+ */
10273
+ MultiSelectTreeComponent.prototype.handleClick = function () {
10274
+ this.togglePopup(!this.isOpen);
10275
+ };
10276
+ /**
10277
+ * @hidden
10278
+ */
10279
+ MultiSelectTreeComponent.prototype.handleKeydown = function (event) {
10280
+ var deleteTag = this.isWrapperActive && event.keyCode === Keys.Backspace && this.tags.length > 0;
10281
+ if (deleteTag) {
10282
+ this.handleBackspace();
10283
+ return;
10284
+ }
10285
+ if (this.disabled || this.readonly) {
10286
+ return;
10287
+ }
10288
+ var eventData = event;
10289
+ var action = this.navigationService.process({
10290
+ originalEvent: eventData
10291
+ });
10292
+ if (action === NavigationAction.Open) {
10293
+ eventData.preventDefault();
10294
+ }
10295
+ };
9177
10296
  Object.defineProperty(MultiSelectTreeComponent.prototype, "treeview", {
9178
10297
  get: function () {
9179
10298
  return this._treeview;
@@ -9214,6 +10333,79 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9214
10333
  enumerable: true,
9215
10334
  configurable: true
9216
10335
  });
10336
+ Object.defineProperty(MultiSelectTreeComponent.prototype, "size", {
10337
+ get: function () {
10338
+ return this._size;
10339
+ },
10340
+ /**
10341
+ * Sets the size of the component.
10342
+ *
10343
+ * The possible values are:
10344
+ * * `'small'`
10345
+ * * `'medium'` (default)
10346
+ * * `'large'`
10347
+ * * `null`
10348
+ *
10349
+ */
10350
+ set: function (size) {
10351
+ this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));
10352
+ if (size) {
10353
+ this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', size));
10354
+ }
10355
+ this._size = size;
10356
+ },
10357
+ enumerable: true,
10358
+ configurable: true
10359
+ });
10360
+ Object.defineProperty(MultiSelectTreeComponent.prototype, "rounded", {
10361
+ get: function () {
10362
+ return this._rounded;
10363
+ },
10364
+ /**
10365
+ * Sets the border radius of the component.
10366
+ *
10367
+ * The possible values are:
10368
+ * * `'small'`
10369
+ * * `'medium'` (default)
10370
+ * * `'large'`
10371
+ * * `'full'`
10372
+ * * `null`
10373
+ *
10374
+ */
10375
+ set: function (rounded) {
10376
+ this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));
10377
+ if (rounded) {
10378
+ this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(rounded));
10379
+ }
10380
+ this._rounded = rounded;
10381
+ },
10382
+ enumerable: true,
10383
+ configurable: true
10384
+ });
10385
+ Object.defineProperty(MultiSelectTreeComponent.prototype, "fillMode", {
10386
+ get: function () {
10387
+ return this._fillMode;
10388
+ },
10389
+ /**
10390
+ * Sets the fillMode of the component.
10391
+ *
10392
+ * The possible values are:
10393
+ * * `'flat'`
10394
+ * * `'solid'` (default)
10395
+ * * `'outline'`
10396
+ * * `null`
10397
+ *
10398
+ */
10399
+ set: function (fillMode) {
10400
+ this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));
10401
+ if (fillMode) {
10402
+ this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', fillMode));
10403
+ }
10404
+ this._fillMode = fillMode;
10405
+ },
10406
+ enumerable: true,
10407
+ configurable: true
10408
+ });
9217
10409
  Object.defineProperty(MultiSelectTreeComponent.prototype, "popupSettings", {
9218
10410
  get: function () {
9219
10411
  return this._popupSettings;
@@ -9333,7 +10525,7 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9333
10525
  return this._isFocused;
9334
10526
  },
9335
10527
  set: function (isFocused) {
9336
- this.renderer[isFocused ? 'addClass' : 'removeClass'](this.hostElement.nativeElement, 'k-state-focused');
10528
+ this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');
9337
10529
  this._isFocused = isFocused;
9338
10530
  },
9339
10531
  enumerable: true,
@@ -9384,7 +10576,7 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9384
10576
  * @hidden
9385
10577
  */
9386
10578
  get: function () {
9387
- var containerClasses = ['k-popup-dropdowntree', 'k-reset', 'k-group', 'k-list-container'];
10579
+ var containerClasses = ['k-popup-dropdowntree'];
9388
10580
  if (this.popupSettings.popupClass) {
9389
10581
  containerClasses.push(this.popupSettings.popupClass);
9390
10582
  }
@@ -9520,7 +10712,7 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9520
10712
  });
9521
10713
  MultiSelectTreeComponent.prototype.ngOnInit = function () {
9522
10714
  var _this = this;
9523
- this.renderer.removeAttribute(this.hostElement.nativeElement, 'tabindex');
10715
+ this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');
9524
10716
  this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', String(this.isOpen));
9525
10717
  this.subscriptions.push(this.localization
9526
10718
  .changes.subscribe(function (_a) {
@@ -9528,6 +10720,7 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9528
10720
  _this.direction = rtl ? 'rtl' : 'ltr';
9529
10721
  _this.cdr.markForCheck();
9530
10722
  }));
10723
+ this.setComponentClasses();
9531
10724
  };
9532
10725
  /**
9533
10726
  * @hidden
@@ -9633,8 +10826,12 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9633
10826
  /**
9634
10827
  * @hidden
9635
10828
  */
9636
- MultiSelectTreeComponent.prototype.handleFocus = function () {
10829
+ MultiSelectTreeComponent.prototype.handleFocus = function (event) {
9637
10830
  var _this = this;
10831
+ if (event.target !== this.wrapper.nativeElement) {
10832
+ return;
10833
+ }
10834
+ event.stopImmediatePropagation();
9638
10835
  if (!this.isFocused) {
9639
10836
  this.isFocused = true;
9640
10837
  if (hasObservers(this.onFocus)) {
@@ -9644,7 +10841,9 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9644
10841
  }
9645
10842
  // Re-focus the treeview if `close` is prevented
9646
10843
  if (this.isOpen && this.treeview) {
9647
- this.lastNodeOnFocus.setAttribute('tabindex', '0');
10844
+ if (this.lastNodeOnFocus) {
10845
+ this.lastNodeOnFocus.setAttribute('tabindex', '0');
10846
+ }
9648
10847
  this.treeview.focus();
9649
10848
  }
9650
10849
  }
@@ -9655,46 +10854,20 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9655
10854
  MultiSelectTreeComponent.prototype.handleBlur = function (e) {
9656
10855
  var _this = this;
9657
10856
  var relatedTarget = e && e.relatedTarget;
9658
- if (this.hostElement.nativeElement.contains(relatedTarget) ||
10857
+ if (this.wrapper.nativeElement.contains(relatedTarget) ||
9659
10858
  (this.isOpen && this.popupRef.popupElement.contains(relatedTarget))) {
9660
10859
  return;
9661
10860
  }
9662
10861
  this.isFocused = false;
9663
10862
  this.togglePopup(false);
9664
10863
  if (hasObservers(this.onBlur) ||
9665
- isUntouched(this.hostElement.nativeElement)) {
10864
+ isUntouched(this.wrapper.nativeElement)) {
9666
10865
  this._zone.run(function () {
9667
10866
  _this.onBlur.emit();
9668
10867
  _this.onTouchedCallback();
9669
10868
  });
9670
10869
  }
9671
10870
  };
9672
- /**
9673
- * @hidden
9674
- */
9675
- MultiSelectTreeComponent.prototype.handleClick = function () {
9676
- this.togglePopup(!this.isOpen);
9677
- };
9678
- /**
9679
- * @hidden
9680
- */
9681
- MultiSelectTreeComponent.prototype.handleKeydown = function (event) {
9682
- var deleteTag = this.isWrapperActive && event.keyCode === Keys.Backspace && this.tags.length > 0;
9683
- if (deleteTag) {
9684
- this.handleBackspace();
9685
- return;
9686
- }
9687
- if (this.disabled || this.readonly) {
9688
- return;
9689
- }
9690
- var eventData = event;
9691
- var action = this.navigationService.process({
9692
- originalEvent: eventData
9693
- });
9694
- if (action === NavigationAction.Open) {
9695
- eventData.preventDefault();
9696
- }
9697
- };
9698
10871
  /**
9699
10872
  * @hidden
9700
10873
  */
@@ -9834,6 +11007,26 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9834
11007
  this.filterChange.next(term);
9835
11008
  this.allNodesHidden = this.nodes.every(function (node, index) { return !_this.isVisible(node, String(index)); });
9836
11009
  };
11010
+ Object.defineProperty(MultiSelectTreeComponent.prototype, "filterInputClasses", {
11011
+ /**
11012
+ * @hidden
11013
+ */
11014
+ get: function () {
11015
+ return (this.size ? getSizeClass('input', this.size) : '') + " " + (this.fillMode ? 'k-input-' + this.fillMode : '') + " " + (this.rounded ? getRoundedClass(this.rounded) : '');
11016
+ },
11017
+ enumerable: true,
11018
+ configurable: true
11019
+ });
11020
+ Object.defineProperty(MultiSelectTreeComponent.prototype, "checkAllCheckboxClasses", {
11021
+ /**
11022
+ * @hidden
11023
+ */
11024
+ get: function () {
11025
+ return "" + (this.size ? getSizeClass('checkbox', this.size) : '');
11026
+ },
11027
+ enumerable: true,
11028
+ configurable: true
11029
+ });
9837
11030
  /**
9838
11031
  * @hidden
9839
11032
  */
@@ -9949,6 +11142,32 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9949
11142
  .pipe(filter(function () { return !_this.isTreeViewActive; }))
9950
11143
  .subscribe(this.direction === 'rtl' ? this.handleLeftKey.bind(this) : this.handleRightKey.bind(this)), this.navigationService.home.pipe(filter(function () { return !_this.isOpen; })).subscribe(this.handleHome.bind(this)), this.navigationService.end.pipe(filter(function () { return !_this.isOpen; })).subscribe(this.handleEnd.bind(this)), this.navigationService.backspace.pipe(filter(function () { return _this.isTagFocused; })).subscribe(this.handleBackspace.bind(this)), this.navigationService.delete.pipe(filter(function () { return _this.isTagFocused; })).subscribe(this.handleDelete.bind(this)));
9951
11144
  };
11145
+ MultiSelectTreeComponent.prototype.subscribeFocusEvents = function () {
11146
+ var _this = this;
11147
+ if (isDocumentAvailable()) {
11148
+ this.handleFocus = this.handleFocus.bind(this);
11149
+ this.handleDocumentBlur = this.handleDocumentBlur.bind(this);
11150
+ this._zone.runOutsideAngular(function () {
11151
+ var useCapture = true;
11152
+ document.addEventListener('focus', _this.handleFocus, useCapture);
11153
+ document.addEventListener('blur', _this.handleDocumentBlur, useCapture);
11154
+ });
11155
+ }
11156
+ };
11157
+ MultiSelectTreeComponent.prototype.unSubscribeFocusEvents = function () {
11158
+ if (isDocumentAvailable()) {
11159
+ var useCapture = true;
11160
+ document.removeEventListener('focus', this.handleFocus, useCapture);
11161
+ document.removeEventListener('blur', this.handleDocumentBlur, useCapture);
11162
+ }
11163
+ };
11164
+ MultiSelectTreeComponent.prototype.handleDocumentBlur = function (event) {
11165
+ if (event.target !== this.wrapper.nativeElement) {
11166
+ return;
11167
+ }
11168
+ event.stopImmediatePropagation();
11169
+ this.handleBlur(event);
11170
+ };
9952
11171
  MultiSelectTreeComponent.prototype.handleTabKey = function () {
9953
11172
  this.focus();
9954
11173
  if (this.isOpen) {
@@ -10051,6 +11270,7 @@ var MultiSelectTreeComponent = /** @class */ (function () {
10051
11270
  };
10052
11271
  MultiSelectTreeComponent.prototype.unsubscribeEvents = function () {
10053
11272
  this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });
11273
+ this.unSubscribeFocusEvents();
10054
11274
  };
10055
11275
  /**
10056
11276
  * Remove the `TreeView` from the tab order, otherwise a focus loop between the page elements will occur
@@ -10100,16 +11320,84 @@ var MultiSelectTreeComponent = /** @class */ (function () {
10100
11320
  return indices;
10101
11321
  }, []));
10102
11322
  };
11323
+ MultiSelectTreeComponent.prototype.setComponentClasses = function () {
11324
+ if (this.size) {
11325
+ this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));
11326
+ }
11327
+ if (this.rounded) {
11328
+ this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));
11329
+ }
11330
+ if (this.fillMode) {
11331
+ this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));
11332
+ }
11333
+ };
10103
11334
  var MultiSelectTreeComponent_1;
10104
11335
  __decorate([
10105
- HostBinding('class.k-widget'),
10106
11336
  HostBinding('class.k-dropdowntree'),
11337
+ HostBinding('class.k-input'),
10107
11338
  __metadata("design:type", Boolean)
10108
11339
  ], MultiSelectTreeComponent.prototype, "hostClasses", void 0);
11340
+ __decorate([
11341
+ HostBinding('class.k-disabled'),
11342
+ HostBinding('attr.aria-disabled'),
11343
+ __metadata("design:type", Boolean),
11344
+ __metadata("design:paramtypes", [])
11345
+ ], MultiSelectTreeComponent.prototype, "isDisabled", null);
11346
+ __decorate([
11347
+ HostBinding('class.k-loading'),
11348
+ __metadata("design:type", Boolean),
11349
+ __metadata("design:paramtypes", [])
11350
+ ], MultiSelectTreeComponent.prototype, "isLoading", null);
11351
+ __decorate([
11352
+ HostBinding('attr.id'),
11353
+ __metadata("design:type", String),
11354
+ __metadata("design:paramtypes", [])
11355
+ ], MultiSelectTreeComponent.prototype, "id", null);
10109
11356
  __decorate([
10110
11357
  HostBinding('attr.dir'),
10111
11358
  __metadata("design:type", String)
10112
11359
  ], MultiSelectTreeComponent.prototype, "direction", void 0);
11360
+ __decorate([
11361
+ HostBinding('attr.tabindex'),
11362
+ __metadata("design:type", Number),
11363
+ __metadata("design:paramtypes", [])
11364
+ ], MultiSelectTreeComponent.prototype, "hostTabIndex", null);
11365
+ __decorate([
11366
+ HostBinding('attr.role'),
11367
+ __metadata("design:type", String)
11368
+ ], MultiSelectTreeComponent.prototype, "role", void 0);
11369
+ __decorate([
11370
+ HostBinding('attr.aria-haspopup'),
11371
+ __metadata("design:type", String)
11372
+ ], MultiSelectTreeComponent.prototype, "ariaHasPopup", void 0);
11373
+ __decorate([
11374
+ HostBinding('attr.readonly'),
11375
+ HostBinding('attr.aria-readonly'),
11376
+ __metadata("design:type", Boolean),
11377
+ __metadata("design:paramtypes", [])
11378
+ ], MultiSelectTreeComponent.prototype, "isReadonly", null);
11379
+ __decorate([
11380
+ HostBinding('attr.aria-describedby'),
11381
+ __metadata("design:type", String),
11382
+ __metadata("design:paramtypes", [])
11383
+ ], MultiSelectTreeComponent.prototype, "ariaDescribedBy", null);
11384
+ __decorate([
11385
+ HostBinding('attr.aria-activedescendant'),
11386
+ __metadata("design:type", String),
11387
+ __metadata("design:paramtypes", [])
11388
+ ], MultiSelectTreeComponent.prototype, "ariaActiveDescendant", null);
11389
+ __decorate([
11390
+ HostListener('click'),
11391
+ __metadata("design:type", Function),
11392
+ __metadata("design:paramtypes", []),
11393
+ __metadata("design:returntype", void 0)
11394
+ ], MultiSelectTreeComponent.prototype, "handleClick", null);
11395
+ __decorate([
11396
+ HostListener('keydown', ['$event']),
11397
+ __metadata("design:type", Function),
11398
+ __metadata("design:paramtypes", [Object]),
11399
+ __metadata("design:returntype", void 0)
11400
+ ], MultiSelectTreeComponent.prototype, "handleKeydown", null);
10113
11401
  __decorate([
10114
11402
  ContentChild(HeaderTemplateDirective, { static: false }),
10115
11403
  __metadata("design:type", HeaderTemplateDirective)
@@ -10138,10 +11426,6 @@ var MultiSelectTreeComponent = /** @class */ (function () {
10138
11426
  ViewChild('popupTemplate', { static: true }),
10139
11427
  __metadata("design:type", TemplateRef)
10140
11428
  ], MultiSelectTreeComponent.prototype, "popupTemplate", void 0);
10141
- __decorate([
10142
- ViewChild('wrapper', { static: true }),
10143
- __metadata("design:type", ElementRef)
10144
- ], MultiSelectTreeComponent.prototype, "wrapper", void 0);
10145
11429
  __decorate([
10146
11430
  ViewChild('container', { read: ViewContainerRef, static: true }),
10147
11431
  __metadata("design:type", ViewContainerRef)
@@ -10164,6 +11448,21 @@ var MultiSelectTreeComponent = /** @class */ (function () {
10164
11448
  __metadata("design:type", Number),
10165
11449
  __metadata("design:paramtypes", [Number])
10166
11450
  ], MultiSelectTreeComponent.prototype, "tabindex", null);
11451
+ __decorate([
11452
+ Input(),
11453
+ __metadata("design:type", String),
11454
+ __metadata("design:paramtypes", [String])
11455
+ ], MultiSelectTreeComponent.prototype, "size", null);
11456
+ __decorate([
11457
+ Input(),
11458
+ __metadata("design:type", String),
11459
+ __metadata("design:paramtypes", [String])
11460
+ ], MultiSelectTreeComponent.prototype, "rounded", null);
11461
+ __decorate([
11462
+ Input(),
11463
+ __metadata("design:type", String),
11464
+ __metadata("design:paramtypes", [String])
11465
+ ], MultiSelectTreeComponent.prototype, "fillMode", null);
10167
11466
  __decorate([
10168
11467
  Input(),
10169
11468
  __metadata("design:type", Object),
@@ -10345,12 +11644,12 @@ var MultiSelectTreeComponent = /** @class */ (function () {
10345
11644
  }
10346
11645
  ],
10347
11646
  selector: 'kendo-multiselecttree',
10348
- template: "\n <ng-container kendoMultiSelectTreeLocalizedMessages\n i18n-noDataText=\"kendo.multiselecttree.noDataText|The text displayed in the popup when there are no items\"\n noDataText=\"NO DATA FOUND\"\n\n i18n-clearTitle=\"kendo.multiselecttree.clearTitle|The title of the clear button\"\n clearTitle=\"clear\"\n\n i18n-checkAllText=\"kendo.multiselecttree.checkAllText|The text displayed for the check-all checkbox\"\n checkAllText=\"Check all\"\n >\n </ng-container>\n <div #wrapper\n [ngClass]=\"{\n 'k-multiselect-wrap': true,\n 'k-floatwrap': true,\n 'k-state-disabled': this.disabled\n }\"\n role=\"listbox\"\n aria-haspopup=\"tree\"\n [attr.aria-describedby]=\"tagListId\"\n [attr.aria-readonly]=\"readonly\"\n [attr.aria-activedescendant]=\"focusedTagId\"\n [attr.tabindex]=\"tabindex\"\n [attr.id]=\"focusableId\"\n [attr.dir]=\"direction\"\n (click)=\"handleClick()\"\n (keydown)=\"handleKeydown($event)\"\n [kendoEventsOutsideAngular]=\"{\n focus: handleFocus,\n blur: handleBlur\n }\"\n [scope]=\"this\"\n >\n <kendo-taglist\n [id]=\"tagListId\"\n [tags]=\"tags\"\n [focused]=\"focusedTagIndex\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [valueDepth]=\"valueDepth\"\n [disabled]=\"disabled\"\n [tagPrefix]=\"tagPrefix\"\n [template]=\"tagTemplate\"\n [groupTemplate]=\"groupTagTemplate\"\n [disabledIndices]=\"disabledIndices\"\n (removeTag)=\"handleRemoveTag($event)\"\n >\n </kendo-taglist>\n <span *ngIf=\"!tags || !tags.length\"\n class=\"k-input k-readonly\"\n >\n {{ placeholder }}\n </span>\n <span\n *ngIf=\"!disabled && !loading && !readonly && clearButton && tags?.length\"\n class=\"k-icon k-clear-value k-i-close\"\n [attr.title]=\"messageFor('clearTitle')\"\n role=\"button\"\n tabindex=\"-1\"\n (click)=\"clearAll($event)\"\n >\n </span>\n <span\n *ngIf=\"loading\"\n class=\"k-icon k-i-loading\"\n >\n </span>\n </div>\n <ng-template #popupTemplate>\n <span\n *ngIf=\"filterable\"\n class=\"k-list-filter\"\n >\n <input\n #filterInput\n (input)=\"handleFilterInputChange($event.target.value)\"\n [filterInput]=\"filterable && !touchEnabled\"\n (keydown)=\"handleKeydown($event)\"\n [(ngModel)]=\"filter\"\n class=\"k-textbox\"\n role=\"textbox\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n aria-readonly=\"false\"\n [kendoEventsOutsideAngular]=\"{\n blur: handleBlur\n }\"\n [scope]=\"this\"\n >\n <span class=\"k-icon k-i-zoom\"></span>\n </span>\n <!--header template-->\n <ng-template\n *ngIf=\"headerTemplate\"\n [templateContext]=\"{\n templateRef: headerTemplate?.templateRef\n }\">\n </ng-template>\n <div *ngIf=\"checkAll\" class=\"k-check-all\">\n <input\n #checkAllInput\n [checkAll]=\"!filterable && !touchEnabled\"\n type=\"checkbox\"\n class=\"k-checkbox\"\n role=\"checkbox\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n aria-readonly=\"false\"\n [treeview]=\"treeview\"\n [checkedItems]=\"checkedItems\"\n [valueField]=\"valueField\"\n [lastAction]=\"lastAction\"\n (checkedItemsChange)=\"handleCheckedItemsChange($event)\"\n (keydown)=\"handleKeydown($event)\"\n [kendoEventsOutsideAngular]=\"{\n blur: handleBlur\n }\"\n [scope]=\"this\"\n >\n <span\n class=\"k-checkbox-label\"\n (click)=\"toggleCheckAll()\"\n (mousedown)=\"$event.preventDefault()\"\n >\n {{ messageFor('checkAllText') }}\n </span>\n </div>\n <kendo-treeview\n #treeview\n [nodes]=\"data\"\n [style.maxHeight.px]=\"listHeight\"\n [animate]=\"false\"\n kendoMultiSelectTreeCheckable\n [checkable]=\"checkableSettings\"\n [checkedItems]=\"checkedItems\"\n [valueField]=\"valueField\"\n [textField]=\"textField\"\n [children]=\"children\"\n [hasChildren]=\"hasChildren\"\n [isExpanded]=\"isNodeExpanded\"\n [isDisabled]=\"itemDisabled\"\n [nodeTemplate]=\"nodeTemplate\"\n [loadOnDemand]=\"loadOnDemand\"\n [filter]=\"filter\"\n [isVisible]=\"isNodeVisible\"\n (keydown)=\"handleKeydown($event)\"\n (nodeClick)=\"handleNodeClick($event)\"\n (expand)=\"nodeExpand.emit($event)\"\n (collapse)=\"nodeCollapse.emit($event)\"\n (checkedItemsChange)=\"handleCheckedItemsChange($event)\"\n [kendoEventsOutsideAngular]=\"{\n focusout: handleBlur\n }\"\n [scope]=\"this\"\n >\n </kendo-treeview>\n <!--footer template-->\n <ng-template\n *ngIf=\"footerTemplate\"\n [templateContext]=\"{\n templateRef: footerTemplate?.templateRef\n }\">\n </ng-template>\n <!--no-data template-->\n <div class=\"k-nodata\" *ngIf=\"data?.length === 0 || allNodesHidden\">\n <ng-template [ngIf]=\"noDataTemplate\"\n [templateContext]=\"{\n templateRef: noDataTemplate?.templateRef\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!noDataTemplate\">\n <div>{{ messageFor('noDataText') }}</div>\n </ng-template>\n </div>\n </ng-template>\n <ng-container #container></ng-container>\n "
11647
+ template: "\n <ng-container kendoMultiSelectTreeLocalizedMessages\n i18n-noDataText=\"kendo.multiselecttree.noDataText|The text displayed in the popup when there are no items\"\n noDataText=\"NO DATA FOUND\"\n\n i18n-clearTitle=\"kendo.multiselecttree.clearTitle|The title of the clear button\"\n clearTitle=\"clear\"\n\n i18n-checkAllText=\"kendo.multiselecttree.checkAllText|The text displayed for the check-all checkbox\"\n checkAllText=\"Check all\"\n >\n </ng-container>\n <kendo-taglist\n [size]=\"size\"\n [rounded]=\"rounded\"\n [fillMode]=\"fillMode\"\n [id]=\"tagListId\"\n [tags]=\"tags\"\n [focused]=\"focusedTagIndex\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [valueDepth]=\"valueDepth\"\n [disabled]=\"disabled\"\n [tagPrefix]=\"tagPrefix\"\n [template]=\"tagTemplate\"\n [groupTemplate]=\"groupTagTemplate\"\n [disabledIndices]=\"disabledIndices\"\n (removeTag)=\"handleRemoveTag($event)\"\n >\n <span *ngIf=\"!tags || !tags.length\"\n class=\"k-input-inner k-readonly\"\n >\n <span class=\"k-input-value-text\">{{ placeholder }}</span>\n </span>\n </kendo-taglist>\n <span\n *ngIf=\"!disabled && !loading && !readonly && clearButton && tags?.length\"\n class=\"k-clear-value\"\n [attr.title]=\"messageFor('clearTitle')\"\n role=\"button\"\n tabindex=\"-1\"\n (click)=\"clearAll($event)\"\n >\n <span class=\"k-icon k-i-x\"></span>\n </span>\n <span\n *ngIf=\"loading\"\n class=\"k-icon k-i-loading\"\n >\n </span>\n <ng-template #popupTemplate>\n <span\n *ngIf=\"filterable\"\n class=\"k-list-filter\"\n >\n <span\n class=\"k-textbox k-input\"\n [ngClass]=\"filterInputClasses\"\n >\n <span class=\"k-input-prefix\">\n <span class=\"k-input-icon k-icon k-i-search\"></span>\n </span>\n <input\n #filterInput\n (input)=\"handleFilterInputChange($event.target.value)\"\n [filterInput]=\"filterable && !touchEnabled\"\n (keydown)=\"handleKeydown($event)\"\n [(ngModel)]=\"filter\"\n class=\"k-input-inner\"\n role=\"textbox\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n aria-readonly=\"false\"\n [kendoEventsOutsideAngular]=\"{\n blur: handleBlur\n }\"\n [scope]=\"this\"\n >\n </span>\n </span>\n <!--header template-->\n <ng-template\n *ngIf=\"headerTemplate\"\n [templateContext]=\"{\n templateRef: headerTemplate?.templateRef\n }\">\n </ng-template>\n <div *ngIf=\"checkAll\" class=\"k-check-all\">\n <input\n #checkAllInput\n [checkAll]=\"!filterable && !touchEnabled\"\n type=\"checkbox\"\n class=\"k-checkbox\"\n [ngClass]=\"checkAllCheckboxClasses\"\n role=\"checkbox\"\n tabindex=\"0\"\n aria-disabled=\"false\"\n aria-readonly=\"false\"\n [treeview]=\"treeview\"\n [checkedItems]=\"checkedItems\"\n [valueField]=\"valueField\"\n [lastAction]=\"lastAction\"\n (checkedItemsChange)=\"handleCheckedItemsChange($event)\"\n (keydown)=\"handleKeydown($event)\"\n [kendoEventsOutsideAngular]=\"{\n blur: handleBlur\n }\"\n [scope]=\"this\"\n >\n <span\n class=\"k-checkbox-label\"\n (click)=\"toggleCheckAll()\"\n (mousedown)=\"$event.preventDefault()\"\n >\n {{ messageFor('checkAllText') }}\n </span>\n </div>\n <kendo-treeview\n #treeview\n [size]=\"size\"\n [nodes]=\"data\"\n [style.maxHeight.px]=\"listHeight\"\n [animate]=\"false\"\n kendoMultiSelectTreeCheckable\n [checkable]=\"checkableSettings\"\n [checkedItems]=\"checkedItems\"\n [valueField]=\"valueField\"\n [textField]=\"textField\"\n [children]=\"children\"\n [hasChildren]=\"hasChildren\"\n [isExpanded]=\"isNodeExpanded\"\n [isDisabled]=\"itemDisabled\"\n [nodeTemplate]=\"nodeTemplate\"\n [loadOnDemand]=\"loadOnDemand\"\n [filter]=\"filter\"\n [isVisible]=\"isNodeVisible\"\n (keydown)=\"handleKeydown($event)\"\n (nodeClick)=\"handleNodeClick($event)\"\n (expand)=\"nodeExpand.emit($event)\"\n (collapse)=\"nodeCollapse.emit($event)\"\n (checkedItemsChange)=\"handleCheckedItemsChange($event)\"\n [kendoEventsOutsideAngular]=\"{\n focusout: handleBlur\n }\"\n [scope]=\"this\"\n >\n </kendo-treeview>\n <!--footer template-->\n <ng-template\n *ngIf=\"footerTemplate\"\n [templateContext]=\"{\n templateRef: footerTemplate?.templateRef\n }\">\n </ng-template>\n <!--no-data template-->\n <div class=\"k-no-data\" *ngIf=\"data?.length === 0 || allNodesHidden\">\n <ng-template [ngIf]=\"noDataTemplate\"\n [templateContext]=\"{\n templateRef: noDataTemplate?.templateRef\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!noDataTemplate\">\n <div>{{ messageFor('noDataText') }}</div>\n </ng-template>\n </div>\n </ng-template>\n <ng-container #container></ng-container>\n "
10349
11648
  }),
10350
11649
  __param(7, Optional()), __param(7, Inject(TOUCH_ENABLED)),
10351
- __metadata("design:paramtypes", [PopupService,
11650
+ __metadata("design:paramtypes", [ElementRef,
11651
+ PopupService,
10352
11652
  Renderer2,
10353
- ElementRef,
10354
11653
  NavigationService,
10355
11654
  NgZone,
10356
11655
  LocalizationService,
@@ -10504,13 +11803,40 @@ var DropDownTreesExpandDirective = /** @class */ (function (_super) {
10504
11803
  * @hidden
10505
11804
  */
10506
11805
  var TagListComponent = /** @class */ (function () {
10507
- function TagListComponent() {
11806
+ function TagListComponent(renderer, hostElement) {
11807
+ this.renderer = renderer;
11808
+ this.hostElement = hostElement;
11809
+ this.rounded = 'medium';
11810
+ this.fillMode = 'solid';
10508
11811
  /**
10509
11812
  * A collection with the disabled tags' indices.
10510
11813
  */
10511
11814
  this.disabledIndices = new Set();
10512
11815
  this.removeTag = new EventEmitter();
11816
+ this.hostClasses = true;
11817
+ this._size = 'medium';
10513
11818
  }
11819
+ Object.defineProperty(TagListComponent.prototype, "size", {
11820
+ get: function () {
11821
+ return this._size;
11822
+ },
11823
+ set: function (size) {
11824
+ this.renderer.removeClass(this.hostElement.nativeElement, getSizeClass('chip-list', this.size));
11825
+ if (size) {
11826
+ this.renderer.addClass(this.hostElement.nativeElement, getSizeClass('chip-list', size));
11827
+ }
11828
+ this._size = size;
11829
+ },
11830
+ enumerable: true,
11831
+ configurable: true
11832
+ });
11833
+ Object.defineProperty(TagListComponent.prototype, "hostId", {
11834
+ get: function () {
11835
+ return this.id;
11836
+ },
11837
+ enumerable: true,
11838
+ configurable: true
11839
+ });
10514
11840
  TagListComponent.prototype.tagProp = function (tag, prop, index) {
10515
11841
  var propField = prop && this.getPropField(tag, prop, index);
10516
11842
  return getter$1(tag, propField);
@@ -10600,6 +11926,19 @@ var TagListComponent = /** @class */ (function () {
10600
11926
  Input(),
10601
11927
  __metadata("design:type", String)
10602
11928
  ], TagListComponent.prototype, "id", void 0);
11929
+ __decorate([
11930
+ Input(),
11931
+ __metadata("design:type", String),
11932
+ __metadata("design:paramtypes", [String])
11933
+ ], TagListComponent.prototype, "size", null);
11934
+ __decorate([
11935
+ Input(),
11936
+ __metadata("design:type", String)
11937
+ ], TagListComponent.prototype, "rounded", void 0);
11938
+ __decorate([
11939
+ Input(),
11940
+ __metadata("design:type", String)
11941
+ ], TagListComponent.prototype, "fillMode", void 0);
10603
11942
  __decorate([
10604
11943
  Input(),
10605
11944
  __metadata("design:type", Set)
@@ -10608,11 +11947,24 @@ var TagListComponent = /** @class */ (function () {
10608
11947
  Output(),
10609
11948
  __metadata("design:type", EventEmitter)
10610
11949
  ], TagListComponent.prototype, "removeTag", void 0);
11950
+ __decorate([
11951
+ HostBinding('class.k-input-values'),
11952
+ HostBinding('class.k-chip-list'),
11953
+ HostBinding('class.k-selection-multiple'),
11954
+ __metadata("design:type", Boolean)
11955
+ ], TagListComponent.prototype, "hostClasses", void 0);
11956
+ __decorate([
11957
+ HostBinding('attr.id'),
11958
+ __metadata("design:type", String),
11959
+ __metadata("design:paramtypes", [])
11960
+ ], TagListComponent.prototype, "hostId", null);
10611
11961
  TagListComponent = __decorate([
10612
11962
  Component({
10613
11963
  selector: 'kendo-taglist',
10614
- template: "\n <ul [attr.id]=\"id\" class=\"k-reset\">\n <li\n *ngFor=\"let tag of tags; let index = index;\"\n role=\"option\"\n [attr.id]=\"itemId(tag, index)\"\n [attr.aria-hidden]=\"tagAriaHidden(index)\"\n aria-selected=\"true\"\n [attr.aria-setsize]=\"tags?.length\"\n class=\"k-button\"\n [ngClass]=\"{\n 'k-state-focused': index === focused,\n 'k-state-disabled': isTagDisabled(tag, index)\n }\"\n >\n <ng-template *ngIf=\"isGroupTag(tag); then groupTag else singleTag\"></ng-template>\n <ng-template #groupTag>\n <span>\n <ng-template *ngIf=\"groupTemplate\"\n [templateContext]=\"{\n templateRef: groupTemplate.templateRef,\n $implicit: tag\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!groupTemplate\">{{ tag.length }} {{ tag.length === 1 ? 'item' : 'items' }} selected</ng-template>\n </span>\n </ng-template>\n <ng-template #singleTag>\n <span>\n <ng-template *ngIf=\"template\"\n [templateContext]=\"{\n templateRef: template.templateRef,\n $implicit: tag\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!template\">{{ tagProp(tag, textField, index) }}</ng-template>\n </span>\n </ng-template>\n\n <span aria-label=\"delete\" [attr.aria-hidden]=\"index !== focused\" class=\"k-select\">\n <span class=\"k-icon k-i-close\" (mousedown)=\"deleteTag($event, tag, index)\">\n </span>\n </span>\n </li>\n </ul>\n "
10615
- })
11964
+ template: "\n <div\n *ngFor=\"let tag of tags; let index = index;\"\n role=\"option\"\n [attr.id]=\"itemId(tag, index)\"\n [attr.aria-hidden]=\"tagAriaHidden(index)\"\n aria-selected=\"true\"\n [attr.aria-setsize]=\"tags?.length\"\n class=\"k-chip\"\n [ngClass]=\"{\n 'k-focus': index === focused,\n 'k-disabled': isTagDisabled(tag, index),\n 'k-chip-sm': size === 'small',\n 'k-chip-md': size === 'medium',\n 'k-chip-lg': size === 'large',\n 'k-rounded-sm': rounded === 'small',\n 'k-rounded-md': rounded === 'medium',\n 'k-rounded-lg': rounded === 'large',\n 'k-rounded-full': rounded === 'full',\n 'k-chip-solid k-chip-solid-base': fillMode === 'solid',\n 'k-chip-flat k-chip-flat-base': fillMode === 'flat',\n 'k-chip-outline k-chip-outline-base': fillMode === 'outline'\n }\"\n >\n <span class=\"k-chip-content\">\n <ng-template *ngIf=\"isGroupTag(tag); then groupTag else singleTag\"></ng-template>\n <ng-template #groupTag>\n <span class=\"k-chip-label k-text-ellipsis\">\n <ng-template *ngIf=\"groupTemplate\"\n [templateContext]=\"{\n templateRef: groupTemplate.templateRef,\n $implicit: tag\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!groupTemplate\">{{ tag.length }} {{ tag.length === 1 ? 'item' : 'items' }} selected</ng-template>\n </span>\n </ng-template>\n <ng-template #singleTag>\n <span class=\"k-chip-label k-text-ellipsis\">\n <ng-template *ngIf=\"template\"\n [templateContext]=\"{\n templateRef: template.templateRef,\n $implicit: tag\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!template\">{{ tagProp(tag, textField, index) }}</ng-template>\n </span>\n </ng-template>\n </span>\n\n <span class=\"k-chip-actions\">\n <span aria-label=\"delete\" [attr.aria-hidden]=\"index !== focused\" class=\"k-chip-action k-chip-remove-action\">\n <span class=\"k-icon k-i-x-circle\" (mousedown)=\"deleteTag($event, tag, index)\">\n </span>\n </span>\n </span>\n </div>\n <ng-content></ng-content>\n "
11965
+ }),
11966
+ __metadata("design:paramtypes", [Renderer2,
11967
+ ElementRef])
10616
11968
  ], TagListComponent);
10617
11969
  return TagListComponent;
10618
11970
  }());
@@ -10970,12 +12322,12 @@ var SelectableDirective = /** @class */ (function () {
10970
12322
  __metadata("design:type", Boolean)
10971
12323
  ], SelectableDirective.prototype, "multipleSelection", void 0);
10972
12324
  __decorate([
10973
- HostBinding('class.k-state-focused'),
12325
+ HostBinding('class.k-focus'),
10974
12326
  __metadata("design:type", Boolean),
10975
12327
  __metadata("design:paramtypes", [])
10976
12328
  ], SelectableDirective.prototype, "focusedClassName", null);
10977
12329
  __decorate([
10978
- HostBinding('class.k-state-selected'),
12330
+ HostBinding('class.k-selected'),
10979
12331
  __metadata("design:type", Boolean),
10980
12332
  __metadata("design:paramtypes", [])
10981
12333
  ], SelectableDirective.prototype, "selectedClassName", null);