@progress/kendo-angular-dropdowns 5.4.0 → 5.5.0-dev.202111011140

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 (45) 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/common/filtering/filter.directive.js +1 -0
  4. package/dist/es/common/localization/messages.js +4 -0
  5. package/dist/es/common/shared.module.js +3 -1
  6. package/dist/es/dropdowntrees/checked-state/base-check.directive.js +54 -0
  7. package/dist/es/dropdowntrees/checked-state/check-all.directive.js +181 -0
  8. package/dist/es/dropdowntrees/checked-state/check.directive.js +15 -36
  9. package/dist/es/dropdowntrees/dropdowntree.component.js +12 -3
  10. package/dist/es/dropdowntrees/multiselecttree.component.js +58 -13
  11. package/dist/es/index.js +2 -0
  12. package/dist/es/package-metadata.js +1 -1
  13. package/dist/es2015/common/filtering/filter.directive.d.ts +1 -0
  14. package/dist/es2015/common/filtering/filter.directive.js +1 -0
  15. package/dist/es2015/common/localization/messages.d.ts +4 -0
  16. package/dist/es2015/common/localization/messages.js +4 -0
  17. package/dist/es2015/common/shared.module.js +3 -1
  18. package/dist/es2015/dropdowntrees/checked-state/base-check.directive.d.ts +32 -0
  19. package/dist/es2015/dropdowntrees/checked-state/base-check.directive.js +48 -0
  20. package/dist/es2015/dropdowntrees/checked-state/check-all.directive.d.ts +53 -0
  21. package/dist/es2015/dropdowntrees/checked-state/check-all.directive.js +161 -0
  22. package/dist/es2015/dropdowntrees/checked-state/check.directive.d.ts +3 -5
  23. package/dist/es2015/dropdowntrees/checked-state/check.directive.js +5 -26
  24. package/dist/es2015/dropdowntrees/dropdowntree.component.d.ts +4 -0
  25. package/dist/es2015/dropdowntrees/dropdowntree.component.js +12 -4
  26. package/dist/es2015/dropdowntrees/multiselecttree.component.d.ts +14 -0
  27. package/dist/es2015/dropdowntrees/multiselecttree.component.js +82 -15
  28. package/dist/es2015/index.d.ts +2 -0
  29. package/dist/es2015/index.js +2 -0
  30. package/dist/es2015/index.metadata.json +1 -1
  31. package/dist/es2015/package-metadata.js +1 -1
  32. package/dist/fesm2015/index.js +300 -47
  33. package/dist/fesm5/index.js +311 -54
  34. package/dist/npm/common/filtering/filter.directive.js +1 -0
  35. package/dist/npm/common/localization/messages.js +4 -0
  36. package/dist/npm/common/shared.module.js +3 -1
  37. package/dist/npm/dropdowntrees/checked-state/base-check.directive.js +56 -0
  38. package/dist/npm/dropdowntrees/checked-state/check-all.directive.js +183 -0
  39. package/dist/npm/dropdowntrees/checked-state/check.directive.js +14 -35
  40. package/dist/npm/dropdowntrees/dropdowntree.component.js +12 -3
  41. package/dist/npm/dropdowntrees/multiselecttree.component.js +58 -13
  42. package/dist/npm/index.js +4 -0
  43. package/dist/npm/package-metadata.js +1 -1
  44. package/dist/systemjs/kendo-angular-dropdowns.js +1 -1
  45. package/package.json +5 -5
@@ -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: 1631260317,
26
+ publishDate: 1635766703,
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
  };
