@progress/kendo-angular-grid 5.5.1 → 6.0.0-dev.202201191529

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 (94) hide show
  1. package/LICENSE.md +1 -1
  2. package/NOTICE.txt +119 -79
  3. package/README.md +1 -1
  4. package/dist/cdn/js/kendo-angular-grid.js +2 -2
  5. package/dist/cdn/main.js +1 -1
  6. package/dist/es/column-menu/column-chooser.component.js +1 -1
  7. package/dist/es/column-menu/column-list.component.js +1 -1
  8. package/dist/es/dragdrop/draggable-column.directive.js +3 -3
  9. package/dist/es/filtering/cell/filter-cell-operators.component.js +1 -1
  10. package/dist/es/filtering/cell/string-filter-cell.component.js +1 -1
  11. package/dist/es/filtering/filter-input.directive.js +2 -1
  12. package/dist/es/filtering/menu/boolean-filter-menu.component.js +1 -1
  13. package/dist/es/filtering/menu/filter-menu-container.component.js +1 -1
  14. package/dist/es/filtering/menu/filter-menu-input-wrapper.component.js +2 -2
  15. package/dist/es/filtering/menu/string-filter-menu-input.component.js +1 -1
  16. package/dist/es/grid.component.js +4 -5
  17. package/dist/es/grouping/group-indicator.component.js +1 -1
  18. package/dist/es/navigation/focusable.directive.js +5 -5
  19. package/dist/es/package-metadata.js +1 -1
  20. package/dist/es/pager/pager-numeric-buttons.component.js +1 -1
  21. package/dist/es/pager/pager.component.js +0 -5
  22. package/dist/es/pdf/export-element.js +1 -1
  23. package/dist/es/rendering/cell.component.js +1 -1
  24. package/dist/es/rendering/constants.js +1 -1
  25. package/dist/es/rendering/details-expand.directive.js +20 -6
  26. package/dist/es/rendering/header/header.component.js +1 -1
  27. package/dist/es/rendering/toolbar/toolbar-template.directive.js +4 -4
  28. package/dist/es/selection/pair-set.js +91 -0
  29. package/dist/es/selection/selection-default.js +48 -30
  30. package/dist/es/utils.js +1 -3
  31. package/dist/es2015/column-menu/column-chooser.component.js +2 -2
  32. package/dist/es2015/column-menu/column-list.component.js +3 -3
  33. package/dist/es2015/dragdrop/draggable-column.directive.js +3 -3
  34. package/dist/es2015/filtering/cell/filter-cell-operators.component.js +3 -3
  35. package/dist/es2015/filtering/cell/string-filter-cell.component.js +1 -1
  36. package/dist/es2015/filtering/filter-input.directive.js +2 -1
  37. package/dist/es2015/filtering/menu/boolean-filter-menu.component.js +1 -1
  38. package/dist/es2015/filtering/menu/filter-menu-container.component.js +2 -2
  39. package/dist/es2015/filtering/menu/filter-menu-input-wrapper.component.d.ts +2 -2
  40. package/dist/es2015/filtering/menu/filter-menu-input-wrapper.component.js +2 -2
  41. package/dist/es2015/filtering/menu/string-filter-menu-input.component.js +1 -1
  42. package/dist/es2015/grid.component.d.ts +4 -4
  43. package/dist/es2015/grid.component.js +4 -5
  44. package/dist/es2015/grouping/group-indicator.component.js +2 -2
  45. package/dist/es2015/index.metadata.json +1 -1
  46. package/dist/es2015/navigation/focusable.directive.d.ts +5 -5
  47. package/dist/es2015/navigation/focusable.directive.js +5 -5
  48. package/dist/es2015/package-metadata.js +1 -1
  49. package/dist/es2015/pager/pager-numeric-buttons.component.js +1 -1
  50. package/dist/es2015/pager/pager.component.d.ts +0 -1
  51. package/dist/es2015/pager/pager.component.js +0 -5
  52. package/dist/es2015/pdf/export-element.js +1 -1
  53. package/dist/es2015/rendering/cell.component.js +3 -3
  54. package/dist/es2015/rendering/constants.d.ts +1 -1
  55. package/dist/es2015/rendering/constants.js +1 -1
  56. package/dist/es2015/rendering/details-expand.directive.d.ts +8 -2
  57. package/dist/es2015/rendering/details-expand.directive.js +20 -6
  58. package/dist/es2015/rendering/header/header.component.js +1 -1
  59. package/dist/es2015/rendering/toolbar/toolbar-template.directive.d.ts +4 -4
  60. package/dist/es2015/rendering/toolbar/toolbar-template.directive.js +4 -4
  61. package/dist/es2015/selection/pair-set.d.ts +50 -0
  62. package/dist/es2015/selection/pair-set.js +81 -0
  63. package/dist/es2015/selection/selection-default.d.ts +10 -2
  64. package/dist/es2015/selection/selection-default.js +42 -28
  65. package/dist/es2015/utils.d.ts +2 -2
  66. package/dist/fesm2015/index.js +179 -78
  67. package/dist/fesm5/index.js +186 -74
  68. package/dist/npm/column-menu/column-chooser.component.js +1 -1
  69. package/dist/npm/column-menu/column-list.component.js +1 -1
  70. package/dist/npm/dragdrop/draggable-column.directive.js +3 -3
  71. package/dist/npm/filtering/cell/filter-cell-operators.component.js +1 -1
  72. package/dist/npm/filtering/cell/string-filter-cell.component.js +1 -1
  73. package/dist/npm/filtering/filter-input.directive.js +2 -1
  74. package/dist/npm/filtering/menu/boolean-filter-menu.component.js +1 -1
  75. package/dist/npm/filtering/menu/filter-menu-container.component.js +1 -1
  76. package/dist/npm/filtering/menu/filter-menu-input-wrapper.component.js +2 -2
  77. package/dist/npm/filtering/menu/string-filter-menu-input.component.js +1 -1
  78. package/dist/npm/grid.component.js +4 -5
  79. package/dist/npm/grouping/group-indicator.component.js +1 -1
  80. package/dist/npm/navigation/focusable.directive.js +5 -5
  81. package/dist/npm/package-metadata.js +1 -1
  82. package/dist/npm/pager/pager-numeric-buttons.component.js +1 -1
  83. package/dist/npm/pager/pager.component.js +0 -5
  84. package/dist/npm/pdf/export-element.js +1 -1
  85. package/dist/npm/rendering/cell.component.js +1 -1
  86. package/dist/npm/rendering/constants.js +1 -1
  87. package/dist/npm/rendering/details-expand.directive.js +19 -5
  88. package/dist/npm/rendering/header/header.component.js +1 -1
  89. package/dist/npm/rendering/toolbar/toolbar-template.directive.js +4 -4
  90. package/dist/npm/selection/pair-set.js +93 -0
  91. package/dist/npm/selection/selection-default.js +48 -30
  92. package/dist/npm/utils.js +1 -3
  93. package/dist/systemjs/kendo-angular-grid.js +1 -1
  94. package/package.json +16 -16
@@ -60,9 +60,7 @@ var isUniversal = function () { return typeof document === 'undefined'; };
60
60
  /**
61
61
  * @hidden
62
62
  */
63
- var isString = function (value) {
64
- return typeof value === 'string';
65
- };
63
+ var isString = function (value) { return typeof value === 'string'; };
66
64
  /**
67
65
  * @hidden
68
66
  */
