@progress/kendo-angular-dropdowns 6.0.1-dev.202201201244 → 6.0.2-dev.202202221531

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 (52) hide show
  1. package/dist/cdn/js/kendo-angular-dropdowns.js +2 -2
  2. package/dist/cdn/main.js +1 -1
  3. package/dist/es/autocomplete/autocomplete.component.js +9 -22
  4. package/dist/es/comboboxes/combobox.component.js +9 -22
  5. package/dist/es/comboboxes/multicolumncombobox.component.js +1 -1
  6. package/dist/es/common/localization/messages.js +4 -0
  7. package/dist/es/common/searchbar.component.js +8 -1
  8. package/dist/es/common/taglist.component.js +1 -1
  9. package/dist/es/dropdownlist/dropdownlist.component.js +10 -16
  10. package/dist/es/dropdowntrees/checked-state/base-check.directive.js +19 -5
  11. package/dist/es/dropdowntrees/dropdowntree.component.js +1 -1
  12. package/dist/es/dropdowntrees/multiselecttree.component.js +13 -1
  13. package/dist/es/multiselect/multiselect.component.js +28 -23
  14. package/dist/es/package-metadata.js +1 -1
  15. package/dist/es2015/autocomplete/autocomplete.component.d.ts +4 -4
  16. package/dist/es2015/autocomplete/autocomplete.component.js +10 -18
  17. package/dist/es2015/comboboxes/combobox.component.d.ts +4 -4
  18. package/dist/es2015/comboboxes/combobox.component.js +14 -19
  19. package/dist/es2015/comboboxes/multicolumncombobox.component.js +3 -2
  20. package/dist/es2015/common/localization/messages.d.ts +4 -0
  21. package/dist/es2015/common/localization/messages.js +4 -0
  22. package/dist/es2015/common/searchbar.component.d.ts +1 -0
  23. package/dist/es2015/common/searchbar.component.js +4 -1
  24. package/dist/es2015/common/taglist.component.js +0 -3
  25. package/dist/es2015/dropdownlist/dropdownlist.component.d.ts +4 -3
  26. package/dist/es2015/dropdownlist/dropdownlist.component.js +15 -16
  27. package/dist/es2015/dropdowntrees/checked-state/base-check.directive.d.ts +7 -0
  28. package/dist/es2015/dropdowntrees/checked-state/base-check.directive.js +19 -5
  29. package/dist/es2015/dropdowntrees/dropdowntree.component.js +5 -0
  30. package/dist/es2015/dropdowntrees/multiselecttree.component.d.ts +1 -0
  31. package/dist/es2015/dropdowntrees/multiselecttree.component.js +9 -1
  32. package/dist/es2015/index.metadata.json +1 -1
  33. package/dist/es2015/multiselect/multiselect.component.d.ts +8 -5
  34. package/dist/es2015/multiselect/multiselect.component.js +27 -21
  35. package/dist/es2015/package-metadata.js +1 -1
  36. package/dist/fesm2015/index.js +110 -86
  37. package/dist/fesm5/index.js +103 -93
  38. package/dist/npm/autocomplete/autocomplete.component.js +9 -22
  39. package/dist/npm/comboboxes/combobox.component.js +9 -22
  40. package/dist/npm/comboboxes/multicolumncombobox.component.js +1 -1
  41. package/dist/npm/common/localization/messages.js +4 -0
  42. package/dist/npm/common/searchbar.component.js +8 -1
  43. package/dist/npm/common/taglist.component.js +1 -1
  44. package/dist/npm/dropdownlist/dropdownlist.component.js +10 -16
  45. package/dist/npm/dropdowntrees/checked-state/base-check.directive.js +18 -4
  46. package/dist/npm/dropdowntrees/dropdowntree.component.js +1 -1
  47. package/dist/npm/dropdowntrees/multiselecttree.component.js +13 -1
  48. package/dist/npm/multiselect/multiselect.component.js +28 -23
  49. package/dist/npm/package-metadata.js +1 -1
  50. package/dist/systemjs/kendo-angular-dropdowns.js +1 -1
  51. package/package.json +3 -5
  52. package/schematics/ngAdd/index.js +1 -1