@@ -8460,8 +8460,8 @@ var DropDownTreeComponent = /** @class */ (function () {
8460
8460
  dataItem;
8461
8461
  var shouldUpdateValue = newValue !== this.value;
8462
8462
  if (shouldUpdateValue) {
8463
- this.dataItem = dataItem;
8464
8463
  this.value = newValue;
8464
+ this.dataItem = dataItem;
8465
8465
  this.emitValueChange(this.value);
8466
8466
  }
8467
8467
  this.togglePopup(false);
@@ -8542,6 +8542,16 @@ var DropDownTreeComponent = /** @class */ (function () {
8542
8542
  this.filterChange.next(term);
8543
8543
  this.allNodesHidden = this.nodes.every(function (node, index) { return !_this.isVisible(node, String(index)); });
8544
8544
  };
8545
+ Object.defineProperty(DropDownTreeComponent.prototype, "buttonClasses", {
8546
+ /**
8547
+ * @hidden
8548
+ */
8549
+ get: function () {
8550
+ return this.loading ? 'k-i-loading' : 'k-i-arrow-s';
8551
+ },
8552
+ enumerable: true,
8553
+ configurable: true
8554
+ });
8545
8555
  DropDownTreeComponent.prototype.verifySettings = function () {
8546
8556
  if (!isDevMode()) {
8547
8557
  return;
@@ -8668,7 +8678,6 @@ var DropDownTreeComponent = /** @class */ (function () {
8668
8678
  };
8669
8679
  DropDownTreeComponent.prototype.clearState = function () {
8670
8680
  this.text = undefined;
8671
- this.valueDepth = undefined;
8672
8681
  this.selectedKeys = [];
8673
8682
  };
8674
8683
  DropDownTreeComponent.prototype.subscribeEvents = function () {
@@ -8959,7 +8968,7 @@ var DropDownTreeComponent = /** @class */ (function () {
8959
8968
  }
8960
8969
  ],
8961
8970
  selector: 'kendo-dropdowntree',
8962
- 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\"\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 class=\"k-icon k-i-arrow-60-down\"></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 ",
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 ",
8963
8972
  changeDetection: ChangeDetectionStrategy.OnPush
8964
8973
  }),
8965
8974
  __param(7, Optional()), __param(7, Inject(TOUCH_ENABLED)),
@@ -9049,6 +9058,12 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9049
9058
  * @default false
9050
9059
  */
9051
9060
  this.filterable = false;
9061
+ /**
9062
+ * If `checkАll` is set to `true` and the checkboxes are enabled, a tri-state checkbox appears above the embedded treeview.
9063
+ * Clicking the checkbox checks or unchecks all enabled items of the treeview that are loaded.
9064
+ * @default false
9065
+ */
9066
+ this.checkAll = false;
9052
9067
  /**
9053
9068
  * A function which determines if a specific node has child nodes.
9054
9069
  */
@@ -9152,6 +9167,7 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9152
9167
  this._checkableSettings = DEFAULT_CHECKABLE_SETTINGS;
9153
9168
  this._isFocused = false;
9154
9169
  this.subscriptions = [];
9170
+ this.lastAction = 'check';
9155
9171
  this.onTouchedCallback = noop;
9156
9172
  this.onChangeCallback = noop;
9157
9173
  this.direction = localization.rtl ? 'rtl' : 'ltr';
@@ -9167,7 +9183,7 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9167
9183
  this._treeview = treeview;
9168
9184
  if (treeview) {
9169
9185
  // If filtering is enabled, focus the TreeView on mobile devices instead of the filter input
9170
- if (this.isFocused && !this.filterable || this.touchEnabled) {
9186
+ if (this.isFocused && !this.filterable && !this.checkAll || this.touchEnabled) {
9171
9187
  treeview.focus();
9172
9188
  }
9173
9189
  /**
@@ -9488,6 +9504,20 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9488
9504
  enumerable: true,
9489
9505
  configurable: true
9490
9506
  });
9507
+ Object.defineProperty(MultiSelectTreeComponent.prototype, "isFilterActive", {
9508
+ get: function () {
9509
+ return this.filterInput && document.activeElement === this.filterInput.nativeElement;
9510
+ },
9511
+ enumerable: true,
9512
+ configurable: true
9513
+ });
9514
+ Object.defineProperty(MultiSelectTreeComponent.prototype, "isCheckAllActive", {
9515
+ get: function () {
9516
+ return this.checkAllInput && document.activeElement === this.checkAllInput.nativeElement;
9517
+ },
9518
+ enumerable: true,
9519
+ configurable: true
9520
+ });
9491
9521
  MultiSelectTreeComponent.prototype.ngOnInit = function () {
9492
9522
  var _this = this;
9493
9523
  this.renderer.removeAttribute(this.hostElement.nativeElement, 'tabindex');
@@ -9711,6 +9741,7 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9711
9741
  */
9712
9742
  MultiSelectTreeComponent.prototype.handleCheckedItemsChange = function (items) {
9713
9743
  this.valueDepth = items.map(function (item) { return item.level; });
9744
+ this.lastAction = items.length > this.dataItems.length ? 'check' : 'uncheck';
9714
9745
  this.dataItems = items.slice();
9715
9746
  this.updateValue(this.dataItems);
9716
9747
  };
@@ -9803,6 +9834,13 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9803
9834
  this.filterChange.next(term);
9804
9835
  this.allNodesHidden = this.nodes.every(function (node, index) { return !_this.isVisible(node, String(index)); });
9805
9836
  };
9837
+ /**
9838
+ * @hidden
9839
+ */
9840
+ MultiSelectTreeComponent.prototype.toggleCheckAll = function () {
9841
+ this.checkAllInput.nativeElement.focus();
9842
+ this.checkAllInput.nativeElement.click();
9843
+ };
9806
9844
  MultiSelectTreeComponent.prototype.verifySettings = function () {
9807
9845
  if (!isDevMode()) {
9808
9846
  return;
@@ -9928,17 +9966,20 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9928
9966
  return;
9929
9967
  }
9930
9968
  var isFirstNodeActive = this.treeview['navigationService']['activeIndex'] === '0';
9931
- if (this.filterable) {
9932
- var isFilterActive = this.filterInput.nativeElement === document.activeElement;
9933
- if (isFilterActive) {
9934
- this.focus();
9935
- }
9936
- else if (!isFilterActive && isFirstNodeActive) {
9937
- this.filterInput.nativeElement.focus();
9938
- }
9939
- }
9940
- if (!this.filterable && isFirstNodeActive) {
9969
+ // Current focus is on the filter input => should focus the wrapper
9970
+ if (this.filterable && this.isFilterActive) {
9941
9971
  this.focus();
9972
+ // Current focus is on the treeview first node => should focus the check all checkbox if enabled
9973
+ }
9974
+ else if (this.checkAll && !this.isCheckAllActive && isFirstNodeActive) {
9975
+ this.checkAllInput.nativeElement.focus();
9976
+ // Current focus is either on the check all checkbox or the treeview's first node
9977
+ // => should focus either the filter input (if enabled) or the wrapper
9978
+ }
9979
+ else if (this.isCheckAllActive || isFirstNodeActive) {
9980
+ this.filterable ?
9981
+ this.filterInput.nativeElement.focus() :
9982
+ this.focus();
9942
9983
  }
9943
9984
  };
9944
9985
  MultiSelectTreeComponent.prototype.handleDownKey = function (event) {
@@ -9946,9 +9987,14 @@ var MultiSelectTreeComponent = /** @class */ (function () {
9946
9987
  return;
9947
9988
  }
9948
9989
  event.originalEvent.preventDefault();
9949
- // Put the focus back on the filter input if the wrapper is focused
9990
+ // Current focus is on the wrapper => should focus the filter input
9950
9991
  if (this.filterable && this.isWrapperActive) {
9951
9992
  this.filterInput.nativeElement.focus();
9993
+ // Current focus is on the wrapper/filter input => should focus check all checkbox if enabled
9994
+ }
9995
+ else if (this.checkAll && (this.isWrapperActive || this.isFilterActive)) {
9996
+ this.checkAllInput.nativeElement.focus();
9997
+ // Should focus the treeview if filterable and check all are disabled
9952
9998
  }
9953
9999
  else if (!this.treeview.isActive) {
9954
10000
  this.treeview.focus();
@@ -10109,6 +10155,10 @@ var MultiSelectTreeComponent = /** @class */ (function () {
10109
10155
  ViewChild('filterInput', { static: false }),
10110
10156
  __metadata("design:type", ElementRef)
10111
10157
  ], MultiSelectTreeComponent.prototype, "filterInput", void 0);
10158
+ __decorate([
10159
+ ViewChild('checkAllInput', { static: false }),
10160
+ __metadata("design:type", ElementRef)
10161
+ ], MultiSelectTreeComponent.prototype, "checkAllInput", void 0);
10112
10162
  __decorate([
10113
10163
  Input(),
10114
10164
  __metadata("design:type", Number),
@@ -10191,6 +10241,10 @@ var MultiSelectTreeComponent = /** @class */ (function () {
10191
10241
  Input(),
10192
10242
  __metadata("design:type", Boolean)
10193
10243
  ], MultiSelectTreeComponent.prototype, "filterable", void 0);
10244
+ __decorate([
10245
+ Input(),
10246
+ __metadata("design:type", Boolean)
10247
+ ], MultiSelectTreeComponent.prototype, "checkAll", void 0);
10194
10248
  __decorate([
10195
10249
  Input(),
10196
10250
  __metadata("design:type", Function)
@@ -10291,7 +10345,7 @@ var MultiSelectTreeComponent = /** @class */ (function () {
10291
10345
  }
10292
10346
  ],
10293
10347
  selector: 'kendo-multiselecttree',
10294
- 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 </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.arrowdown)=\"handleKeydown($event)\"\n (keydown.arrowup)=\"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 [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 "
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 "
10295
10349
  }),
10296
10350
  __param(7, Optional()), __param(7, Inject(TOUCH_ENABLED)),
10297
10351
  __metadata("design:paramtypes", [PopupService,
@@ -10579,6 +10633,10 @@ var Messages = /** @class */ (function (_super) {
10579
10633
  Input(),
10580
10634
  __metadata("design:type", String)
10581
10635
  ], Messages.prototype, "clearTitle", void 0);
10636
+ __decorate([
10637
+ Input(),
10638
+ __metadata("design:type", String)
10639
+ ], Messages.prototype, "checkAllText", void 0);
10582
10640
  return Messages;
10583
10641
  }(ComponentMessages));
10584
10642
 
@@ -10670,6 +10728,7 @@ var DEFAULT_FILTER_SETTINGS = {
10670
10728
  * public data: Array<string> = ["Albania", "Andorra", "Armenia", "Austria", "Azerbaijan"];
10671
10729
  * }
10672
10730
  * ```
10731
+ * > Currently, the built-in filtering does not work with [grouped data]({% slug api_kendo-data-query_groupby %}).
10673
10732
  */
10674
10733
  var FilterDirective = /** @class */ (function () {
10675
10734
  function FilterDirective(component) {
@@ -10974,33 +11033,81 @@ var TemplateContextDirective = /** @class */ (function () {
10974
11033
  *
10975
11034
  * A directive which manages the in-memory checked state of the MultiSelectTree nodes.
10976
11035
  */
10977
- var CheckDirective = /** @class */ (function () {
11036
+ var BaseCheckDirective = /** @class */ (function () {
11037
+ function BaseCheckDirective() {
11038
+ }
11039
+ BaseCheckDirective.prototype.addItem = function (item) {
11040
+ if (this.isItemChecked(item)) {
11041
+ return;
11042
+ }
11043
+ var level = getHierarchicalItemLevel(item.index);
11044
+ var candidate = __assign({}, item, { level: level });
11045
+ this.checkedItems.push(candidate);
11046
+ this.checkedKeys.add(valueFrom(candidate, this.valueField));
11047
+ };
11048
+ BaseCheckDirective.prototype.removeItem = function (item) {
11049
+ var _this = this;
11050
+ if (!this.isItemChecked(item)) {
11051
+ return;
11052
+ }
11053
+ var level = getHierarchicalItemLevel(item.index);
11054
+ var candidate = __assign({}, item, { level: level });
11055
+ this.checkedItems = this.checkedItems
11056
+ .filter(function (item) { return valueFrom(item, _this.valueField) !== valueFrom(candidate, _this.valueField); });
11057
+ this.checkedKeys.delete(valueFrom(candidate, this.valueField));
11058
+ };
11059
+ BaseCheckDirective.prototype.isItemChecked = function (item) {
11060
+ return this.checkedKeys.has(valueFrom(item, this.valueField));
11061
+ };
11062
+ BaseCheckDirective.prototype.updateItems = function () {
11063
+ var _this = this;
11064
+ this.checkedItems = this.checkedItems || [];
11065
+ this.checkedKeys = new Set(this.checkedItems.map(function (item) { return valueFrom(item, _this.valueField); }));
11066
+ };
11067
+ __decorate([
11068
+ Input(),
11069
+ __metadata("design:type", Object)
11070
+ ], BaseCheckDirective.prototype, "valueField", void 0);
11071
+ __decorate([
11072
+ Input(),
11073
+ __metadata("design:type", Array)
11074
+ ], BaseCheckDirective.prototype, "checkedItems", void 0);
11075
+ return BaseCheckDirective;
11076
+ }());
11077
+
11078
+ /**
11079
+ * @hidden
11080
+ *
11081
+ * A directive which manages the in-memory checked state of the MultiSelectTree nodes.
11082
+ */
11083
+ var CheckDirective = /** @class */ (function (_super) {
11084
+ __extends(CheckDirective, _super);
10978
11085
  function CheckDirective(treeView) {
10979
- this.treeView = treeView;
11086
+ var _this = _super.call(this) || this;
11087
+ _this.treeView = treeView;
10980
11088
  /**
10981
11089
  * Fires when the `checkedItems` collection was updated.
10982
11090
  */
10983
- this.checkedItemsChange = new EventEmitter();
11091
+ _this.checkedItemsChange = new EventEmitter();
10984
11092
  /**
10985
11093
  * Holds a Set with just the checked item keys.
10986
11094
  *
10987
11095
  * Should be updated each time the `checkedItems` value or content is changed.
10988
11096
  * Can be used for efficient look-up of whether an item is checked or not (O(1) access time).
10989
11097
  */
10990
- this.checkedKeys = new Set();
10991
- this.subscriptions = new Subscription();
10992
- this.subscriptions.add(this.treeView.checkedChange
10993
- .subscribe(this.handleCheckedChange.bind(this)));
10994
- this.treeView.isChecked = this.getCheckedState.bind(this);
11098
+ _this.checkedKeys = new Set();
11099
+ _this.subscriptions = new Subscription();
11100
+ _this.subscriptions.add(_this.treeView.checkedChange
11101
+ .subscribe(_this.handleCheckedChange.bind(_this)));
11102
+ _this.treeView.isChecked = _this.getCheckedState.bind(_this);
11103
+ return _this;
10995
11104
  }
10996
11105
  CheckDirective.prototype.ngOnChanges = function (changes) {
10997
- var _this = this;
10998
11106
  if (isPresent(changes.checkable)) {
10999
11107
  this.toggleCheckOnClick();
11000
11108
  }
11001
11109
  if (isPresent(changes.checkedItems)) {
11002
- this.checkedItems = this.checkedItems || [];
11003
- this.checkedKeys = new Set(this.checkedItems.map(function (item) { return valueFrom(item, _this.valueField); }));
11110
+ this.updateItems();
11004
11111
  }
11005
11112
  };
11006
11113
  CheckDirective.prototype.ngOnDestroy = function () {
@@ -11085,29 +11192,6 @@ var CheckDirective = /** @class */ (function () {
11085
11192
  currentParent = currentParent.parent;
11086
11193
  }
11087
11194
  };
11088
- CheckDirective.prototype.addItem = function (item) {
11089
- if (this.isItemChecked(item)) {
11090
- return;
11091
- }
11092
- var level = getHierarchicalItemLevel(item.index);
11093
- var candidate = __assign({}, item, { level: level });
11094
- this.checkedItems.push(candidate);
11095
- this.checkedKeys.add(valueFrom(candidate, this.valueField));
11096
- };
11097
- CheckDirective.prototype.removeItem = function (item) {
11098
- var _this = this;
11099
- if (!this.isItemChecked(item)) {
11100
- return;
11101
- }
11102
- var level = getHierarchicalItemLevel(item.index);
11103
- var candidate = __assign({}, item, { level: level });
11104
- this.checkedItems = this.checkedItems
11105
- .filter(function (item) { return valueFrom(item, _this.valueField) !== valueFrom(candidate, _this.valueField); });
11106
- this.checkedKeys.delete(valueFrom(candidate, this.valueField));
11107
- };
11108
- CheckDirective.prototype.isItemChecked = function (item) {
11109
- return this.checkedKeys.has(valueFrom(item, this.valueField));
11110
- };
11111
11195
  CheckDirective.prototype.isItemIndeterminate = function (lookup) {
11112
11196
  var children = lookup.children;
11113
11197
  if (!Array.isArray(children) || children.length === 0) {
@@ -11147,7 +11231,179 @@ var CheckDirective = /** @class */ (function () {
11147
11231
  __metadata("design:paramtypes", [TreeViewComponent])
11148
11232
  ], CheckDirective);
11149
11233
  return CheckDirective;
11150
- }());
11234
+ }(BaseCheckDirective));
11235
+
11236
+ /**
11237
+ * @hidden
11238
+ *
11239
+ * A directive which manages the in-memory checked state of the MultiSelectTree nodes.
11240
+ */
11241
+ var CheckAllDirective = /** @class */ (function (_super) {
11242
+ __extends(CheckAllDirective, _super);
11243
+ function CheckAllDirective(element, zone, cdr, renderer) {
11244
+ var _this = _super.call(this) || this;
11245
+ _this.element = element;
11246
+ _this.zone = zone;
11247
+ _this.cdr = cdr;
11248
+ _this.renderer = renderer;
11249
+ /**
11250
+ * Fires when the `checkedItems` collection was updated.
11251
+ */
11252
+ _this.checkedItemsChange = new EventEmitter();
11253
+ /**
11254
+ * Holds a Set with just the checked item keys.
11255
+ *
11256
+ * Should be updated each time the `checkedItems` value or content is changed.
11257
+ * Can be used for efficient look-up of whether an item is checked or not (O(1) access time).
11258
+ */
11259
+ _this.checkedKeys = new Set();
11260
+ return _this;
11261
+ }
11262
+ CheckAllDirective.prototype.handleChange = function (event) {
11263
+ var _this = this;
11264
+ // Need to store the current checkbox state at the moment of click
11265
+ this.currentCheckedState = event.checked;
11266
+ this.currentIndeterminateState = this.isIndeterminate;
11267
+ this.treeview.nodes.map(function (_value, index) {
11268
+ var itemIndex = String(index);
11269
+ var itemLookup = _this.treeview.itemLookup(itemIndex);
11270
+ _this.checkNode(itemLookup);
11271
+ });
11272
+ this.checkedItemsChange.emit(this.checkedItems.slice());
11273
+ };
11274
+ Object.defineProperty(CheckAllDirective.prototype, "isIndeterminate", {
11275
+ get: function () {
11276
+ var _this = this;
11277
+ var isIndeterminate = this.treeview.nodes.some(function (_node, index) {
11278
+ var itemIndex = String(index);
11279
+ var itemLookup = _this.treeview.itemLookup(itemIndex);
11280
+ return _this.someChecked(itemLookup);
11281
+ });
11282
+ return this.isChecked ? false : isIndeterminate;
11283
+ },
11284
+ enumerable: true,
11285
+ configurable: true
11286
+ });
11287
+ Object.defineProperty(CheckAllDirective.prototype, "isChecked", {
11288
+ get: function () {
11289
+ var _this = this;
11290
+ var isChecked = this.treeview.nodes.every(function (_node, index) {
11291
+ var itemIndex = String(index);
11292
+ var itemLookup = _this.treeview.itemLookup(itemIndex);
11293
+ return _this.allChecked(itemLookup);
11294
+ });
11295
+ return isChecked;
11296
+ },
11297
+ enumerable: true,
11298
+ configurable: true
11299
+ });
11300
+ CheckAllDirective.prototype.ngOnChanges = function (changes) {
11301
+ if (isPresent(changes.checkedItems)) {
11302
+ this.updateItems();
11303
+ this.renderer.setProperty(this.element.nativeElement, 'checked', this.isChecked);
11304
+ this.renderer.setProperty(this.element.nativeElement, 'indeterminate', this.isIndeterminate);
11305
+ }
11306
+ };
11307
+ CheckAllDirective.prototype.ngOnInit = function () {
11308
+ var _this = this;
11309
+ if (this.focused) {
11310
+ this.nextTick(function () { return _this.element.nativeElement.focus(); });
11311
+ }
11312
+ };
11313
+ CheckAllDirective.prototype.nextTick = function (fn) {
11314
+ this.zone.runOutsideAngular(function () { return setTimeout(fn); });
11315
+ };
11316
+ CheckAllDirective.prototype.checkNode = function (itemLookup) {
11317
+ var _this = this;
11318
+ if (this.treeview.isDisabled(itemLookup.item.dataItem, itemLookup.item.index)) {
11319
+ return;
11320
+ }
11321
+ var pendingCheck = [];
11322
+ var filter$$1 = function (item) {
11323
+ return _this.treeview.isVisible(item.dataItem, item.index) &&
11324
+ !_this.treeview.isDisabled(item.dataItem, item.index);
11325
+ };
11326
+ pendingCheck.push(itemLookup.item);
11327
+ fetchDescendentNodes(itemLookup, filter$$1)
11328
+ .forEach(function (lookup) { return pendingCheck.push(lookup.item); });
11329
+ pendingCheck.forEach(function (item) {
11330
+ if (_this.currentIndeterminateState) {
11331
+ _this.lastAction === 'check' ?
11332
+ _this.addItem(item) :
11333
+ _this.removeItem(item);
11334
+ return;
11335
+ }
11336
+ _this.currentCheckedState ?
11337
+ _this.addItem(item) :
11338
+ _this.removeItem(item);
11339
+ });
11340
+ };
11341
+ CheckAllDirective.prototype.allChecked = function (lookup) {
11342
+ var _this = this;
11343
+ var children = lookup && lookup.children;
11344
+ if (!Array.isArray(children)) {
11345
+ return;
11346
+ }
11347
+ var childrenChecked = children.every(function (child) {
11348
+ if (child.children.length) {
11349
+ return _this.isItemChecked(child.item) && _this.allChecked(child);
11350
+ }
11351
+ return _this.isItemChecked(child.item);
11352
+ });
11353
+ return childrenChecked && this.isItemChecked(lookup.item);
11354
+ };
11355
+ CheckAllDirective.prototype.someChecked = function (lookup) {
11356
+ var _this = this;
11357
+ var children = lookup && lookup.children;
11358
+ if (!Array.isArray(children)) {
11359
+ return;
11360
+ }
11361
+ var childrenChecked = children.some(function (child) {
11362
+ if (child.children.length) {
11363
+ return _this.isItemChecked(child.item) || _this.someChecked(child);
11364
+ }
11365
+ return _this.isItemChecked(child.item);
11366
+ });
11367
+ return childrenChecked || this.isItemChecked(lookup.item);
11368
+ };
11369
+ __decorate([
11370
+ Input(),
11371
+ __metadata("design:type", String)
11372
+ ], CheckAllDirective.prototype, "lastAction", void 0);
11373
+ __decorate([
11374
+ Input(),
11375
+ __metadata("design:type", TreeViewComponent)
11376
+ ], CheckAllDirective.prototype, "treeview", void 0);
11377
+ __decorate([
11378
+ Input(),
11379
+ __metadata("design:type", Array)
11380
+ ], CheckAllDirective.prototype, "checkedItems", void 0);
11381
+ __decorate([
11382
+ Input(),
11383
+ __metadata("design:type", Object)
11384
+ ], CheckAllDirective.prototype, "valueField", void 0);
11385
+ __decorate([
11386
+ Input('checkAll'),
11387
+ __metadata("design:type", Boolean)
11388
+ ], CheckAllDirective.prototype, "focused", void 0);
11389
+ __decorate([
11390
+ Output(),
11391
+ __metadata("design:type", EventEmitter)
11392
+ ], CheckAllDirective.prototype, "checkedItemsChange", void 0);
11393
+ __decorate([
11394
+ HostListener('change', ['$event.target']),
11395
+ __metadata("design:type", Function),
11396
+ __metadata("design:paramtypes", [Object]),
11397
+ __metadata("design:returntype", void 0)
11398
+ ], CheckAllDirective.prototype, "handleChange", null);
11399
+ CheckAllDirective = __decorate([
11400
+ Directive({
11401
+ selector: '[checkAll]' // tslint:disable-line
11402
+ }),
11403
+ __metadata("design:paramtypes", [ElementRef, NgZone, ChangeDetectorRef, Renderer2])
11404
+ ], CheckAllDirective);
11405
+ return CheckAllDirective;
11406
+ }(BaseCheckDirective));
11151
11407
 
11152
11408
  var INTERNAL_DIRECTIVES = [
11153
11409
  ListComponent,
@@ -11156,7 +11412,8 @@ var INTERNAL_DIRECTIVES = [
11156
11412
  SearchBarComponent,
11157
11413
  TemplateContextDirective,
11158
11414
  TagListComponent,
11159
- CheckDirective
11415
+ CheckDirective,
11416
+ CheckAllDirective
11160
11417
  ];
11161
11418
  /**
11162
11419
  * @hidden
@@ -11486,4 +11743,4 @@ var DropDownsModule = /** @class */ (function () {
11486
11743
  * Generated bundle index. Do not edit.
11487
11744
  */
11488
11745
 
11489
- export { AUTOCOMPLETE_VALUE_ACCESSOR, COMBOBOX_VALUE_ACCESSOR, TOUCH_ENABLED, DataService, DisabledItemsService, FilterInputDirective, FilterableComponent, ListItemDirective, CustomMessagesComponent, LocalizedMessagesDirective, Messages, NavigationService, SearchBarComponent, SelectionService, TagListComponent, NoDataTemplateDirective, TagTemplateDirective, DROPDOWNLIST_VALUE_ACCESSOR, CheckDirective, MultiSelectTreeSummaryTagDirective, AutoCompleteComponent, ComboBoxComponent, DropDownListComponent, MultiSelectComponent, MultiColumnComboBoxComponent, ComboBoxColumnComponent, ColumnCellTemplateDirective, ColumnHeaderTemplateDirective, DropDownTreeComponent, MultiSelectTreeComponent, DropDownTreeFlatBindingDirective, DropDownTreeHierarchyBindingDirective, MultiSelectTreeFlatBindingDirective, MultiSelectTreeHierarchyBindingDirective, DropDownTreesExpandDirective, DropDownTreesModule, NodeTemplateDirective, ItemTemplateDirective, GroupTemplateDirective, FixedGroupTemplateDirective, CustomItemTemplateDirective, HeaderTemplateDirective, FooterTemplateDirective, ValueTemplateDirective, TemplateContextDirective, GroupTagTemplateDirective, SelectableDirective, SummaryTagDirective, FilterDirective, DropDownsModule, MultiSelectModule, SharedModule, AutoCompleteModule, ComboBoxModule, DropDownListModule, SharedDirectivesModule, ListComponent, PreventableEvent, RemoveTagEvent };
11746
+ export { AUTOCOMPLETE_VALUE_ACCESSOR, COMBOBOX_VALUE_ACCESSOR, TOUCH_ENABLED, DataService, DisabledItemsService, FilterInputDirective, FilterableComponent, ListItemDirective, CustomMessagesComponent, LocalizedMessagesDirective, Messages, NavigationService, SearchBarComponent, SelectionService, TagListComponent, NoDataTemplateDirective, TagTemplateDirective, DROPDOWNLIST_VALUE_ACCESSOR, BaseCheckDirective, CheckAllDirective, CheckDirective, MultiSelectTreeSummaryTagDirective, AutoCompleteComponent, ComboBoxComponent, DropDownListComponent, MultiSelectComponent, MultiColumnComboBoxComponent, ComboBoxColumnComponent, ColumnCellTemplateDirective, ColumnHeaderTemplateDirective, DropDownTreeComponent, MultiSelectTreeComponent, DropDownTreeFlatBindingDirective, DropDownTreeHierarchyBindingDirective, MultiSelectTreeFlatBindingDirective, MultiSelectTreeHierarchyBindingDirective, DropDownTreesExpandDirective, DropDownTreesModule, NodeTemplateDirective, ItemTemplateDirective, GroupTemplateDirective, FixedGroupTemplateDirective, CustomItemTemplateDirective, HeaderTemplateDirective, FooterTemplateDirective, ValueTemplateDirective, TemplateContextDirective, GroupTagTemplateDirective, SelectableDirective, SummaryTagDirective, FilterDirective, DropDownsModule, MultiSelectModule, SharedModule, AutoCompleteModule, ComboBoxModule, DropDownListModule, SharedDirectivesModule, ListComponent, PreventableEvent, RemoveTagEvent };
@@ -33,6 +33,7 @@ var DEFAULT_FILTER_SETTINGS = {
33
33
  * public data: Array<string> = ["Albania", "Andorra", "Armenia", "Austria", "Azerbaijan"];
34
34
  * }
35
35
  * ```
36
+ * > Currently, the built-in filtering does not work with [grouped data]({% slug api_kendo-data-query_groupby %}).
36
37
  */
37
38
  var FilterDirective = /** @class */ (function () {
38
39
  function FilterDirective(component) {
@@ -23,6 +23,10 @@ var Messages = /** @class */ (function (_super) {
23
23
  core_1.Input(),
24
24
  tslib_1.__metadata("design:type", String)
25
25
  ], Messages.prototype, "clearTitle", void 0);
26
+ tslib_1.__decorate([
27
+ core_1.Input(),
28
+ tslib_1.__metadata("design:type", String)
29
+ ], Messages.prototype, "checkAllText", void 0);
26
30
  return Messages;
27
31
  }(kendo_angular_l10n_1.ComponentMessages));
28
32
  exports.Messages = Messages;
@@ -18,6 +18,7 @@ var list_item_directive_1 = require("./list-item.directive");
18
18
  var selectable_directive_1 = require("./selection/selectable.directive");
19
19
  var template_context_directive_1 = require("./templates/template-context.directive");
20
20
  var check_directive_1 = require("../dropdowntrees/checked-state/check.directive");
21
+ var check_all_directive_1 = require("../dropdowntrees/checked-state/check-all.directive");
21
22
  var INTERNAL_DIRECTIVES = [
22
23
  list_component_1.ListComponent,
23
24
  list_item_directive_1.ListItemDirective,
@@ -25,7 +26,8 @@ var INTERNAL_DIRECTIVES = [
25
26
  searchbar_component_1.SearchBarComponent,
26
27
  template_context_directive_1.TemplateContextDirective,
27
28
  taglist_component_1.TagListComponent,
28
- check_directive_1.CheckDirective
29
+ check_directive_1.CheckDirective,
30
+ check_all_directive_1.CheckAllDirective
29
31
  ];
30
32
  /**
31
33
  * @hidden