@@ -533,7 +531,7 @@ var EMPTY_CELL_CONTEXT = {};
533
531
  * _@Component({
534
532
  * selector: 'my-app',
535
533
  * template: `
536
- * <input type="text" class="k-textbox" placeholder="Tab stop #0" style="margin-bottom: 8px;" />
534
+ * <input type="text" placeholder="Tab stop #0" style="margin-bottom: 8px;" />
537
535
  * <kendo-grid [data]="data" [navigable]="true">
538
536
  * <kendo-grid-column field="ProductID" title="Product ID" width="100">
539
537
  * </kendo-grid-column>
@@ -542,18 +540,18 @@ var EMPTY_CELL_CONTEXT = {};
542
540
  * <kendo-grid-column>
543
541
  * <ng-template kendoGridCellTemplate let-dataItem>
544
542
  * <!-- The first focusable element will be focused when pressing Enter on the cell -->
545
- * <input type="text" class="k-textbox" kendoGridFocusable [value]="dataItem.ProductName" style="margin-right: 8px;" />
546
- * <button class="k-button" kendoGridFocusable>Update</button>
543
+ * <input type="text" kendoGridFocusable [value]="dataItem.ProductName" style="margin-right: 8px;" />
544
+ * <button kendoGridFocusable>Update</button>
547
545
  * </ng-template>
548
546
  * </kendo-grid-column>
549
547
  * <kendo-grid-column width="100">
550
548
  * <ng-template kendoGridCellTemplate>
551
549
  * <!-- A single focusable element will be focused during navigation -->
552
- * <button class="k-button" kendoGridFocusable>Delete</button>
550
+ * <button kendoGridFocusable>Delete</button>
553
551
  * </ng-template>
554
552
  * </kendo-grid-column>
555
553
  * </kendo-grid>
556
- * <input type="text" class="k-textbox" placeholder="Tab stop #2" style="margin-top: 8px;" />
554
+ * <input type="text" placeholder="Tab stop #2" style="margin-top: 8px;" />
557
555
  * `
558
556
  * })
559
557
  *
@@ -3046,7 +3044,7 @@ var packageMetadata = {
3046
3044
  name: '@progress/kendo-angular-grid',
3047
3045
  productName: 'Kendo UI for Angular',
3048
3046
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
3049
- publishDate: 1639039762,
3047
+ publishDate: 1642605543,
3050
3048
  version: '',
3051
3049
  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'
3052
3050
  };
@@ -5206,6 +5204,93 @@ var DataCollection = /** @class */ (function () {
5206
5204
  return DataCollection;
5207
5205
  }());
5208
5206
 
5207
+ /**
5208
+ * @hidden
5209
+ *
5210
+ * Quick look-up structure for combinations of keys.
5211
+ * Similar to the native JS Set, however, working with a couple of keys instead of with a single key.
5212
+ * Supports both primitive keys and object keys (compared by reference).
5213
+ */
5214
+ var PairSet = /** @class */ (function () {
5215
+ function PairSet(items, keyXField, keyYField) {
5216
+ var _this = this;
5217
+ /**
5218
+ * Holds a set of Y keys for each defined X key.
5219
+ * Each X key creates a map which holds a set of Y keys.
5220
+ *
5221
+ * Map { 1 => Set { 1, 2, 3 } } // pairs: [1, 1], [1, 2], [1, 3]
5222
+ */
5223
+ this.keysX = new Map();
5224
+ /**
5225
+ * Count the each added or deleted key manually to avoid iterating over all items when calling `this.size`.
5226
+ */
5227
+ this.totalKeysCount = 0;
5228
+ if (items && keyXField && keyYField) {
5229
+ items.forEach(function (item) { return _this.add(item[keyXField], item[keyYField]); });
5230
+ }
5231
+ }
5232
+ Object.defineProperty(PairSet.prototype, "size", {
5233
+ /**
5234
+ * Gets the total number of X/Y key pairs.
5235
+ */
5236
+ get: function () {
5237
+ return this.totalKeysCount;
5238
+ },
5239
+ enumerable: true,
5240
+ configurable: true
5241
+ });
5242
+ /**
5243
+ * Adds a couple of items identified as a combination.
5244
+ */
5245
+ PairSet.prototype.add = function (keyX, keyY) {
5246
+ if (!this.keysX.has(keyX)) {
5247
+ this.keysX.set(keyX, new Set());
5248
+ }
5249
+ if (!this.has(keyX, keyY)) {
5250
+ this.keysX.get(keyX).add(keyY);
5251
+ this.totalKeysCount += 1;
5252
+ }
5253
+ };
5254
+ /**
5255
+ * Adds a combination of a couple of items identified together.
5256
+ */
5257
+ PairSet.prototype.delete = function (keyX, keyY) {
5258
+ if (this.has(keyX, keyY)) {
5259
+ this.keysX.get(keyX).delete(keyY);
5260
+ this.totalKeysCount -= 1;
5261
+ }
5262
+ };
5263
+ /**
5264
+ * Checks whether the defined combination is stored.
5265
+ */
5266
+ PairSet.prototype.has = function (keyX, keyY) {
5267
+ return this.keysX.has(keyX) && this.keysX.get(keyX).has(keyY);
5268
+ };
5269
+ /**
5270
+ * Clears all key combinations.
5271
+ */
5272
+ PairSet.prototype.clear = function () {
5273
+ this.keysX.clear();
5274
+ this.totalKeysCount = 0;
5275
+ };
5276
+ /**
5277
+ * Converts the persisted data structure to an array of objects,
5278
+ * using the provided field names for the object props.
5279
+ */
5280
+ PairSet.prototype.toArray = function (keyXField, keyYField) {
5281
+ return Array.from(this.keysX).reduce(function (pairs, pair) {
5282
+ // Array.from(mapInstance) returns an array of arrays [[itemKey1, columnKeysSet1], [itemKey2, columnKeysSet2]]
5283
+ var keyX = pair[0], keysY = pair[1];
5284
+ Array.from(keysY).forEach(function (keyY) {
5285
+ var _a;
5286
+ return pairs.push((_a = {}, _a[keyXField] = keyX, _a[keyYField] = keyY, _a));
5287
+ });
5288
+ return pairs;
5289
+ }, []);
5290
+ };
5291
+ return PairSet;
5292
+ }());
5293
+
5209
5294
  /**
5210
5295
  * @hidden
5211
5296
  */