@@ -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: 1642682344,
26
+ publishDate: 1645543730,
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
  };
@@ -364,6 +364,13 @@ var SearchBarComponent = /** @class */ (function () {
364
364
  enumerable: true,
365
365
  configurable: true
366
366
  });
367
+ Object.defineProperty(SearchBarComponent.prototype, "ariaExpanded", {
368
+ get: function () {
369
+ return this.role === 'combobox' ? this.popupOpen : null;
370
+ },
371
+ enumerable: true,
372
+ configurable: true
373
+ });
367
374
  SearchBarComponent.prototype.ngOnInit = function () {
368
375
  var _this = this;
369
376
  this.localizationChangeSubscription = this.localization
@@ -545,7 +552,7 @@ var SearchBarComponent = /** @class */ (function () {
545
552
  SearchBarComponent = __decorate([
546
553
  Component({
547
554
  selector: 'kendo-searchbar',
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 "
555
+ 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]=\"ariaExpanded\"\n [attr.aria-owns]=\"listId\"\n [attr.aria-describedby]=\"tagListId\"\n [attr.aria-activedescendant]=\"activeDescendant\"\n [attr.aria-label]=\"noDataLabel\"\n />\n "
549
556
  }),
550
557
  __metadata("design:paramtypes", [LocalizationService,
551
558
  Renderer2])
@@ -2182,19 +2189,12 @@ var AutoCompleteComponent = /** @class */ (function () {
2182
2189
  Object.defineProperty(AutoCompleteComponent.prototype, "noDataLabel", {
2183
2190
  get: function () {
2184
2191
  if (this.data.length === 0) {
2185
- return this.noDataText;
2192
+ return this.messageFor('noDataText');
2186
2193
  }
2187
2194
  },
2188
2195
  enumerable: true,
2189
2196
  configurable: true
2190
2197
  });
2191
- Object.defineProperty(AutoCompleteComponent.prototype, "clearTitle", {
2192
- get: function () {
2193
- return this.localization.get('clearTitle');
2194
- },
2195
- enumerable: true,
2196
- configurable: true
2197
- });
2198
2198
  Object.defineProperty(AutoCompleteComponent.prototype, "data", {
2199
2199
  get: function () {
2200
2200
  var virtual = this.virtual;
@@ -2417,15 +2417,13 @@ var AutoCompleteComponent = /** @class */ (function () {
2417
2417
  .subscribe(function (_a) {
2418
2418
  var rtl = _a.rtl;
2419
2419
  _this.direction = rtl ? 'rtl' : 'ltr';
2420
- _this.setMessages();
2420
+ _this.cdr.detectChanges();
2421
2421
  });
2422
- this.setMessages();
2423
2422
  this.setComponentClasses();
2424
2423
  };
2425
2424
  AutoCompleteComponent.prototype.ngOnDestroy = function () {
2426
2425
  this.destroyPopup();
2427
2426
  this.unsubscribeEvents();
2428
- clearTimeout(this.messagesTimeout);
2429
2427
  if (this.localizationChangeSubscription) {
2430
2428
  this.localizationChangeSubscription.unsubscribe();
2431
2429
  }
@@ -2445,6 +2443,12 @@ var AutoCompleteComponent = /** @class */ (function () {
2445
2443
  AutoCompleteComponent.prototype.reset = function () {
2446
2444
  this.value = NO_VALUE;
2447
2445
  };
2446
+ /**
2447
+ * @hidden
2448
+ */
2449
+ AutoCompleteComponent.prototype.messageFor = function (key) {
2450
+ return this.localization.get(key);
2451
+ };
2448
2452
  /**
2449
2453
  * @hidden
2450
2454
  */
@@ -2847,16 +2851,6 @@ var AutoCompleteComponent = /** @class */ (function () {
2847
2851
  };
2848
2852
  }
2849
2853
  };
2850
- AutoCompleteComponent.prototype.setMessages = function () {
2851
- var _this = this;
2852
- this._zone.runOutsideAngular(function () {
2853
- clearTimeout(_this.messagesTimeout);
2854
- _this.messagesTimeout = setTimeout(function () {
2855
- _this.noDataText = _this.localization.get('noDataText');
2856
- _this.cdr.detectChanges();
2857
- });
2858
- });
2859
- };
2860
2854
  AutoCompleteComponent.prototype.setComponentClasses = function () {
2861
2855
  if (this.size) {
2862
2856
  this.renderer.addClass(this.wrapper, getSizeClass('input', this.size));
@@ -3078,7 +3072,7 @@ var AutoCompleteComponent = /** @class */ (function () {
3078
3072
  }
3079
3073
  ],
3080
3074
  selector: 'kendo-autocomplete',
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 "
3075
+ 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]=\"messageFor('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>{{ messageFor('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 "
3082
3076
  }),
3083
3077
  __param(10, Optional()), __param(10, Inject(TOUCH_ENABLED)),
3084
3078
  __metadata("design:paramtypes", [LocalizationService,
@@ -3404,19 +3398,12 @@ var ComboBoxComponent = /** @class */ (function () {
3404
3398
  Object.defineProperty(ComboBoxComponent.prototype, "noDataLabel", {
3405
3399
  get: function () {
3406
3400
  if (this.data.length === 0) {
3407
- return this.noDataText;
3401
+ return this.messageFor('noDataText');
3408
3402
  }
3409
3403
  },
3410
3404
  enumerable: true,
3411
3405
  configurable: true
3412
3406
  });
3413
- Object.defineProperty(ComboBoxComponent.prototype, "clearTitle", {
3414
- get: function () {
3415
- return this.localization.get('clearTitle');
3416
- },
3417
- enumerable: true,
3418
- configurable: true
3419
- });
3420
3407
  Object.defineProperty(ComboBoxComponent.prototype, "appendTo", {
3421
3408
  get: function () {
3422
3409
  var appendTo = this.popupSettings.appendTo;
@@ -3706,7 +3693,6 @@ var ComboBoxComponent = /** @class */ (function () {
3706
3693
  this.createValueStream();
3707
3694
  this.subscribeTouchEvents();
3708
3695
  this.attachSelectClickHandler();
3709
- this.setMessages();
3710
3696
  this.setComponentClasses();
3711
3697
  };
3712
3698
  ComboBoxComponent.prototype.createValueStream = function () {
@@ -3816,7 +3802,7 @@ var ComboBoxComponent = /** @class */ (function () {
3816
3802
  .changes.subscribe(function (_a) {
3817
3803
  var rtl = _a.rtl;
3818
3804
  _this.direction = rtl ? 'rtl' : 'ltr';
3819
- _this.setMessages();
3805
+ _this.cdr.detectChanges();
3820
3806
  }));
3821
3807
  this.subs.add(merge(this.navigationService.up, this.navigationService.down, this.navigationService.home, this.navigationService.end)
3822
3808
  .pipe(filter(function (event) { return isPresent(event.index); }))
@@ -3849,7 +3835,6 @@ var ComboBoxComponent = /** @class */ (function () {
3849
3835
  };
3850
3836
  ComboBoxComponent.prototype.ngOnDestroy = function () {
3851
3837
  this.destroyPopup();
3852
- clearTimeout(this.messagesTimeout);
3853
3838
  this.subs.unsubscribe();
3854
3839
  if (isPresent(this.valueSubscription)) {
3855
3840
  this.valueSubscription.unsubscribe();
@@ -3951,6 +3936,12 @@ var ComboBoxComponent = /** @class */ (function () {
3951
3936
  var valueEmpty = !isPresent(this.value) || isEmptyString(this.value);
3952
3937
  return textEmpty && valueEmpty;
3953
3938
  };
3939
+ /**
3940
+ * @hidden
3941
+ */
3942
+ ComboBoxComponent.prototype.messageFor = function (key) {
3943
+ return this.localization.get(key);
3944
+ };
3954
3945
  /**
3955
3946
  * @hidden
3956
3947
  */
@@ -4457,16 +4448,6 @@ var ComboBoxComponent = /** @class */ (function () {
4457
4448
  this.filterText = '';
4458
4449
  this.filterChange.emit(this.filterText);
4459
4450
  };
4460
- ComboBoxComponent.prototype.setMessages = function () {
4461
- var _this = this;
4462
- this.zone.runOutsideAngular(function () {
4463
- clearTimeout(_this.messagesTimeout);
4464
- _this.messagesTimeout = setTimeout(function () {
4465
- _this.noDataText = _this.localization.get('noDataText');
4466
- _this.cdr.detectChanges();
4467
- });
4468
- });
4469
- };
4470
4451
  ComboBoxComponent.prototype.subscribeTouchEvents = function () {
4471
4452
  var _this = this;
4472
4453
  if (!isDocumentAvailable() || !this.touchEnabled) {
@@ -4737,7 +4718,7 @@ var ComboBoxComponent = /** @class */ (function () {
4737
4718
  }
4738
4719
  ],
4739
4720
  selector: 'kendo-combobox',
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 "
4721
+ 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 i18n-selectButtonText=\"kendo.combobox.selectButtonText|The text set as aria-label on the select button\"\n selectButtonText=\"Select\"\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]=\"messageFor('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 unselectable=\"on\"\n type=\"button\"\n class=\"k-input-button k-button k-icon-button\"\n [ngClass]=\"selectButtonClasses\"\n [attr.aria-label]=\"messageFor('selectButtonText')\"\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>{{ messageFor('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 "
4741
4722
  }),
4742
4723
  __param(10, Optional()), __param(10, Inject(TOUCH_ENABLED)),
4743
4724
  __metadata("design:paramtypes", [ElementRef,
@@ -4996,7 +4977,7 @@ var DropDownListComponent = /** @class */ (function () {
4996
4977
  });
4997
4978
  Object.defineProperty(DropDownListComponent.prototype, "ariaActivedescendant", {
4998
4979
  get: function () {
4999
- if (!isPresent(this.dataItem)) {
4980
+ if (!isPresent(this.dataItem) || !this.isOpen) {
5000
4981
  return;
5001
4982
  }
5002
4983
  return this.optionPrefix + "-" + getter$1(this.dataItem, this.valueField);
@@ -5007,7 +4988,7 @@ var DropDownListComponent = /** @class */ (function () {
5007
4988
  Object.defineProperty(DropDownListComponent.prototype, "noDataLabel", {
5008
4989
  get: function () {
5009
4990
  if (this.dataService.itemsCount === 0) {
5010
- return this.noDataText;
4991
+ return this.messageFor('noDataText');
5011
4992
  }
5012
4993
  },
5013
4994
  enumerable: true,
@@ -5411,9 +5392,8 @@ var DropDownListComponent = /** @class */ (function () {
5411
5392
  .changes.subscribe(function (_a) {
5412
5393
  var rtl = _a.rtl;
5413
5394
  _this.direction = rtl ? 'rtl' : 'ltr';
5414
- _this.setMessages();
5395
+ _this.cdr.detectChanges();
5415
5396
  });
5416
- this.setMessages();
5417
5397
  this.assignAriaDescribedBy();
5418
5398
  this.setComponentClasses();
5419
5399
  };
@@ -5437,7 +5417,6 @@ var DropDownListComponent = /** @class */ (function () {
5437
5417
  DropDownListComponent.prototype.ngOnDestroy = function () {
5438
5418
  this.destroyPopup();
5439
5419
  this.unsubscribeEvents();
5440
- clearTimeout(this.messagesTimeout);
5441
5420
  if (this.localizationChangesSubscription) {
5442
5421
  this.localizationChangesSubscription.unsubscribe();
5443
5422
  }
@@ -5563,6 +5542,12 @@ var DropDownListComponent = /** @class */ (function () {
5563
5542
  DropDownListComponent.prototype.reset = function () {
5564
5543
  this.value = undefined;
5565
5544
  };
5545
+ /**
5546
+ * @hidden
5547
+ */
5548
+ DropDownListComponent.prototype.messageFor = function (key) {
5549
+ return this.localization.get(key);
5550
+ };
5566
5551
  /**
5567
5552
  * @hidden
5568
5553
  */
@@ -6093,16 +6078,6 @@ var DropDownListComponent = /** @class */ (function () {
6093
6078
  var virtual = this.virtual;
6094
6079
  virtual.skip = event.skip;
6095
6080
  };
6096
- DropDownListComponent.prototype.setMessages = function () {
6097
- var _this = this;
6098
- this._zone.runOutsideAngular(function () {
6099
- clearTimeout(_this.messagesTimeout);
6100
- _this.messagesTimeout = setTimeout(function () {
6101
- _this.noDataText = _this.localization.get('noDataText');
6102
- _this.cdr.detectChanges();
6103
- });
6104
- });
6105
- };
6106
6081
  DropDownListComponent.prototype.assignAriaDescribedBy = function () {
6107
6082
  var currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';
6108
6083
  var trimmed = currentValue.replace(this.valueLabelId, '').trim();
@@ -6400,7 +6375,7 @@ var DropDownListComponent = /** @class */ (function () {
6400
6375
  }
6401
6376
  ],
6402
6377
  selector: 'kendo-dropdownlist',
6403
- 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 "
6378
+ 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 i18n-selectButtonText=\"kendo.dropdownlist.selectButtonText|The text set as aria-label on the select button\"\n selectButtonText=\"Select\"\n >\n </ng-container>\n <span class=\"k-input-inner\" unselectable=\"on\" role=\"option\" [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 [attr.aria-label]=\"messageFor('selectButtonText')\"\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>{{ messageFor('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 "
6404
6379
  }),
6405
6380
  __param(10, Optional()), __param(10, Inject(TOUCH_ENABLED)),
6406
6381
  __metadata("design:paramtypes", [ElementRef,
@@ -6646,7 +6621,8 @@ var MultiSelectComponent = /** @class */ (function () {
6646
6621
  */
6647
6622
  this.clearButton = true;
6648
6623
  /**
6649
- * A user-defined callback function which receives an array of selected data items and maps them to an array of tags.
6624
+ * A user-defined callback function which receives an array of selected data items and maps them to an array of tags
6625
+ * ([see examples]({% slug summarytagmode_multiselect %}#toc-rendering-of-tags)).
6650
6626
  *
6651
6627
  * @param { Any[] } dataItems - The selected data items from the list.
6652
6628
  * @returns { Any[] } - The tags that will be rendered by the component.
@@ -6761,6 +6737,7 @@ var MultiSelectComponent = /** @class */ (function () {
6761
6737
  */
6762
6738
  this.removeTag = new EventEmitter();
6763
6739
  this.hostClasses = true;
6740
+ this.role = 'combobox';
6764
6741
  this.initialized = false;
6765
6742
  this._size = 'medium';
6766
6743
  this._rounded = 'medium';
@@ -7137,6 +7114,13 @@ var MultiSelectComponent = /** @class */ (function () {
7137
7114
  enumerable: true,
7138
7115
  configurable: true
7139
7116
  });
7117
+ Object.defineProperty(MultiSelectComponent.prototype, "isAriaExpanded", {
7118
+ get: function () {
7119
+ return this.isOpen;
7120
+ },
7121
+ enumerable: true,
7122
+ configurable: true
7123
+ });
7140
7124
  /**
7141
7125
  * @hidden
7142
7126
  */
@@ -7221,19 +7205,12 @@ var MultiSelectComponent = /** @class */ (function () {
7221
7205
  Object.defineProperty(MultiSelectComponent.prototype, "noDataLabel", {
7222
7206
  get: function () {
7223
7207
  if (this.dataService.itemsCount === 0) {
7224
- return this.noDataText;
7208
+ return this.messageFor('noDataText');
7225
7209
  }
7226
7210
  },
7227
7211
  enumerable: true,
7228
7212
  configurable: true
7229
7213
  });
7230
- Object.defineProperty(MultiSelectComponent.prototype, "clearTitle", {
7231
- get: function () {
7232
- return this.localization.get('clearTitle');
7233
- },
7234
- enumerable: true,
7235
- configurable: true
7236
- });
7237
7214
  Object.defineProperty(MultiSelectComponent.prototype, "clearButtonVisiblity", {
7238
7215
  get: function () {
7239
7216
  if (this.touchEnabled) {
@@ -7453,9 +7430,8 @@ var MultiSelectComponent = /** @class */ (function () {
7453
7430
  .changes.subscribe(function (_a) {
7454
7431
  var rtl = _a.rtl;
7455
7432
  _this.direction = rtl ? 'rtl' : 'ltr';
7456
- _this.setMessages();
7433
+ _this.cdr.markForCheck();
7457
7434
  });
7458
- this.setMessages();
7459
7435
  this.setState(this.value);
7460
7436
  this.setComponentClasses();
7461
7437
  this.initialized = true;
@@ -7479,7 +7455,6 @@ var MultiSelectComponent = /** @class */ (function () {
7479
7455
  MultiSelectComponent.prototype.ngOnDestroy = function () {
7480
7456
  this._toggle(false);
7481
7457
  this.unsubscribeEvents();
7482
- clearTimeout(this.messagesTimeout);
7483
7458
  };
7484
7459
  /**
7485
7460
  * Toggles the visibility of the popup
@@ -7517,6 +7492,12 @@ var MultiSelectComponent = /** @class */ (function () {
7517
7492
  this.text = "";
7518
7493
  this.value = [];
7519
7494
  };
7495
+ /**
7496
+ * @hidden
7497
+ */
7498
+ MultiSelectComponent.prototype.messageFor = function (key) {
7499
+ return this.localization.get(key);
7500
+ };
7520
7501
  // NG MODEL BINDINGS
7521
7502
  /**
7522
7503
  * @hidden
@@ -7961,16 +7942,6 @@ var MultiSelectComponent = /** @class */ (function () {
7961
7942
  setTimeout(function () { return _this._zone.run(f); });
7962
7943
  });
7963
7944
  };
7964
- MultiSelectComponent.prototype.setMessages = function () {
7965
- var _this = this;
7966
- this._zone.runOutsideAngular(function () {
7967
- clearTimeout(_this.messagesTimeout);
7968
- _this.messagesTimeout = setTimeout(function () {
7969
- _this.noDataText = _this.localization.get('noDataText');
7970
- _this.cdr.detectChanges();
7971
- });
7972
- });
7973
- };
7974
7945
  MultiSelectComponent.prototype.setComponentClasses = function () {
7975
7946
  if (this.size) {
7976
7947
  this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));
@@ -8207,6 +8178,15 @@ var MultiSelectComponent = /** @class */ (function () {
8207
8178
  __metadata("design:type", Boolean),
8208
8179
  __metadata("design:paramtypes", [])
8209
8180
  ], MultiSelectComponent.prototype, "isLoading", null);
8181
+ __decorate([
8182
+ HostBinding('attr.role'),
8183
+ __metadata("design:type", String)
8184
+ ], MultiSelectComponent.prototype, "role", void 0);
8185
+ __decorate([
8186
+ HostBinding('attr.aria-expanded'),
8187
+ __metadata("design:type", Boolean),
8188
+ __metadata("design:paramtypes", [])
8189
+ ], MultiSelectComponent.prototype, "isAriaExpanded", null);
8210
8190
  __decorate([
8211
8191
  HostListener('mousedown', ['$event']),
8212
8192
  __metadata("design:type", Function),
@@ -8235,7 +8215,7 @@ var MultiSelectComponent = /** @class */ (function () {
8235
8215
  }
8236
8216
  ],
8237
8217
  selector: 'kendo-multiselect',
8238
- 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 "
8218
+ 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.multiselect.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]=\"'textbox'\"\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]=\"messageFor('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>{{ messageFor('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 "
8239
8219
  }),
8240
8220
  __param(11, Optional()), __param(11, Inject(TOUCH_ENABLED)),
8241
8221
  __metadata("design:paramtypes", [ElementRef,
@@ -8609,7 +8589,7 @@ var MultiColumnComboBoxComponent = /** @class */ (function (_super) {
8609
8589
  }
8610
8590
  ],
8611
8591
  selector: 'kendo-multicolumncombobox',
8612
- 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 "
8592
+ 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]=\"messageFor('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 [attr.aria-label]=\"messageFor('selectButtonText')\"\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>{{ messageFor('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 "
8613
8593
  }),
8614
8594
  __param(10, Inject(TOUCH_ENABLED)),
8615
8595
  __metadata("design:paramtypes", [LocalizationService,
@@ -9995,7 +9975,7 @@ var DropDownTreeComponent = /** @class */ (function () {
9995
9975
  }
9996
9976
  ],
9997
9977
  selector: 'kendo-dropdowntree',
9998
- 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 ",
9978
+ 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 i18n-selectButtonText=\"kendo.dropdowntree.selectButtonText|The text set as aria-label on the select button\"\n selectButtonText=\"Select\"\n >\n </ng-container>\n <span\n [attr.id]=\"valueLabelId\"\n class=\"k-input-inner\"\n role=\"option\"\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 [attr.aria-label]=\"messageFor('selectButtonText')\"\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 ",
9999
9979
  changeDetection: ChangeDetectionStrategy.OnPush
10000
9980
  }),
10001
9981
  __param(7, Optional()), __param(7, Inject(TOUCH_ENABLED)),
@@ -10031,7 +10011,7 @@ var MultiSelectTreeComponent = /** @class */ (function () {
10031
10011
  this.cdr = cdr;
10032
10012
  this.touchEnabled = touchEnabled$$1;
10033
10013
  this.hostClasses = true;
10034
- this.role = 'listbox';
10014
+ this.role = 'combobox';
10035
10015
  this.ariaHasPopup = 'tree';
10036
10016
  /**
10037
10017
  * Sets the levels in the data set where the values can be found when `valueField` is an Array.
@@ -10235,6 +10215,13 @@ var MultiSelectTreeComponent = /** @class */ (function () {
10235
10215
  enumerable: true,
10236
10216
  configurable: true
10237
10217
  });
10218
+ Object.defineProperty(MultiSelectTreeComponent.prototype, "isAriaExpanded", {
10219
+ get: function () {
10220
+ return this.isOpen;
10221
+ },
10222
+ enumerable: true,
10223
+ configurable: true
10224
+ });
10238
10225
  Object.defineProperty(MultiSelectTreeComponent.prototype, "isReadonly", {
10239
10226
  get: function () {
10240
10227
  return this.readonly;
@@ -11355,6 +11342,11 @@ var MultiSelectTreeComponent = /** @class */ (function () {
11355
11342
  HostBinding('attr.role'),
11356
11343
  __metadata("design:type", String)
11357
11344
  ], MultiSelectTreeComponent.prototype, "role", void 0);
11345
+ __decorate([
11346
+ HostBinding('attr.aria-expanded'),
11347
+ __metadata("design:type", Boolean),
11348
+ __metadata("design:paramtypes", [])
11349
+ ], MultiSelectTreeComponent.prototype, "isAriaExpanded", null);
11358
11350
  __decorate([
11359
11351
  HostBinding('attr.aria-haspopup'),
11360
11352
  __metadata("design:type", String)
@@ -11950,7 +11942,7 @@ var TagListComponent = /** @class */ (function () {
11950
11942
  TagListComponent = __decorate([
11951
11943
  Component({
11952
11944
  selector: 'kendo-taglist',
11953
- 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 "
11945
+ template: "\n <div\n *ngFor=\"let tag of tags; let index = index;\"\n [attr.id]=\"itemId(tag, index)\"\n [attr.aria-hidden]=\"tagAriaHidden(index)\"\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 "
11954
11946
  }),
11955
11947
  __metadata("design:paramtypes", [Renderer2,
11956
11948
  ElementRef])
@@ -11978,6 +11970,10 @@ var Messages = /** @class */ (function (_super) {
11978
11970
  Input(),
11979
11971
  __metadata("design:type", String)
11980
11972
  ], Messages.prototype, "checkAllText", void 0);
11973
+ __decorate([
11974
+ Input(),
11975
+ __metadata("design:type", String)
11976
+ ], Messages.prototype, "selectButtonText", void 0);
11981
11977
  return Messages;
11982
11978
  }(ComponentMessages));
11983
11979
 
@@ -12384,7 +12380,7 @@ var BaseCheckDirective = /** @class */ (function () {
12384
12380
  var level = getHierarchicalItemLevel(item.index);
12385
12381
  var candidate = __assign({}, item, { level: level });
12386
12382
  this.checkedItems.push(candidate);
12387
- this.checkedKeys.add(valueFrom(candidate, this.valueField));
12383
+ this.checkedKeys.add(this.getKey(candidate));
12388
12384
  };
12389
12385
  BaseCheckDirective.prototype.removeItem = function (item) {
12390
12386
  var _this = this;
@@ -12395,15 +12391,29 @@ var BaseCheckDirective = /** @class */ (function () {
12395
12391
  var candidate = __assign({}, item, { level: level });
12396
12392
  this.checkedItems = this.checkedItems
12397
12393
  .filter(function (item) { return valueFrom(item, _this.valueField) !== valueFrom(candidate, _this.valueField); });
12398
- this.checkedKeys.delete(valueFrom(candidate, this.valueField));
12394
+ this.checkedKeys.delete(this.getKey(candidate));
12399
12395
  };
12400
12396
  BaseCheckDirective.prototype.isItemChecked = function (item) {
12401
- return this.checkedKeys.has(valueFrom(item, this.valueField));
12397
+ var level = item.index.split('_').length - 1;
12398
+ item.level = level;
12399
+ return this.checkedKeys.has(this.getKey(item));
12402
12400
  };
12403
12401
  BaseCheckDirective.prototype.updateItems = function () {
12404
12402
  var _this = this;
12405
12403
  this.checkedItems = this.checkedItems || [];
12406
- this.checkedKeys = new Set(this.checkedItems.map(function (item) { return valueFrom(item, _this.valueField); }));
12404
+ this.checkedKeys = new Set(this.checkedItems.map(function (item) { return _this.getKey(item); }));
12405
+ };
12406
+ /**
12407
+ * Adds the item's depth to the item's value to allow duplicate values on different levels.
12408
+ *
12409
+ * @param item - The checked key.
12410
+ * @returns { string } - A string key consisting of the item's `valueField` value and its depth.
12411
+ */
12412
+ BaseCheckDirective.prototype.getKey = function (item) {
12413
+ if (isArray(this.valueField)) {
12414
+ return valueFrom(item, this.valueField) + '_' + item.level;
12415
+ }
12416
+ return valueFrom(item, this.valueField);
12407
12417
  };
12408
12418
  __decorate([
12409
12419
  Input(),