@progress/kendo-angular-grid 6.0.2-dev.202201270915 → 6.0.3

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.
@@ -9,7 +9,7 @@ export var packageMetadata = {
9
9
  name: '@progress/kendo-angular-grid',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1643274250,
12
+ publishDate: 1644936604,
13
13
  version: '',
14
14
  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'
15
15
  };
@@ -552,7 +552,7 @@ var HeaderComponent = /** @class */ (function () {
552
552
  Component({
553
553
  selector: '[kendoGridHeader]',
554
554
  styles: ["\n .k-column-resizer {\n cursor: col-resize;\n display: block;\n height: 1000%;\n position: absolute;\n top: 0;\n width: .5em;\n }\n "],
555
- template: "\n <ng-template [ngIf]=\"true\">\n <tr *ngFor=\"let i of columnLevels; let levelIndex = index\"\n kendoGridLogicalRow\n [logicalRowIndex]=\"levelIndex\"\n [logicalSlaveRow]=\"lockedColumnsCount > 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\">\n <th\n class=\"k-group-cell k-header\"\n role=\"presentation\"\n *ngFor=\"let g of groups\">\n </th>\n <th class=\"k-hierarchy-cell k-header\"\n role=\"presentation\"\n *ngIf=\"detailTemplate?.templateRef\"\n kendoGridLogicalCell\n [logicalRowIndex]=\"levelIndex\"\n [logicalColIndex]=\"0\"\n aria-selected=\"false\"\n >\n </th>\n <ng-template ngFor let-column [ngForOf]=\"columnsForLevel(levelIndex)\" [ngForTrackBy]=\"trackByIndex\" let-columnIndex=\"index\" let-last=\"last\">\n <th *ngIf=\"!isColumnGroupComponent(column)\"\n kendoGridLogicalCell\n [logicalRowIndex]=\"levelIndex\"\n [logicalColIndex]=\"logicalColumnIndex(column)\"\n [headerLabelText]=\"column.title || column.field\"\n [colSpan]=\"column.colspan\"\n [rowSpan]=\"column.rowspan(totalColumnLevels)\"\n role=\"columnheader\"\n aria-selected=\"false\"\n [attr.aria-sort]=\"sortState(column)\"\n (keydown)=\"onHeaderKeydown(column, $event)\"\n kendoDropTarget\n kendoDraggable\n kendoDraggableColumn\n [enableDrag]=\"shouldActivate(column)\"\n [context]=\"{\n field: column.field,\n type: 'column',\n column: column,\n hint: column.title || column.field,\n lastColumn: last && columnIndex === 0\n }\"\n class=\"k-header\"\n [class.k-filterable]=\"(showFilterMenu && isFilterable(column)) || showColumnMenu(column)\"\n [class.k-first]=\"isFirstOnRow(column, columnIndex)\"\n [class.k-grid-header-sticky]=\"column.sticky\"\n [ngClass]=\"column.headerClass\"\n [ngStyle]=\"column.sticky ? addStickyStyles(column) : column.headerStyle\"\n [attr.rowspan]=\"column.rowspan(totalColumnLevels)\"\n [attr.colspan]=\"column.colspan\">\n\n <ng-template [ngIf]=\"!isSortable(column)\">\n <kendo-grid-filter-menu\n *ngIf=\"showFilterMenu && isFilterable(column)\"\n [column]=\"column\"\n [filter]=\"filter\"\n [tabIndex]=\"tabIndex\">\n </kendo-grid-filter-menu>\n <kendo-grid-column-menu *ngIf=\"showColumnMenu(column)\"\n [standalone]=\"false\"\n [settings]=\"columnMenu\"\n [column]=\"column\"\n [columnMenuTemplate]=\"columnMenuTemplate\"\n [sort]=\"sort\"\n [filter]=\"filter\"\n [sortable]=\"sortable\"\n [tabIndex]=\"tabIndex\">\n </kendo-grid-column-menu>\n <ng-template\n [templateContext]=\"{\n templateRef: column.headerTemplateRef,\n columnIndex: column.leafIndex,\n column: column,\n $implicit: column\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!column.headerTemplateRef\">{{column.displayTitle}}</ng-template>\n </ng-template>\n\n <ng-template [ngIf]=\"isSortable(column)\">\n <span class=\"k-cell-inner\">\n <span #link class=\"k-link\" (click)=\"onSortClick(column, $event, link)\">\n <ng-template\n [templateContext]=\"{\n templateRef: column.headerTemplateRef,\n columnIndex: column.leafIndex,\n column: column,\n $implicit: column\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!column.headerTemplateRef\">\n <span class=\"k-column-title\">{{column.displayTitle}}</span>\n </ng-template>\n <span [attr.aria-label]=\"sortableLabel\" [ngClass]=\"sortIcon(column.field)\"></span>\n <span *ngIf=\"showSortNumbering(column)\" class=\"k-sort-order\">{{sortOrder(column.field)}}</span>\n </span>\n <span role=\"status\"\n class=\"k-sort-status\"\n style=\"position: absolute; left: -10000px;\"\n [innerHtml]=\"sortStatus(column)\">\n </span>\n <kendo-grid-filter-menu\n *ngIf=\"showFilterMenu && isFilterable(column)\"\n [column]=\"column\"\n [filter]=\"filter\"\n [tabIndex]=\"tabIndex\">\n </kendo-grid-filter-menu>\n <kendo-grid-column-menu *ngIf=\"showColumnMenu(column)\"\n [standalone]=\"false\"\n [settings]=\"columnMenu\"\n [column]=\"column\"\n [columnMenuTemplate]=\"columnMenuTemplate\"\n [sort]=\"sort\"\n [filter]=\"filter\"\n [sortable]=\"sortable\"\n [tabIndex]=\"tabIndex\">\n </kendo-grid-column-menu>\n </span>\n </ng-template>\n\n <ng-template [ngIf]=\"isCheckboxColumn(column) && !column.headerTemplateRef && column.showSelectAll\">\n <input\n class=\"k-checkbox k-checkbox-md k-rounded-md\"\n [attr.id]=\"selectAllCheckboxId()\"\n [attr.aria-label]=\"selectAllCheckboxLabel\"\n kendoGridSelectAllCheckbox\n kendoGridFocusable>\n </ng-template>\n <span kendoGridColumnHandle\n kendoDraggable\n class=\"k-column-resizer\"\n *ngIf=\"resizable\"\n [column]=\"column\"\n [columns]=\"columns\">\n </span>\n </th>\n <th *ngIf=\"isColumnGroupComponent(column)\"\n kendoGridLogicalCell\n [logicalRowIndex]=\"levelIndex\"\n [logicalColIndex]=\"logicalColumnIndex(column)\"\n [rowSpan]=\"column.rowspan(totalColumnLevels)\"\n [colSpan]=\"column.colspan\"\n [headerLabelText]=\"column.title || column.field\"\n kendoDropTarget\n kendoDraggable\n kendoDraggableColumn\n [enableDrag]=\"shouldActivate(column)\"\n [context]=\"{\n type: 'columnGroup',\n column: column,\n hint: column.title,\n lastColumn: last && columnIndex === 0\n }\"\n class=\"k-header\"\n [class.k-first]=\"isFirstOnRow(column, columnIndex)\"\n [class.k-filterable]=\"showColumnMenu(column)\"\n [class.k-grid-content-sticky]=\"column.sticky\"\n [ngClass]=\"column.headerClass\"\n [ngStyle]=\"column.headerStyle\"\n [attr.rowspan]=\"column.rowspan(totalColumnLevels)\"\n [attr.colspan]=\"column.colspan\">\n <kendo-grid-column-menu *ngIf=\"showColumnMenu(column)\"\n [standalone]=\"false\"\n [settings]=\"columnMenu\"\n [column]=\"column\"\n [columnMenuTemplate]=\"columnMenuTemplate\">\n </kendo-grid-column-menu>\n <ng-template\n [templateContext]=\"{\n templateRef: column.headerTemplateRef,\n columnIndex: lockedColumnsCount + columnIndex,\n column: column,\n $implicit: column\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!column.headerTemplateRef\">{{column.displayTitle}}</ng-template>\n <span kendoGridColumnHandle\n kendoDraggable\n class=\"k-column-resizer\"\n *ngIf=\"resizable\"\n [column]=\"column\"\n [columns]=\"columns\">\n </span>\n </th>\n </ng-template>\n </tr>\n <tr *ngIf=\"showFilterRow\"\n kendoGridFilterRow\n [columns]=\"leafColumns\"\n [filter]=\"filter\"\n [groups]=\"groups\"\n [detailTemplate]=\"detailTemplate\"\n [lockedColumnsCount]=\"lockedColumnsCount\"\n kendoGridLogicalRow\n [logicalRowIndex]=\"totalColumnLevels + 1\"\n [logicalSlaveRow]=\"lockedColumnsCount > 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\"\n ></tr>\n </ng-template>\n "
555
+ template: "\n <ng-template [ngIf]=\"true\">\n <tr *ngFor=\"let i of columnLevels; let levelIndex = index\"\n kendoGridLogicalRow\n [logicalRowIndex]=\"levelIndex\"\n [logicalSlaveRow]=\"lockedColumnsCount > 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\">\n <th\n class=\"k-group-cell k-header\"\n role=\"presentation\"\n *ngFor=\"let g of groups\">\n </th>\n <th class=\"k-hierarchy-cell k-header\"\n role=\"presentation\"\n *ngIf=\"detailTemplate?.templateRef\"\n kendoGridLogicalCell\n [logicalRowIndex]=\"levelIndex\"\n [logicalColIndex]=\"0\"\n aria-selected=\"false\"\n >\n </th>\n <ng-template ngFor let-column [ngForOf]=\"columnsForLevel(levelIndex)\" [ngForTrackBy]=\"trackByIndex\" let-columnIndex=\"index\" let-last=\"last\">\n <th *ngIf=\"!isColumnGroupComponent(column)\"\n kendoGridLogicalCell\n [logicalRowIndex]=\"levelIndex\"\n [logicalColIndex]=\"logicalColumnIndex(column)\"\n [headerLabelText]=\"column.title || column.field\"\n [colSpan]=\"column.colspan\"\n [rowSpan]=\"column.rowspan(totalColumnLevels)\"\n role=\"columnheader\"\n aria-selected=\"false\"\n [attr.aria-sort]=\"sortState(column)\"\n (keydown)=\"onHeaderKeydown(column, $event)\"\n kendoDropTarget\n kendoDraggable\n kendoDraggableColumn\n [enableDrag]=\"shouldActivate(column)\"\n [context]=\"{\n field: column.field,\n type: 'column',\n column: column,\n hint: column.title || column.field,\n lastColumn: last && columnIndex === 0\n }\"\n class=\"k-header\"\n [class.k-filterable]=\"(showFilterMenu && isFilterable(column)) || showColumnMenu(column)\"\n [class.k-first]=\"isFirstOnRow(column, columnIndex)\"\n [class.k-grid-header-sticky]=\"column.sticky\"\n [ngClass]=\"column.headerClass\"\n [ngStyle]=\"column.sticky ? addStickyStyles(column) : column.headerStyle\"\n [attr.rowspan]=\"column.rowspan(totalColumnLevels)\"\n [attr.colspan]=\"column.colspan\">\n\n <ng-template [ngIf]=\"!isSortable(column)\">\n <kendo-grid-filter-menu\n *ngIf=\"showFilterMenu && isFilterable(column)\"\n [column]=\"column\"\n [filter]=\"filter\"\n [tabIndex]=\"tabIndex\">\n </kendo-grid-filter-menu>\n <kendo-grid-column-menu *ngIf=\"showColumnMenu(column)\"\n [standalone]=\"false\"\n [settings]=\"columnMenu\"\n [column]=\"column\"\n [columnMenuTemplate]=\"columnMenuTemplate\"\n [sort]=\"sort\"\n [filter]=\"filter\"\n [sortable]=\"sortable\"\n [tabIndex]=\"tabIndex\">\n </kendo-grid-column-menu>\n <ng-template\n [templateContext]=\"{\n templateRef: column.headerTemplateRef,\n columnIndex: column.leafIndex,\n column: column,\n $implicit: column\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!column.headerTemplateRef\">{{column.displayTitle}}</ng-template>\n </ng-template>\n\n <ng-template [ngIf]=\"isSortable(column)\">\n <span class=\"k-cell-inner\">\n <span #link class=\"k-link\" (click)=\"onSortClick(column, $event, link)\">\n <ng-template\n [templateContext]=\"{\n templateRef: column.headerTemplateRef,\n columnIndex: column.leafIndex,\n column: column,\n $implicit: column\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!column.headerTemplateRef\">\n <span class=\"k-column-title\">{{column.displayTitle}}</span>\n </ng-template>\n <span role=\"note\" [attr.aria-label]=\"sortableLabel\" [ngClass]=\"sortIcon(column.field)\"></span>\n <span *ngIf=\"showSortNumbering(column)\" class=\"k-sort-order\">{{sortOrder(column.field)}}</span>\n </span>\n <span role=\"status\"\n class=\"k-sort-status\"\n style=\"position: absolute; left: -10000px;\"\n [innerHtml]=\"sortStatus(column)\">\n </span>\n <kendo-grid-filter-menu\n *ngIf=\"showFilterMenu && isFilterable(column)\"\n [column]=\"column\"\n [filter]=\"filter\"\n [tabIndex]=\"tabIndex\">\n </kendo-grid-filter-menu>\n <kendo-grid-column-menu *ngIf=\"showColumnMenu(column)\"\n [standalone]=\"false\"\n [settings]=\"columnMenu\"\n [column]=\"column\"\n [columnMenuTemplate]=\"columnMenuTemplate\"\n [sort]=\"sort\"\n [filter]=\"filter\"\n [sortable]=\"sortable\"\n [tabIndex]=\"tabIndex\">\n </kendo-grid-column-menu>\n </span>\n </ng-template>\n\n <ng-template [ngIf]=\"isCheckboxColumn(column) && !column.headerTemplateRef && column.showSelectAll\">\n <input\n class=\"k-checkbox k-checkbox-md k-rounded-md\"\n [attr.id]=\"selectAllCheckboxId()\"\n [attr.aria-label]=\"selectAllCheckboxLabel\"\n kendoGridSelectAllCheckbox\n kendoGridFocusable>\n </ng-template>\n <span kendoGridColumnHandle\n kendoDraggable\n class=\"k-column-resizer\"\n *ngIf=\"resizable\"\n [column]=\"column\"\n [columns]=\"columns\">\n </span>\n </th>\n <th *ngIf=\"isColumnGroupComponent(column)\"\n kendoGridLogicalCell\n [logicalRowIndex]=\"levelIndex\"\n [logicalColIndex]=\"logicalColumnIndex(column)\"\n [rowSpan]=\"column.rowspan(totalColumnLevels)\"\n [colSpan]=\"column.colspan\"\n [headerLabelText]=\"column.title || column.field\"\n kendoDropTarget\n kendoDraggable\n kendoDraggableColumn\n [enableDrag]=\"shouldActivate(column)\"\n [context]=\"{\n type: 'columnGroup',\n column: column,\n hint: column.title,\n lastColumn: last && columnIndex === 0\n }\"\n class=\"k-header\"\n [class.k-first]=\"isFirstOnRow(column, columnIndex)\"\n [class.k-filterable]=\"showColumnMenu(column)\"\n [class.k-grid-content-sticky]=\"column.sticky\"\n [ngClass]=\"column.headerClass\"\n [ngStyle]=\"column.headerStyle\"\n [attr.rowspan]=\"column.rowspan(totalColumnLevels)\"\n [attr.colspan]=\"column.colspan\">\n <kendo-grid-column-menu *ngIf=\"showColumnMenu(column)\"\n [standalone]=\"false\"\n [settings]=\"columnMenu\"\n [column]=\"column\"\n [columnMenuTemplate]=\"columnMenuTemplate\">\n </kendo-grid-column-menu>\n <ng-template\n [templateContext]=\"{\n templateRef: column.headerTemplateRef,\n columnIndex: lockedColumnsCount + columnIndex,\n column: column,\n $implicit: column\n }\">\n </ng-template>\n <ng-template [ngIf]=\"!column.headerTemplateRef\">{{column.displayTitle}}</ng-template>\n <span kendoGridColumnHandle\n kendoDraggable\n class=\"k-column-resizer\"\n *ngIf=\"resizable\"\n [column]=\"column\"\n [columns]=\"columns\">\n </span>\n </th>\n </ng-template>\n </tr>\n <tr *ngIf=\"showFilterRow\"\n kendoGridFilterRow\n [columns]=\"leafColumns\"\n [filter]=\"filter\"\n [groups]=\"groups\"\n [detailTemplate]=\"detailTemplate\"\n [lockedColumnsCount]=\"lockedColumnsCount\"\n kendoGridLogicalRow\n [logicalRowIndex]=\"totalColumnLevels + 1\"\n [logicalSlaveRow]=\"lockedColumnsCount > 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\"\n ></tr>\n </ng-template>\n "
556
556
  }),
557
557
  tslib_1.__metadata("design:paramtypes", [SinglePopupService,
558
558
  DragHintService,
@@ -6,7 +6,8 @@ import * as tslib_1 from "tslib";
6
6
  import { detectIE } from './../utils';
7
7
  import { Directive, HostBinding, Renderer2, ElementRef, Input, Output, EventEmitter, NgZone } from '@angular/core';
8
8
  import { SelectionService } from './selection.service';
9
- import { isPresent } from "../utils";
9
+ import { isPresent } from '../utils';
10
+ import { hasObservers } from '@progress/kendo-angular-common';
10
11
  /**
11
12
  * Represents the select-all checkbox feature of the Grid ([see example]({% slug selection_grid %}#toc-select-all-feature)).
12
13
  */
@@ -22,10 +23,10 @@ var SelectAllCheckboxDirective = /** @class */ (function () {
22
23
  * ([see example]({% slug selection_grid %}#toc-select-all-feature)).
23
24
  */
24
25
  this.selectAllChange = new EventEmitter();
25
- this.type = "checkbox";
26
+ this.type = 'checkbox';
26
27
  this.stateSet = false;
27
28
  this.ngZone.runOutsideAngular(function () {
28
- _this.destroyClick = _this.renderer.listen(_this.el.nativeElement, "click", _this.onClick.bind(_this));
29
+ _this.destroyClick = _this.renderer.listen(_this.el.nativeElement, 'click', _this.onClick.bind(_this));
29
30
  });
30
31
  }
31
32
  SelectAllCheckboxDirective.prototype.ngAfterContentChecked = function () {
@@ -44,14 +45,20 @@ var SelectAllCheckboxDirective = /** @class */ (function () {
44
45
  */
45
46
  SelectAllCheckboxDirective.prototype.onClick = function () {
46
47
  var _this = this;
47
- // yields consistent cross-browser behavior when clicking an "indeterminate" checkbox
48
+ // yields consistent cross-browser behavior when clicking an indeterminate checkbox
48
49
  var undefinedCheckedStateInIE = detectIE() && this.selectionService.selectAllState === undefined;
49
50
  var isChecked = undefinedCheckedStateInIE ? true : this.el.nativeElement.checked;
50
51
  var options = this.selectionService.options;
51
- this.selectAllChange.emit(isChecked ? "checked" : "unchecked");
52
- if (options.enabled && options.mode === "multiple") {
52
+ var enabledAndMultiple = options.enabled && options.mode === 'multiple';
53
+ var shouldEmitSelectAll = hasObservers(this.selectAllChange);
54
+ if (enabledAndMultiple || shouldEmitSelectAll) {
53
55
  this.ngZone.run(function () {
54
- _this.selectionService.updateAll(isChecked);
56
+ if (enabledAndMultiple) {
57
+ _this.selectionService.updateAll(isChecked);
58
+ }
59
+ if (shouldEmitSelectAll) {
60
+ _this.selectAllChange.emit(isChecked ? 'checked' : 'unchecked');
61
+ }
55
62
  });
56
63
  }
57
64
  };
@@ -61,17 +68,17 @@ var SelectAllCheckboxDirective = /** @class */ (function () {
61
68
  SelectAllCheckboxDirective.prototype.setState = function () {
62
69
  var state = this.stateSet ? this.stateToBool() : this.selectionService.selectAllState;
63
70
  var elem = this.el.nativeElement;
64
- this.renderer.setProperty(elem, "indeterminate", !isPresent(state));
65
- this.renderer.setProperty(elem, "checked", isPresent(state) ? state : false);
71
+ this.renderer.setProperty(elem, 'indeterminate', !isPresent(state));
72
+ this.renderer.setProperty(elem, 'checked', isPresent(state) ? state : false);
66
73
  };
67
74
  /**
68
75
  * @hidden
69
76
  */
70
77
  SelectAllCheckboxDirective.prototype.stateToBool = function () {
71
78
  switch (this.state) {
72
- case "checked":
79
+ case 'checked':
73
80
  return true;
74
- case "unchecked":
81
+ case 'unchecked':
75
82
  return false;
76
83
  default:
77
84
  return undefined;