@@ -5221,20 +5306,33 @@ var Selection = /** @class */ (function () {
5221
5306
  * Fires when the `selectedKeys` collection has been updated.
5222
5307
  */
5223
5308
  this.selectedKeysChange = new EventEmitter();
5309
+ this.rowSelectionState = new Set();
5310
+ this.cellSelectionState = new PairSet();
5224
5311
  this.init();
5225
5312
  }
5313
+ Object.defineProperty(Selection.prototype, "isCellSelectionMode", {
5314
+ get: function () {
5315
+ return isPresent(this.grid.selectable) && this.grid.selectable['cell'];
5316
+ },
5317
+ enumerable: true,
5318
+ configurable: true
5319
+ });
5320
+ Selection.prototype.ngOnChanges = function (changes) {
5321
+ // skip reinitialization if the user data is the same as the last state change
5322
+ if (isPresent(changes.selectedKeys) && this.lastSelectionState !== this.selectedKeys) {
5323
+ this.setState(this.selectedKeys);
5324
+ }
5325
+ };
5226
5326
  Selection.prototype.init = function () {
5227
5327
  var _this = this;
5228
5328
  if (!isPresent(this.grid.rowSelected)) {
5229
- this.grid.rowSelected = function (row) {
5230
- return _this.selectedKeys.indexOf(_this.getItemKey(row)) >= 0;
5231
- };
5329
+ this.grid.rowSelected = function (row) { return _this.rowSelectionState.has(_this.getItemKey(row)); };
5232
5330
  }
5233
5331
  if (!isPresent(this.grid.cellSelected)) {
5234
5332
  this.grid.cellSelected = function (row, column, colIndex) {
5235
5333
  var contender = _this.getSelectionItem(row, column, colIndex);
5236
5334
  return {
5237
- selected: _this.selectedKeys.some(function (item) { return item.columnKey === contender.columnKey && item.itemKey === contender.itemKey; }),
5335
+ selected: _this.cellSelectionState.has(contender.itemKey, contender.columnKey),
5238
5336
  item: contender
5239
5337
  };
5240
5338
  };
@@ -5253,7 +5351,8 @@ var Selection = /** @class */ (function () {
5253
5351
  * @hidden
5254
5352
  */
5255
5353
  Selection.prototype.reset = function () {
5256
- this.selectedKeys = [];
5354
+ this.rowSelectionState.clear();
5355
+ this.cellSelectionState.clear();
5257
5356
  };
5258
5357
  Selection.prototype.getItemKey = function (row) {
5259
5358
  if (this.selectionKey) {
@@ -5290,45 +5389,49 @@ var Selection = /** @class */ (function () {
5290
5389
  if (selection.selectedRows) {
5291
5390
  selection.deselectedRows.forEach(function (item) {
5292
5391
  var itemKey = _this.getItemKey(item);
5293
- var itemIndex = _this.selectedKeys.indexOf(itemKey);
5294
- if (itemIndex >= 0) {
5295
- _this.selectedKeys.splice(itemIndex, 1);
5296
- }
5392
+ _this.rowSelectionState.delete(itemKey);
5297
5393
  });
5298
- if (this.grid.selectableSettings.mode === "single" && this.selectedKeys.length > 0) {
5394
+ if (this.grid.selectableSettings.mode === "single" && this.rowSelectionState.size > 0) {
5299
5395
  this.reset();
5300
5396
  }
5301
5397
  selection.selectedRows.forEach(function (item) {
5302
5398
  var itemKey = _this.getItemKey(item);
5303
- if (_this.selectedKeys.indexOf(itemKey) < 0) {
5304
- _this.selectedKeys.push(itemKey);
5305
- }
5399
+ _this.rowSelectionState.add(itemKey);
5306
5400
  });
5307
5401
  }
5308
5402
  else {
5309
- selection.deselectedCells.forEach(function (item) {
5310
- var itemIndex = _this.getCellSelectionItemIndex(item);
5311
- if (itemIndex >= 0) {
5312
- _this.selectedKeys.splice(itemIndex, 1);
5313
- }
5403
+ selection.deselectedCells.forEach(function (_a) {
5404
+ var itemKey = _a.itemKey, columnKey = _a.columnKey;
5405
+ _this.cellSelectionState.delete(itemKey, columnKey);
5314
5406
  });
5315
- if (this.grid.selectableSettings.mode === "single" && this.selectedKeys.length > 0) {
5407
+ if (this.grid.selectableSettings.mode === "single" && this.cellSelectionState.size > 0) {
5316
5408
  this.reset();
5317
5409
  }
5318
- selection.selectedCells.forEach(function (item) {
5319
- var itemIndex = _this.getCellSelectionItemIndex(item);
5320
- if (itemIndex < 0) {
5321
- _this.selectedKeys.push(item);
5322
- }
5410
+ selection.selectedCells.forEach(function (_a) {
5411
+ var itemKey = _a.itemKey, columnKey = _a.columnKey;
5412
+ _this.cellSelectionState.add(itemKey, columnKey);
5323
5413
  });
5324
5414
  }
5325
5415
  this.cd.markForCheck();
5326
- this.selectedKeysChange.emit(this.selectedKeys);
5416
+ this.notifyChange();
5327
5417
  };
5328
- Selection.prototype.getCellSelectionItemIndex = function (item) {
5329
- return this.selectedKeys.findIndex(function (selectedItem) {
5330
- return selectedItem.itemKey === item.itemKey && selectedItem.columnKey === item.columnKey;
5331
- });
5418
+ Selection.prototype.notifyChange = function () {
5419
+ this.lastSelectionState = this.stateToArray();
5420
+ this.selectedKeysChange.emit(this.lastSelectionState);
5421
+ };
5422
+ Selection.prototype.setState = function (selectedKeys) {
5423
+ this.reset();
5424
+ if (this.isCellSelectionMode) {
5425
+ this.cellSelectionState = new PairSet(selectedKeys, 'itemKey', 'columnKey');
5426
+ }
5427
+ else {
5428
+ this.rowSelectionState = new Set(selectedKeys);
5429
+ }
5430
+ };
5431
+ Selection.prototype.stateToArray = function () {
5432
+ return this.isCellSelectionMode ?
5433
+ this.cellSelectionState.toArray('itemKey', 'columnKey') :
5434
+ Array.from(this.rowSelectionState);
5332
5435
  };
5333
5436
  __decorate([
5334
5437
  Input(),
@@ -5966,16 +6069,16 @@ var ExcelService = /** @class */ (function () {
5966
6069
  * selector: 'my-app',
5967
6070
  * template: `
5968
6071
  * <div class="example-config">
5969
- * <input type="radio" id="top" name="position" class="k-radio" value="top" checked (click)="positionChange($event)"/>
6072
+ * <input type="radio" id="top" name="position" value="top" checked (click)="positionChange($event)"/>
5970
6073
  * <label class="k-radio-label" for="top">Top</label><br/>
5971
- * <input type="radio" id="bottom" name="position" class="k-radio" value="bottom" (click)="positionChange($event)"/>
6074
+ * <input type="radio" id="bottom" name="position" value="bottom" (click)="positionChange($event)"/>
5972
6075
  * <label class="k-radio-label" for="bottom">Bottom</label><br/>
5973
- * <input type="radio" id="both" name="position" value="both" class="k-radio" (click)="positionChange($event)"/>
6076
+ * <input type="radio" id="both" name="position" value="both" (click)="positionChange($event)"/>
5974
6077
  * <label class="k-radio-label" for="both">Both</label><br/>
5975
6078
  * </div>
5976
6079
  * <kendo-grid [data]="gridData" style="height: 200px">
5977
6080
  * <ng-template kendoGridToolbarTemplate [position]="position" let-position="position">
5978
- * <button (click)="onClick()" class="k-button">Custom action</button>
6081
+ * <button (click)="onClick()">Custom action</button>
5979
6082
  * </ng-template>
5980
6083
  * <kendo-grid-column field="ProductName">
5981
6084
  * </kendo-grid-column>
@@ -8291,7 +8394,7 @@ var GridComponent = /** @class */ (function () {
8291
8394
  * [resizable]="true"
8292
8395
  * style="height: 300px">
8293
8396
  * <ng-template kendoGridToolbarTemplate>
8294
- * <button class="k-button" (click)="grid.autoFitColumn(groupColumn)">
8397
+ * <button kendoButton (click)="grid.autoFitColumn(groupColumn)">
8295
8398
  * Auto-fit the group column
8296
8399
  * </button>
8297
8400
  * </ng-template>
@@ -8357,10 +8460,10 @@ var GridComponent = /** @class */ (function () {
8357
8460
  * [resizable]="true"
8358
8461
  * style="height: 300px">
8359
8462
  * <ng-template kendoGridToolbarTemplate>
8360
- * <button class="k-button" (click)="grid.autoFitColumns([firstColumn, lastColumn])">
8463
+ * <button kendoButton (click)="grid.autoFitColumns([firstColumn, lastColumn])">
8361
8464
  * Auto-fit the first and last column
8362
8465
  * </button>
8363
- * <button class="k-button" (click)="grid.autoFitColumns()">
8466
+ * <button kendoButton (click)="grid.autoFitColumns()">
8364
8467
  * Auto-fit all columns
8365
8468
  * </button>
8366
8469
  * </ng-template>
@@ -8539,7 +8642,7 @@ var GridComponent = /** @class */ (function () {
8539
8642
  * [reorderable]="true"
8540
8643
  * style="height: 300px">
8541
8644
  * <ng-template kendoGridToolbarTemplate>
8542
- * <button class="k-button"
8645
+ * <button kendoButton
8543
8646
  * (click)="grid.reorderColumn(groupColumn, 2, { before: true })">
8544
8647
  * Move the group column before the last one.
8545
8648
  * </button>
@@ -9400,7 +9503,6 @@ var GridComponent = /** @class */ (function () {
9400
9503
  __metadata("design:paramtypes", [])
9401
9504
  ], GridComponent.prototype, "dir", null);
9402
9505
  __decorate([
9403
- HostBinding('class.k-widget'),
9404
9506
  HostBinding('class.k-grid'),
9405
9507
  __metadata("design:type", Boolean),
9406
9508
  __metadata("design:paramtypes", [])
@@ -9742,7 +9844,7 @@ var IGNORE_TARGET_CLASSSES = 'k-icon';
9742
9844
  /**
9743
9845
  * @hidden
9744
9846
  */
9745
- var IGNORE_CONTAINER_CLASSES = 'k-widget k-grid-ignore-click';
9847
+ var IGNORE_CONTAINER_CLASSES = 'k-grid k-grid-ignore-click';
9746
9848
 
9747
9849
  var elementAt = function (index, elements, elementOffset) {
9748
9850
  for (var idx = 0, elementIdx = 0; idx < elements.length; idx++) {
@@ -10741,9 +10843,12 @@ var ExpandDetailsDirective = /** @class */ (function () {
10741
10843
  this.expandedDetailKeys = [];
10742
10844
  /**
10743
10845
  * Specifies if the items should be initially expanded.
10846
+ * When set to `true` items added to the `expandedDetailKeys` collection will be collapsed, and items that are not present in it will be expanded.
10847
+ *
10744
10848
  * @default false
10745
10849
  */
10746
10850
  this.initiallyExpanded = false;
10851
+ this.expandedState = new Set();
10747
10852
  this.subscriptions = new Subscription();
10748
10853
  this.grid.isDetailExpanded = this.isExpanded.bind(this);
10749
10854
  this.subscriptions.add(merge(this.grid.detailExpand.pipe(map(function (e) { return (__assign({ expand: true }, e)); })), this.grid.detailCollapse.pipe(map(function (e) { return (__assign({ expand: false }, e)); }))).subscribe(this.toggleState.bind(this)));
@@ -10781,6 +10886,12 @@ var ExpandDetailsDirective = /** @class */ (function () {
10781
10886
  enumerable: true,
10782
10887
  configurable: true
10783
10888
  });
10889
+ ExpandDetailsDirective.prototype.ngOnChanges = function (changes) {
10890
+ // skip reinitialization if the user data is the same as the last state change
10891
+ if (isPresent(changes.expandedDetailKeys) && this.lastExpandedState !== this.expandedDetailKeys) {
10892
+ this.expandedState = new Set(this.expandedDetailKeys);
10893
+ }
10894
+ };
10784
10895
  ExpandDetailsDirective.prototype.ngOnDestroy = function () {
10785
10896
  this.subscriptions.unsubscribe();
10786
10897
  };
@@ -10796,18 +10907,23 @@ var ExpandDetailsDirective = /** @class */ (function () {
10796
10907
  */
10797
10908
  ExpandDetailsDirective.prototype.isExpanded = function (args) {
10798
10909
  var key = this.keyGetter(args.dataItem);
10799
- return this.expandedDetailKeys.indexOf(key) > -1 ? !this.initiallyExpanded : this.initiallyExpanded;
10910
+ var hasKey = this.expandedState.has(key);
10911
+ // when [initiallyExpanded]="true" a present key means the corresponding detail row is collapsed
10912
+ return this.initiallyExpanded ? !hasKey : hasKey;
10800
10913
  };
10801
10914
  ExpandDetailsDirective.prototype.toggleState = function (args) {
10802
10915
  var key = this.keyGetter(args.dataItem);
10803
10916
  if (Boolean(this.initiallyExpanded) !== args.expand) {
10804
- this.expandedDetailKeys.push(key);
10917
+ this.expandedState.add(key);
10805
10918
  }
10806
10919
  else {
10807
- var index = this.expandedDetailKeys.indexOf(key);
10808
- this.expandedDetailKeys.splice(index, 1);
10920
+ this.expandedState.delete(key);
10809
10921
  }
10810
- this.expandedDetailKeysChange.emit(this.expandedDetailKeys);
10922
+ this.notifyChange();
10923
+ };
10924
+ ExpandDetailsDirective.prototype.notifyChange = function () {
10925
+ this.lastExpandedState = Array.from(this.expandedState);
10926
+ this.expandedDetailKeysChange.emit(this.lastExpandedState);
10811
10927
  };
10812
10928
  __decorate([
10813
10929
  Output(),
@@ -12043,7 +12159,8 @@ var FilterInputDirective = /** @class */ (function () {
12043
12159
  FilterInputDirective.prototype.addAriaAttributes = function () {
12044
12160
  var ariaValue = this.columnLabel;
12045
12161
  if (this.kendoInput && this.kendoInput.focusableId && isDocumentAvailable()) {
12046
- var focusableElement = this.element.nativeElement.querySelector("#" + this.kendoInput.focusableId);
12162
+ var focusableElement = this.element.nativeElement.querySelector("#" + this.kendoInput.focusableId) ||
12163
+ this.element.nativeElement;
12047
12164
  this.renderer.setAttribute(focusableElement, 'aria-label', ariaValue);
12048
12165
  }
12049
12166
  else {
@@ -12413,7 +12530,7 @@ var StringFilterCellComponent = /** @class */ (function (_super) {
12413
12530
  StringFilterCellComponent = __decorate([
12414
12531
  Component({
12415
12532
  selector: 'kendo-grid-string-filter-cell',
12416
- template: "\n <kendo-grid-filter-wrapper-cell\n [column]=\"column\"\n [filter]=\"filter\"\n [operators]=\"operators\"\n [defaultOperator]=\"operator\"\n [showOperators]=\"showOperators\">\n <input\n class=\"k-textbox\"\n kendoGridFocusable\n kendoFilterInput\n [columnLabel]=\"columnLabel\"\n [filterDelay]=\"filterDelay\"\n [ngModel]=\"currentFilter?.value\" />\n </kendo-grid-filter-wrapper-cell>\n "
12533
+ template: "\n <kendo-grid-filter-wrapper-cell\n [column]=\"column\"\n [filter]=\"filter\"\n [operators]=\"operators\"\n [defaultOperator]=\"operator\"\n [showOperators]=\"showOperators\">\n <input\n kendoTextBox\n kendoGridFocusable\n kendoFilterInput\n [columnLabel]=\"columnLabel\"\n [filterDelay]=\"filterDelay\"\n [ngModel]=\"currentFilter?.value\" />\n </kendo-grid-filter-wrapper-cell>\n "
12417
12534
  }),
12418
12535
  __metadata("design:paramtypes", [FilterService,
12419
12536
  LocalizationService])
@@ -12531,7 +12648,7 @@ var FilterCellOperatorsComponent = /** @class */ (function () {
12531
12648
  FilterCellOperatorsComponent = __decorate([
12532
12649
  Component({
12533
12650
  selector: 'kendo-grid-filter-cell-operators',
12534
- template: "\n <kendo-dropdownlist\n #dropdown\n *ngIf=\"showOperators\"\n kendoGridFocusable\n [data]=\"operators\"\n class=\"k-dropdown-operator\"\n (valueChange)=\"onChange($event)\"\n [value]=\"value\"\n iconClass=\"k-i-filter\"\n [valuePrimitive]=\"true\"\n textField=\"text\"\n [popupSettings]=\"{ width: 'auto' }\"\n valueField=\"value\"\n (keydown)=\"dropdownKeydown($event)\">\n </kendo-dropdownlist>\n <button type=\"button\"\n kendoGridFocusable\n [ngClass]=\"{'k-clear-button-visible': showButton}\"\n class=\"k-button k-button-icon\"\n [title]=\"clearText\"\n (click)=\"clearClick()\"\n (keydown)=\"clearKeydown($event)\">\n <span class=\"k-icon k-i-filter-clear\"></span>\n </button>\n "
12651
+ template: "\n <kendo-dropdownlist\n #dropdown\n *ngIf=\"showOperators\"\n kendoGridFocusable\n [data]=\"operators\"\n class=\"k-dropdown-operator\"\n (valueChange)=\"onChange($event)\"\n [value]=\"value\"\n iconClass=\"k-i-filter\"\n [valuePrimitive]=\"true\"\n textField=\"text\"\n [popupSettings]=\"{ width: 'auto' }\"\n valueField=\"value\"\n (keydown)=\"dropdownKeydown($event)\">\n </kendo-dropdownlist>\n <button type=\"button\"\n kendoGridFocusable\n *ngIf=\"showButton\"\n class=\"k-button k-button-solid-base k-button-solid k-button-md k-rounded-md k-button-rectangle k-icon-button\"\n [title]=\"clearText\"\n (click)=\"clearClick()\"\n (keydown)=\"clearKeydown($event)\">\n <span class=\"k-icon k-button-icon k-i-filter-clear\"></span>\n </button>\n "
12535
12652
  }),
12536
12653
  __metadata("design:paramtypes", [LocalizationService])
12537
12654
  ], FilterCellOperatorsComponent);
@@ -14651,7 +14768,6 @@ var PagerComponent = /** @class */ (function () {
14651
14768
  this.pageChange = new EventEmitter();
14652
14769
  this.pagerWrapClass = true;
14653
14770
  this.gridPagerClass = true;
14654
- this.widgetClass = true;
14655
14771
  this.settings = normalize({});
14656
14772
  this.subscriptions = new Subscription();
14657
14773
  this._templateContext = {};
@@ -14898,10 +15014,6 @@ var PagerComponent = /** @class */ (function () {
14898
15014
  HostBinding('class.k-grid-pager'),
14899
15015
  __metadata("design:type", Boolean)
14900
15016
  ], PagerComponent.prototype, "gridPagerClass", void 0);
14901
- __decorate([
14902
- HostBinding('class.k-widget'),
14903
- __metadata("design:type", Boolean)
14904
- ], PagerComponent.prototype, "widgetClass", void 0);
14905
15017
  __decorate([
14906
15018
  HostBinding('class.k-state-focused'),
14907
15019
  __metadata("design:type", Boolean),
@@ -15263,7 +15375,7 @@ var PagerNumericButtonsComponent = /** @class */ (function (_super) {
15263
15375
  Component({
15264
15376
  changeDetection: ChangeDetectionStrategy.OnPush,
15265
15377
  selector: 'kendo-pager-numeric-buttons',
15266
- template: "\n <select\n class=\"k-dropdown k-pager-nav\"\n kendoGridFocusable\n tabindex=\"0\"\n [value]=\"(currentPage).toString()\"\n (change)=\"onSelectChange($event)\">\n <option *ngIf=\"start > 1\"\n class=\"k-link\"\n value=\"previousButtons\"\n [attr.aria-label]=\"pageLabel(start - 1)\">...\n </option>\n <option *ngFor=\"let num of buttons\"\n [value]=\"num.toString()\"\n [attr.aria-label]=\"pageLabel(num)\"\n [attr.aria-current]=\"currentPage == num ? 'page' : undefined\"\n [ngClass]=\"{'k-link': true, 'k-state-selected':currentPage == num}\">\n {{num}}\n </option>\n <option *ngIf=\"end < totalPages\"\n value=\"nextButtons\"\n class=\"k-link\"\n [attr.aria-label]=\"pageLabel(end + 1)\">...\n </option>\n </select>\n <ul [ngClass]=\"{'k-pager-numbers': true, 'k-reset': true}\">\n <li *ngIf=\"start > 1\">\n <span\n kendoGridFocusable\n tabindex=\"0\"\n class=\"k-link k-pager-nav\"\n [attr.aria-label]=\"pageLabel(start - 1)\"\n (click)=\"changePage(start - 2)\"\n (keydown.enter)=\"changePage(start - 2)\">...</span>\n </li>\n <li *ngFor=\"let num of buttons\">\n <span\n kendoGridFocusable\n tabindex=\"0\"\n [attr.aria-label]=\"pageLabel(num)\"\n [ngClass]=\"{'k-link': true, 'k-state-selected':currentPage == num, 'k-pager-nav': true}\"\n (click)=\"changePage(num - 1)\"\n (keydown.enter)=\"changePage(num - 1)\">\n {{num}}\n </span>\n </li>\n <li *ngIf=\"end < totalPages\">\n <span\n kendoGridFocusable\n tabindex=\"0\"\n class=\"k-link k-pager-nav\"\n [attr.aria-label]=\"pageLabel(end + 1)\"\n (click)=\"changePage(end)\"\n (keydown.enter)=\"changePage(end)\">...</span>\n </li>\n </ul>\n "
15378
+ template: "\n <select\n class=\"k-dropdownlist k-pager-nav\"\n kendoGridFocusable\n tabindex=\"0\"\n [value]=\"(currentPage).toString()\"\n (change)=\"onSelectChange($event)\">\n <option *ngIf=\"start > 1\"\n class=\"k-link\"\n value=\"previousButtons\"\n [attr.aria-label]=\"pageLabel(start - 1)\">...\n </option>\n <option *ngFor=\"let num of buttons\"\n [value]=\"num.toString()\"\n [attr.aria-label]=\"pageLabel(num)\"\n [attr.aria-current]=\"currentPage == num ? 'page' : undefined\"\n [ngClass]=\"{'k-link': true, 'k-state-selected':currentPage == num}\">\n {{num}}\n </option>\n <option *ngIf=\"end < totalPages\"\n value=\"nextButtons\"\n class=\"k-link\"\n [attr.aria-label]=\"pageLabel(end + 1)\">...\n </option>\n </select>\n <ul [ngClass]=\"{'k-pager-numbers': true, 'k-reset': true}\">\n <li *ngIf=\"start > 1\">\n <span\n kendoGridFocusable\n tabindex=\"0\"\n class=\"k-link k-pager-nav\"\n [attr.aria-label]=\"pageLabel(start - 1)\"\n (click)=\"changePage(start - 2)\"\n (keydown.enter)=\"changePage(start - 2)\">...</span>\n </li>\n <li *ngFor=\"let num of buttons\">\n <span\n kendoGridFocusable\n tabindex=\"0\"\n [attr.aria-label]=\"pageLabel(num)\"\n [ngClass]=\"{'k-link': true, 'k-state-selected':currentPage == num, 'k-pager-nav': true}\"\n (click)=\"changePage(num - 1)\"\n (keydown.enter)=\"changePage(num - 1)\">\n {{num}}\n </span>\n </li>\n <li *ngIf=\"end < totalPages\">\n <span\n kendoGridFocusable\n tabindex=\"0\"\n class=\"k-link k-pager-nav\"\n [attr.aria-label]=\"pageLabel(end + 1)\"\n (click)=\"changePage(end)\"\n (keydown.enter)=\"changePage(end)\">...</span>\n </li>\n </ul>\n "
15267
15379
  }),
15268
15380
  __metadata("design:paramtypes", [LocalizationService,
15269
15381
  ChangeDetectorRef,
@@ -16202,7 +16314,7 @@ var GroupIndicatorComponent = /** @class */ (function () {
16202
16314
  Component({
16203
16315
  changeDetection: ChangeDetectionStrategy.OnPush,
16204
16316
  selector: '[kendoGroupIndicator]',
16205
- template: "\n <a href=\"#\" class=\"k-link\" tabindex=\"-1\" (click)=\"toggleDirection()\">\n <span class=\"k-icon\"\n [class.k-i-sort-asc-sm]=\"dir === 'asc'\"\n [class.k-i-sort-desc-sm]=\"dir === 'desc'\"></span>\n {{groupTitle}}</a>\n <a class=\"k-button k-button-icon k-bare\" tabindex=\"-1\" (click)=\"removeDescriptor()\">\n <span class=\"k-icon k-i-group-delete\"></span>\n </a>\n "
16317
+ template: "\n <a href=\"#\" class=\"k-link\" tabindex=\"-1\" (click)=\"toggleDirection()\">\n <span class=\"k-icon\"\n [class.k-i-sort-asc-sm]=\"dir === 'asc'\"\n [class.k-i-sort-desc-sm]=\"dir === 'desc'\"></span>\n {{groupTitle}}</a>\n <a class=\"k-button k-button-flat-base k-button-flat k-icon-button k-button-md k-rounded-md k-button-rectangle k-icon-button\" tabindex=\"-1\" (click)=\"removeDescriptor()\">\n <span class=\"k-button-icon k-icon k-i-group-delete\"></span>\n </a>\n "
16206
16318
  })
16207
16319
  ], GroupIndicatorComponent);
16208
16320
  return GroupIndicatorComponent;
@@ -16217,9 +16329,9 @@ var preventOnDblClick = function (release) { return function (mouseDown) {
16217
16329
  return of(mouseDown).pipe(delay(150), takeUntil(release));
16218
16330
  }; };
16219
16331
  var hasClass = function (className) { return function (el) { return new RegExp("(^| )" + className + "( |$)").test(el.className); }; };
16220
- var isDeleteButton = or(hasClass("k-i-group-delete"), hasClass("k-button-icon"));
16221
- var isSortIcon = or(hasClass("k-i-sort-asc-sm"), hasClass("k-i-sort-desc-sm"));
16222
- var skipButtons = and(not(isDeleteButton), not(isSortIcon), not(isFocusableWithTabKey), not(matchesNodeName("label")));
16332
+ var isDeleteButton = or(hasClass('k-i-group-delete'), hasClass('k-icon-button'));
16333
+ var isSortIcon = or(hasClass('k-i-sort-asc-sm'), hasClass('k-i-sort-desc-sm'));
16334
+ var skipButtons = and(not(isDeleteButton), not(isSortIcon), not(isFocusableWithTabKey), not(matchesNodeName('label')));
16223
16335
  var elementUnderCursor = function (_a) {
16224
16336
  var clientX = _a.clientX, clientY = _a.clientY;
16225
16337
  return document.elementFromPoint(clientX, clientY);
@@ -17344,7 +17456,7 @@ var HeaderComponent = /** @class */ (function () {
17344
17456
  Component({
17345
17457
  selector: '[kendoGridHeader]',
17346
17458
  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 "],
17347
- 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\"\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 "
17459
+ 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 "
17348
17460
  }),
17349
17461
  __metadata("design:paramtypes", [SinglePopupService,
17350
17462
  DragHintService,
@@ -17913,7 +18025,7 @@ var FilterMenuContainerComponent = /** @class */ (function () {
17913
18025
  MenuTabbingService
17914
18026
  ],
17915
18027
  selector: 'kendo-grid-filter-menu-container',
17916
- template: "\n <form (submit)=\"submit()\" (reset)=\"reset()\"\n class=\"k-filter-menu k-group k-reset k-state-border-up\">\n <div class=\"k-filter-menu-container\">\n <ng-container [ngSwitch]=\"hasTemplate\">\n <ng-container *ngSwitchCase=\"false\">\n <ng-container\n kendoFilterMenuHost\n [filterService]=\"childService\"\n [column]=\"column\"\n [filter]=\"childFilter\"\n [menuTabbingService]=\"menuTabbingService\">\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"true\">\n <ng-template\n *ngIf=\"column.filterMenuTemplateRef\"\n [ngTemplateOutlet]=\"column.filterMenuTemplateRef\"\n [ngTemplateOutletContext]=\"templateContext\"\n >\n </ng-template>\n </ng-container>\n </ng-container>\n <div [ngClass]=\"actionsClass\">\n <button\n #resetButton\n type=\"reset\"\n class=\"k-button\"\n (keydown.tab)=\"onTab($event, 'reset')\">{{clearText}}</button>\n <button #filterButton\n type=\"submit\"\n class=\"k-button k-primary\"\n [disabled]=\"disabled\"\n (keydown.tab)=\"onTab($event, 'filter')\">{{filterText}}</button>\n </div>\n </div>\n </form>\n "
18028
+ template: "\n <form (submit)=\"submit()\" (reset)=\"reset()\"\n class=\"k-filter-menu k-group k-reset k-state-border-up\">\n <div class=\"k-filter-menu-container\">\n <ng-container [ngSwitch]=\"hasTemplate\">\n <ng-container *ngSwitchCase=\"false\">\n <ng-container\n kendoFilterMenuHost\n [filterService]=\"childService\"\n [column]=\"column\"\n [filter]=\"childFilter\"\n [menuTabbingService]=\"menuTabbingService\">\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"true\">\n <ng-template\n *ngIf=\"column.filterMenuTemplateRef\"\n [ngTemplateOutlet]=\"column.filterMenuTemplateRef\"\n [ngTemplateOutletContext]=\"templateContext\"\n >\n </ng-template>\n </ng-container>\n </ng-container>\n <div [ngClass]=\"actionsClass\">\n <button\n #resetButton\n type=\"reset\"\n class=\"k-button k-button-solid-base k-button-solid k-button-md k-rounded-md k-button-rectangle\"\n (keydown.tab)=\"onTab($event, 'reset')\">{{clearText}}</button>\n <button #filterButton\n type=\"submit\"\n class=\"k-button k-button-solid-primary k-button-solid k-button-md k-rounded-md k-button-rectangle\"\n [disabled]=\"disabled\"\n (keydown.tab)=\"onTab($event, 'filter')\">{{filterText}}</button>\n </div>\n </div>\n </form>\n "
17917
18029
  }),
17918
18030
  __param(0, SkipSelf()),
17919
18031
  __metadata("design:paramtypes", [FilterService,
@@ -18087,7 +18199,7 @@ var StringFilterMenuInputComponent = /** @class */ (function () {
18087
18199
  StringFilterMenuInputComponent = __decorate([
18088
18200
  Component({
18089
18201
  selector: 'kendo-grid-string-filter-menu-input',
18090
- template: "\n <kendo-grid-filter-menu-input-wrapper\n [column]=\"column\"\n [filter]=\"filter\"\n [operators]=\"operators\"\n [defaultOperator]=\"operator\"\n [currentFilter]=\"currentFilter\"\n [filterService]=\"filterService\"\n [isFirstDropDown]=\"isFirstDropDown\"\n [menuTabbingService]=\"menuTabbingService\"\n >\n <input\n class=\"k-textbox\"\n kendoFilterInput\n [columnLabel]=\"columnLabel\"\n [filterDelay]=\"0\"\n [ngModel]=\"currentFilter?.value\" />\n </kendo-grid-filter-menu-input-wrapper>\n "
18202
+ template: "\n <kendo-grid-filter-menu-input-wrapper\n [column]=\"column\"\n [filter]=\"filter\"\n [operators]=\"operators\"\n [defaultOperator]=\"operator\"\n [currentFilter]=\"currentFilter\"\n [filterService]=\"filterService\"\n [isFirstDropDown]=\"isFirstDropDown\"\n [menuTabbingService]=\"menuTabbingService\"\n >\n <input\n kendoTextBox\n kendoFilterInput\n [columnLabel]=\"columnLabel\"\n [filterDelay]=\"0\"\n [ngModel]=\"currentFilter?.value\" />\n </kendo-grid-filter-menu-input-wrapper>\n "
18091
18203
  }),
18092
18204
  __metadata("design:paramtypes", [LocalizationService])
18093
18205
  ], StringFilterMenuInputComponent);
@@ -18642,7 +18754,7 @@ var BooleanFilterMenuComponent = /** @class */ (function (_super) {
18642
18754
  BooleanFilterMenuComponent = __decorate([
18643
18755
  Component({
18644
18756
  selector: 'kendo-grid-boolean-filter-menu',
18645
- template: "\n <ul class=\"k-radio-list k-reset\">\n <li *ngFor=\"let item of items\">\n <input type=\"radio\"\n kendoFilterMenuRadioButton\n [columnLabel]=\"columnLabel\"\n #input\n [name]=\"idPrefix\"\n class=\"k-radio\"\n [checked]=\"isSelected(item.value)\"\n [attr.id]=\"radioId(item.value)\"\n (change)=\"onChange(item.value, input)\"\n (keydown.shift.tab)=\"onShiftTab($event)\"\n />\n <label class=\"k-radio-label\" [attr.for]=\"radioId(item.value)\">{{item.text}}</label>\n </li>\n </ul>\n "
18757
+ template: "\n <ul class=\"k-radio-list k-reset\">\n <li *ngFor=\"let item of items\">\n <input type=\"radio\"\n kendoFilterMenuRadioButton\n [columnLabel]=\"columnLabel\"\n #input\n [name]=\"idPrefix\"\n kendoRadioButton\n [checked]=\"isSelected(item.value)\"\n [attr.id]=\"radioId(item.value)\"\n (change)=\"onChange(item.value, input)\"\n (keydown.shift.tab)=\"onShiftTab($event)\"\n />\n <label class=\"k-radio-label\" [attr.for]=\"radioId(item.value)\">{{item.text}}</label>\n </li>\n </ul>\n "
18646
18758
  }),
18647
18759
  __metadata("design:paramtypes", [LocalizationService])
18648
18760
  ], BooleanFilterMenuComponent);
@@ -19107,7 +19219,7 @@ var ColumnListComponent = /** @class */ (function () {
19107
19219
  ColumnListComponent = __decorate([
19108
19220
  Component({
19109
19221
  selector: 'kendo-grid-columnlist',
19110
- template: "\n <div class=\"k-column-list\">\n <label *ngFor=\"let column of columns; let index = index;\" class='k-column-list-item'>\n <input class=\"k-checkbox\" type=\"checkbox\" [attr.data-index]=\"index\" [checked]=\"!column.hidden\" [disabled]=\"isDisabled(column)\" /><span class=\"k-checkbox-label\">{{ column.displayTitle }}</span>\n </label>\n </div>\n <div [ngClass]=\"actionsClass\" *ngIf=\"!autoSync\">\n <button type=\"button\" class=\"k-button\" (click)=\"cancelChanges()\">{{ resetText }}</button>\n <button #applyButton type=\"button\" (keydown.tab)=\"onTab($event)\" class=\"k-button k-primary\" (click)=\"applyChanges()\">{{ applyText }}</button>\n </div>\n "
19222
+ template: "\n <div class=\"k-column-list\">\n <label *ngFor=\"let column of columns; let index = index;\" class='k-column-list-item'>\n <input class=\"k-checkbox k-checkbox-md k-rounded-md\" type=\"checkbox\" [attr.data-index]=\"index\" [checked]=\"!column.hidden\" [disabled]=\"isDisabled(column)\" /><span class=\"k-checkbox-label\">{{ column.displayTitle }}</span>\n </label>\n </div>\n <div [ngClass]=\"actionsClass\" *ngIf=\"!autoSync\">\n <button type=\"button\" class=\"k-button k-button-solid-base k-button-solid k-button-md k-rounded-md k-button-rectangle\" (click)=\"cancelChanges()\">{{ resetText }}</button>\n <button #applyButton type=\"button\" (keydown.tab)=\"onTab($event)\" class=\"k-button k-button-solid-primary k-button-solid k-button-md k-rounded-md k-button-rectangle\" (click)=\"applyChanges()\">{{ applyText }}</button>\n </div>\n "
19111
19223
  }),
19112
19224
  __metadata("design:paramtypes", [ElementRef,
19113
19225
  NgZone,
@@ -19240,7 +19352,7 @@ var ColumnChooserComponent = /** @class */ (function () {
19240
19352
  ColumnChooserComponent = __decorate([
19241
19353
  Component({
19242
19354
  selector: 'kendo-grid-column-chooser',
19243
- template: "\n <button #anchor\n type=\"button\"\n (click)=\"toggle(anchor, template)\"\n class=\"k-button k-bare k-button-icon\"\n [attr.title]=\"localization.get('columns')\">\n <span class=\"k-icon k-i-columns\"></span>\n </button>\n <ng-template #template>\n <span class='k-column-chooser-title'>{{ localization.get('columns') }}</span>\n <kendo-grid-columnlist\n [columns]=\"columns\"\n [applyText]=\"localization.get('columnsApply')\"\n [resetText]=\"localization.get('columnsReset')\"\n [autoSync]=\"autoSync\"\n [allowHideAll]=\"allowHideAll\"\n (apply)=\"onApply($event)\"\n (columnChange)=\"onChange($event)\">\n </kendo-grid-columnlist>\n </ng-template>\n "
19355
+ template: "\n <button #anchor\n type=\"button\"\n (click)=\"toggle(anchor, template)\"\n class=\"k-button k-button-flat-base k-button-flat k-icon-button k-button-md k-rounded-md k-button-rectangle k-icon-button\"\n [attr.title]=\"localization.get('columns')\">\n <span class=\"k-button-icon k-icon k-i-columns\"></span>\n </button>\n <ng-template #template>\n <span class='k-column-chooser-title'>{{ localization.get('columns') }}</span>\n <kendo-grid-columnlist\n [columns]=\"columns\"\n [applyText]=\"localization.get('columnsApply')\"\n [resetText]=\"localization.get('columnsReset')\"\n [autoSync]=\"autoSync\"\n [allowHideAll]=\"allowHideAll\"\n (apply)=\"onApply($event)\"\n (columnChange)=\"onChange($event)\">\n </kendo-grid-columnlist>\n </ng-template>\n "
19244
19356
  }),
19245
19357
  __metadata("design:paramtypes", [LocalizationService,
19246
19358
  ColumnInfoService,
@@ -21405,7 +21517,7 @@ var CellComponent = /** @class */ (function () {
21405
21517
  CellComponent = __decorate([
21406
21518
  Component({
21407
21519
  selector: '[kendoGridCell]',
21408
- template: "\n <ng-container [ngSwitch]=\"isEdited\">\n <ng-container *ngSwitchCase=\"false\">\n <ng-container *ngIf=\"!showLoading; else loading\">\n <ng-template [ngIf]=\"column.templateRef\"\n [ngTemplateOutlet]=\"column.templateRef\"\n [ngTemplateOutletContext]=\"templateContext\">\n </ng-template>\n <ng-template [ngIf]=\"isSpanColumn\">\n <ng-template ngFor let-childColumn [ngForOf]=\"childColumns\">\n {{ dataItem | valueOf: childColumn.field: childColumn.format}}\n </ng-template>\n </ng-template>\n <ng-template [ngIf]=\"isBoundColumn\">{{ dataItem | valueOf: column.field: column.format}}</ng-template>\n <ng-template [ngIf]=\"isCheckboxColumn && !isNew\">\n <input\n class=\"k-checkbox\"\n [kendoGridSelectionCheckbox]=\"rowIndex\"\n [attr.id]=\"selectionCheckboxId\"\n [attr.aria-label]=\"selectionCheckboxLabel\" />\n </ng-template>\n </ng-container>\n <ng-template #loading>\n <ng-template\n *ngIf=\"loadingTemplate\"\n [ngTemplateOutlet]=\"loadingTemplate\"\n [ngTemplateOutletContext]=\"{$implicit: column}\">\n </ng-template>\n <div *ngIf=\"!loadingTemplate\" class=\"k-skeleton-text k-skeleton\"></div>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"true\">\n <ng-template\n *ngIf=\"column.editTemplateRef\"\n [ngTemplateOutlet]=\"column.editTemplateRef\"\n [ngTemplateOutletContext]=\"editTemplateContext\">\n </ng-template>\n <ng-container [ngSwitch]=\"column.editor\" *ngIf=\"!column.editTemplateRef\">\n <kendo-numerictextbox\n *ngSwitchCase=\"'numeric'\"\n [format]=\"format\"\n [formControl]=\"formGroup.get(column.field)\"\n kendoGridFocusable\n ></kendo-numerictextbox>\n\n <kendo-datepicker\n *ngSwitchCase=\"'date'\"\n [format]=\"format\"\n [formControl]=\"formGroup.get(column.field)\"\n kendoGridFocusable\n ></kendo-datepicker>\n\n <input\n *ngSwitchCase=\"'boolean'\"\n type=\"checkbox\"\n class=\"k-checkbox\"\n [formControl]=\"formGroup.get(column.field)\"\n kendoGridFocusable\n />\n\n <input\n *ngSwitchDefault\n type=\"text\"\n class=\"k-textbox\"\n [formControl]=\"formGroup.get(column.field)\"\n kendoGridFocusable\n />\n </ng-container>\n </ng-container>\n </ng-container>\n "
21520
+ template: "\n <ng-container [ngSwitch]=\"isEdited\">\n <ng-container *ngSwitchCase=\"false\">\n <ng-container *ngIf=\"!showLoading; else loading\">\n <ng-template [ngIf]=\"column.templateRef\"\n [ngTemplateOutlet]=\"column.templateRef\"\n [ngTemplateOutletContext]=\"templateContext\">\n </ng-template>\n <ng-template [ngIf]=\"isSpanColumn\">\n <ng-template ngFor let-childColumn [ngForOf]=\"childColumns\">\n {{ dataItem | valueOf: childColumn.field: childColumn.format}}\n </ng-template>\n </ng-template>\n <ng-template [ngIf]=\"isBoundColumn\">{{ dataItem | valueOf: column.field: column.format}}</ng-template>\n <ng-template [ngIf]=\"isCheckboxColumn && !isNew\">\n <input\n class=\"k-checkbox k-checkbox-md k-rounded-md\"\n [kendoGridSelectionCheckbox]=\"rowIndex\"\n [attr.id]=\"selectionCheckboxId\"\n [attr.aria-label]=\"selectionCheckboxLabel\" />\n </ng-template>\n </ng-container>\n <ng-template #loading>\n <ng-template\n *ngIf=\"loadingTemplate\"\n [ngTemplateOutlet]=\"loadingTemplate\"\n [ngTemplateOutletContext]=\"{$implicit: column}\">\n </ng-template>\n <div *ngIf=\"!loadingTemplate\" class=\"k-skeleton-text k-skeleton\"></div>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"true\">\n <ng-template\n *ngIf=\"column.editTemplateRef\"\n [ngTemplateOutlet]=\"column.editTemplateRef\"\n [ngTemplateOutletContext]=\"editTemplateContext\">\n </ng-template>\n <ng-container [ngSwitch]=\"column.editor\" *ngIf=\"!column.editTemplateRef\">\n <kendo-numerictextbox\n *ngSwitchCase=\"'numeric'\"\n [format]=\"format\"\n [formControl]=\"formGroup.get(column.field)\"\n kendoGridFocusable\n ></kendo-numerictextbox>\n\n <kendo-datepicker\n *ngSwitchCase=\"'date'\"\n [format]=\"format\"\n [formControl]=\"formGroup.get(column.field)\"\n kendoGridFocusable\n ></kendo-datepicker>\n\n <input\n *ngSwitchCase=\"'boolean'\"\n type=\"checkbox\"\n class=\"k-checkbox k-checkbox-md k-rounded-md\"\n [formControl]=\"formGroup.get(column.field)\"\n kendoGridFocusable\n />\n\n <input\n *ngSwitchDefault\n type=\"text\"\n class=\"k-textbox k-input k-rounded-md\"\n [formControl]=\"formGroup.get(column.field)\"\n kendoGridFocusable\n />\n </ng-container>\n </ng-container>\n </ng-container>\n "
21409
21521
  }),
21410
21522
  __param(3, Optional()), __param(3, Inject(CELL_CONTEXT)),
21411
21523
  __metadata("design:paramtypes", [EditService,
@@ -22974,7 +23086,7 @@ var appendNodes = function (element, nodes) {
22974
23086
  };
22975
23087
  var wrapTable = function (table) {
22976
23088
  var wrapper = document.createElement('div');
22977
- wrapper.className = 'k-widget k-grid';
23089
+ wrapper.className = 'k-grid';
22978
23090
  wrapper.appendChild(table);
22979
23091
  return wrapper;
22980
23092
  };