@progress/kendo-angular-grid 19.0.0-develop.2 → 19.0.0-develop.21

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 (131) hide show
  1. package/adaptiveness/adaptive-mode.d.ts +12 -0
  2. package/adaptiveness/adaptive-renderer.component.d.ts +84 -0
  3. package/column-menu/column-chooser.component.d.ts +4 -0
  4. package/column-menu/column-list.component.d.ts +9 -3
  5. package/column-menu/column-menu-item.component.d.ts +38 -2
  6. package/column-menu/column-menu-item.directive.d.ts +5 -2
  7. package/column-menu/column-menu.component.d.ts +4 -2
  8. package/columns/column-base.d.ts +5 -0
  9. package/columns/span-column.component.d.ts +2 -2
  10. package/common/adaptiveness.service.d.ts +50 -0
  11. package/common/single-popup.service.d.ts +3 -1
  12. package/common/toolbar-tool-base.directive.d.ts +26 -0
  13. package/directives.d.ts +12 -5
  14. package/dragdrop/drag-hint.service.d.ts +3 -2
  15. package/editing/add-command-tool.directive.d.ts +7 -6
  16. package/editing/cancel-command-tool.directive.d.ts +38 -0
  17. package/editing/edit-command-tool.directive.d.ts +38 -0
  18. package/editing/edit.service.d.ts +1 -1
  19. package/editing/remove-command-tool.directive.d.ts +39 -0
  20. package/editing/save-command-tool.directive.d.ts +38 -0
  21. package/editing/toolbar-editing-tool-base.directive.d.ts +29 -0
  22. package/editing-directives/editing-directive-base.d.ts +4 -1
  23. package/editing-directives/external-editing.directive.d.ts +3 -1
  24. package/esm2022/adaptiveness/adaptive-mode.mjs +5 -0
  25. package/esm2022/adaptiveness/adaptive-renderer.component.mjs +1106 -0
  26. package/esm2022/column-menu/column-chooser.component.mjs +13 -11
  27. package/esm2022/column-menu/column-list.component.mjs +43 -8
  28. package/esm2022/column-menu/column-menu-autosize-all.component.mjs +1 -1
  29. package/esm2022/column-menu/column-menu-autosize.component.mjs +1 -1
  30. package/esm2022/column-menu/column-menu-chooser.component.mjs +1 -1
  31. package/esm2022/column-menu/column-menu-container.component.mjs +1 -1
  32. package/esm2022/column-menu/column-menu-filter.component.mjs +1 -1
  33. package/esm2022/column-menu/column-menu-item.component.mjs +106 -11
  34. package/esm2022/column-menu/column-menu-item.directive.mjs +14 -5
  35. package/esm2022/column-menu/column-menu-lock.component.mjs +1 -1
  36. package/esm2022/column-menu/column-menu-position.component.mjs +1 -1
  37. package/esm2022/column-menu/column-menu-sort.component.mjs +1 -1
  38. package/esm2022/column-menu/column-menu-stick.component.mjs +1 -1
  39. package/esm2022/column-menu/column-menu.component.mjs +68 -44
  40. package/esm2022/column-resizing/column-handle.directive.mjs +2 -2
  41. package/esm2022/columns/column-base.mjs +9 -0
  42. package/esm2022/columns/columns-container.mjs +1 -1
  43. package/esm2022/columns/span-column.component.mjs +9 -9
  44. package/esm2022/common/adaptiveness.service.mjs +72 -0
  45. package/esm2022/common/single-popup.service.mjs +9 -3
  46. package/esm2022/common/toolbar-tool-base.directive.mjs +81 -0
  47. package/esm2022/directives.mjs +18 -3
  48. package/esm2022/dragdrop/drag-hint.service.mjs +7 -4
  49. package/esm2022/editing/add-command-tool.directive.mjs +12 -15
  50. package/esm2022/editing/cancel-command-tool.directive.mjs +64 -0
  51. package/esm2022/editing/edit-command-tool.directive.mjs +59 -0
  52. package/esm2022/editing/form/form-formfield.component.mjs +1 -1
  53. package/esm2022/editing/remove-command-tool.directive.mjs +60 -0
  54. package/esm2022/editing/remove-command.directive.mjs +1 -0
  55. package/esm2022/editing/save-command-tool.directive.mjs +64 -0
  56. package/esm2022/editing/toolbar-editing-tool-base.directive.mjs +89 -0
  57. package/esm2022/editing-directives/editing-directive-base.mjs +5 -2
  58. package/esm2022/editing-directives/external-editing.directive.mjs +28 -14
  59. package/esm2022/excel/excel-command-tool.directive.mjs +12 -17
  60. package/esm2022/filtering/cell/autocomplete-filter-cell.component.mjs +1 -1
  61. package/esm2022/filtering/cell/boolean-filter-cell.component.mjs +1 -1
  62. package/esm2022/filtering/cell/date-filter-cell.component.mjs +1 -1
  63. package/esm2022/filtering/cell/filter-cell-operators.component.mjs +1 -1
  64. package/esm2022/filtering/filter-input.directive.mjs +14 -2
  65. package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +2 -2
  66. package/esm2022/filtering/menu/date-filter-menu-input.component.mjs +3 -1
  67. package/esm2022/filtering/menu/date-filter-menu.component.mjs +5 -1
  68. package/esm2022/filtering/menu/filter-menu-container.component.mjs +21 -10
  69. package/esm2022/filtering/menu/filter-menu-input-wrapper.component.mjs +25 -5
  70. package/esm2022/filtering/menu/filter-menu.component.mjs +44 -29
  71. package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +5 -1
  72. package/esm2022/filtering/menu/string-filter-menu.component.mjs +5 -1
  73. package/esm2022/grid.component.mjs +294 -74
  74. package/esm2022/grid.module.mjs +114 -101
  75. package/esm2022/index.mjs +10 -1
  76. package/esm2022/localization/messages.mjs +104 -2
  77. package/esm2022/navigation/navigation.service.mjs +1 -1
  78. package/esm2022/navigation/toolbar-tool-name.mjs +17 -0
  79. package/esm2022/package-metadata.mjs +2 -2
  80. package/esm2022/pdf/pdf-command-tool.directive.mjs +12 -15
  81. package/esm2022/rendering/cell.component.mjs +4 -4
  82. package/esm2022/rendering/header/header.component.mjs +1 -1
  83. package/esm2022/rendering/list.component.mjs +1 -1
  84. package/esm2022/rendering/table-body.component.mjs +11 -3
  85. package/esm2022/rendering/toolbar/tools/column-chooser-tool.directive.mjs +201 -0
  86. package/esm2022/rendering/toolbar/tools/filter-command-tool.directive.mjs +49 -33
  87. package/esm2022/rendering/toolbar/tools/filter-tool-wrapper.component.mjs +28 -8
  88. package/esm2022/rendering/toolbar/tools/filter-toolbar-tool.component.mjs +26 -4
  89. package/esm2022/rendering/toolbar/tools/sort-command-tool.directive.mjs +33 -17
  90. package/esm2022/rendering/toolbar/tools/sort-toolbar-tool.component.mjs +24 -8
  91. package/esm2022/row-reordering/row-reorder.service.mjs +15 -0
  92. package/esm2022/selection/selection.service.mjs +11 -0
  93. package/esm2022/state-management/grid-state.models.mjs +26 -0
  94. package/esm2022/state-management/redo-command-tool.mjs +66 -0
  95. package/esm2022/state-management/undo-command-tool.mjs +66 -0
  96. package/esm2022/state-management/undo-redo.directive.mjs +178 -0
  97. package/esm2022/state-management/undo-redo.service.mjs +22 -0
  98. package/esm2022/state-management/undo-redo.stack.mjs +232 -0
  99. package/esm2022/utils.mjs +13 -13
  100. package/excel/excel-command-tool.directive.d.ts +5 -5
  101. package/fesm2022/progress-kendo-angular-grid.mjs +4074 -1372
  102. package/filtering/filter-input.directive.d.ts +1 -0
  103. package/filtering/menu/date-filter-menu-input.component.d.ts +1 -1
  104. package/filtering/menu/filter-menu-container.component.d.ts +14 -4
  105. package/filtering/menu/filter-menu-input-wrapper.component.d.ts +8 -3
  106. package/filtering/menu/filter-menu.component.d.ts +6 -3
  107. package/grid.component.d.ts +73 -33
  108. package/grid.module.d.ts +107 -100
  109. package/index.d.ts +9 -1
  110. package/localization/messages.d.ts +70 -2
  111. package/navigation/toolbar-tool-name.d.ts +17 -0
  112. package/package.json +21 -20
  113. package/pdf/pdf-command-tool.directive.d.ts +6 -5
  114. package/rendering/cell.component.d.ts +1 -1
  115. package/{column-menu → rendering/toolbar/tools}/column-chooser-tool.directive.d.ts +17 -6
  116. package/rendering/toolbar/tools/filter-command-tool.directive.d.ts +4 -1
  117. package/rendering/toolbar/tools/filter-tool-wrapper.component.d.ts +6 -5
  118. package/rendering/toolbar/tools/filter-toolbar-tool.component.d.ts +4 -1
  119. package/rendering/toolbar/tools/sort-command-tool.directive.d.ts +4 -1
  120. package/rendering/toolbar/tools/sort-toolbar-tool.component.d.ts +5 -1
  121. package/row-reordering/row-reorder.service.d.ts +2 -0
  122. package/schematics/ngAdd/index.js +4 -4
  123. package/selection/selection.service.d.ts +1 -0
  124. package/state-management/grid-state.models.d.ts +58 -0
  125. package/state-management/redo-command-tool.d.ts +38 -0
  126. package/state-management/undo-command-tool.d.ts +38 -0
  127. package/state-management/undo-redo.directive.d.ts +51 -0
  128. package/state-management/undo-redo.service.d.ts +19 -0
  129. package/state-management/undo-redo.stack.d.ts +104 -0
  130. package/utils.d.ts +11 -5
  131. package/esm2022/column-menu/column-chooser-tool.directive.mjs +0 -172
@@ -70,6 +70,10 @@ export class ColumnChooserComponent {
70
70
  ngOnDestroy() {
71
71
  this.close();
72
72
  }
73
+ /**
74
+ * @hidden
75
+ */
76
+ messageFor = token => this.ctx.localization.get(token);
73
77
  /**
74
78
  * @hidden
75
79
  */
@@ -154,28 +158,27 @@ export class ColumnChooserComponent {
154
158
  type="button"
155
159
  (click)="toggle(anchor, template)"
156
160
  fillMode="flat"
157
- [attr.title]="ctx.localization.get('columns')"
161
+ [attr.title]="messageFor('columns')"
158
162
  icon="columns"
159
163
  [svgIcon]="columnsIcon"
160
164
  [attr.aria-haspopup]="'dialog'"
161
165
  [attr.aria-expanded]="!!(popupRef)"
162
166
  [attr.aria-controls]="!!(popupRef) ? popupId : undefined"></button>
163
167
  <ng-template #template>
164
- <span class='k-column-chooser-title'>{{ ctx.localization.get('columns') }}</span>
165
168
  <kendo-grid-columnlist
166
169
  #columnList
167
170
  [columns]="columns"
168
- [ariaLabel]="ctx.localization.get('columns')"
171
+ [ariaLabel]="messageFor('columns')"
169
172
  [isLast]="true"
170
- [applyText]="ctx.localization.get('columnsApply')"
171
- [resetText]="ctx.localization.get('columnsReset')"
173
+ [applyText]="messageFor('columnsApply')"
174
+ [resetText]="messageFor('columnsReset')"
172
175
  [autoSync]="autoSync"
173
176
  [allowHideAll]="allowHideAll"
174
177
  (apply)="onApply($event)"
175
178
  (columnChange)="onChange($event)">
176
179
  </kendo-grid-columnlist>
177
180
  </ng-template>
178
- `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: ColumnListComponent, selector: "kendo-grid-columnlist", inputs: ["columns", "autoSync", "ariaLabel", "allowHideAll", "applyText", "resetText", "actionsClass", "isLast", "isExpanded", "service"], outputs: ["reset", "apply", "columnChange"] }] });
181
+ `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: ColumnListComponent, selector: "kendo-grid-columnlist", inputs: ["columns", "showActions", "autoSync", "ariaLabel", "allowHideAll", "applyText", "resetText", "actionsClass", "isLast", "isExpanded", "service"], outputs: ["reset", "apply", "columnChange"] }] });
179
182
  }
180
183
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnChooserComponent, decorators: [{
181
184
  type: Component,
@@ -187,21 +190,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
187
190
  type="button"
188
191
  (click)="toggle(anchor, template)"
189
192
  fillMode="flat"
190
- [attr.title]="ctx.localization.get('columns')"
193
+ [attr.title]="messageFor('columns')"
191
194
  icon="columns"
192
195
  [svgIcon]="columnsIcon"
193
196
  [attr.aria-haspopup]="'dialog'"
194
197
  [attr.aria-expanded]="!!(popupRef)"
195
198
  [attr.aria-controls]="!!(popupRef) ? popupId : undefined"></button>
196
199
  <ng-template #template>
197
- <span class='k-column-chooser-title'>{{ ctx.localization.get('columns') }}</span>
198
200
  <kendo-grid-columnlist
199
201
  #columnList
200
202
  [columns]="columns"
201
- [ariaLabel]="ctx.localization.get('columns')"
203
+ [ariaLabel]="messageFor('columns')"
202
204
  [isLast]="true"
203
- [applyText]="ctx.localization.get('columnsApply')"
204
- [resetText]="ctx.localization.get('columnsReset')"
205
+ [applyText]="messageFor('columnsApply')"
206
+ [resetText]="messageFor('columnsReset')"
205
207
  [autoSync]="autoSync"
206
208
  [allowHideAll]="allowHideAll"
207
209
  (apply)="onApply($event)"
@@ -2,7 +2,7 @@
2
2
  * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { Component, HostBinding, Input, ElementRef, NgZone, Renderer2, Output, EventEmitter, ViewChild, ViewChildren, QueryList } from '@angular/core';
5
+ import { Component, HostBinding, Input, ElementRef, NgZone, Renderer2, Output, EventEmitter, ViewChild, ViewChildren, QueryList, Optional } from '@angular/core';
6
6
  import { ColumnMenuService } from './column-menu.service';
7
7
  import { ColumnListKeyboardNavigation } from './column-list-kb-nav.service';
8
8
  import { ColumnMenuChooserItemCheckedDirective } from './column-chooser-item-checked.directive';
@@ -13,8 +13,12 @@ import { CheckBoxComponent } from '@progress/kendo-angular-inputs';
13
13
  import { take } from 'rxjs/operators';
14
14
  import { arrowRotateCcwIcon, checkIcon } from '@progress/kendo-svg-icons';
15
15
  import { ButtonDirective } from '@progress/kendo-angular-buttons';
16
+ import { ContextService } from '../common/provider.service';
17
+ import { AdaptiveGridService } from '../common/adaptiveness.service';
16
18
  import * as i0 from "@angular/core";
17
19
  import * as i1 from "./column-list-kb-nav.service";
20
+ import * as i2 from "../common/adaptiveness.service";
21
+ import * as i3 from "../common/provider.service";
18
22
  /**
19
23
  * @hidden
20
24
  */
@@ -23,9 +27,12 @@ export class ColumnListComponent {
23
27
  ngZone;
24
28
  renderer;
25
29
  listNavigationService;
30
+ adaptiveGridService;
31
+ ctx;
26
32
  checkIcon = checkIcon;
27
33
  arrowRotateCcwIcon = arrowRotateCcwIcon;
28
34
  className = true;
35
+ listSize = true;
29
36
  reset = new EventEmitter();
30
37
  apply = new EventEmitter();
31
38
  columnChange = new EventEmitter();
@@ -37,6 +44,7 @@ export class ColumnListComponent {
37
44
  get columns() {
38
45
  return this._columns;
39
46
  }
47
+ showActions = true;
40
48
  autoSync = true;
41
49
  ariaLabel;
42
50
  allowHideAll = false;
@@ -58,11 +66,13 @@ export class ColumnListComponent {
58
66
  _columns;
59
67
  allColumns;
60
68
  domSubscriptions = new Subscription();
61
- constructor(element, ngZone, renderer, listNavigationService) {
69
+ constructor(element, ngZone, renderer, listNavigationService, adaptiveGridService, ctx) {
62
70
  this.element = element;
63
71
  this.ngZone = ngZone;
64
72
  this.renderer = renderer;
65
73
  this.listNavigationService = listNavigationService;
74
+ this.adaptiveGridService = adaptiveGridService;
75
+ this.ctx = ctx;
66
76
  }
67
77
  ngOnInit() {
68
78
  if (!this.element) {
@@ -70,6 +80,7 @@ export class ColumnListComponent {
70
80
  }
71
81
  this.ngZone.runOutsideAngular(() => {
72
82
  this.domSubscriptions.add(this.renderer.listen(this.element.nativeElement, 'click', (e) => {
83
+ e.stopImmediatePropagation();
73
84
  this.ngZone.onStable.pipe(take(1)).subscribe(() => {
74
85
  this.handleCheckBoxClick(e);
75
86
  });
@@ -80,9 +91,16 @@ export class ColumnListComponent {
80
91
  ngAfterViewInit() {
81
92
  this.ngZone.onStable.pipe(take(1)).subscribe(() => {
82
93
  this.listNavigationService.items = this.options.toArray();
83
- this.listNavigationService.toggle(0, true);
94
+ if (!this.ctx) {
95
+ this.listNavigationService.toggle(0, true);
96
+ }
84
97
  this.updateDisabled();
85
98
  });
99
+ if (this.ctx?.grid?.isActionSheetExpanded) {
100
+ this.domSubscriptions.add(this.adaptiveGridService.animationEnd.subscribe(() => {
101
+ this.listNavigationService.toggle(0, true);
102
+ }));
103
+ }
86
104
  }
87
105
  ngOnChanges(changes) {
88
106
  if (!this.service) {
@@ -250,8 +268,8 @@ export class ColumnListComponent {
250
268
  }
251
269
  }
252
270
  };
253
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnListComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.ColumnListKeyboardNavigation }], target: i0.ɵɵFactoryTarget.Component });
254
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnListComponent, isStandalone: true, selector: "kendo-grid-columnlist", inputs: { columns: "columns", autoSync: "autoSync", ariaLabel: "ariaLabel", allowHideAll: "allowHideAll", applyText: "applyText", resetText: "resetText", actionsClass: "actionsClass", isLast: "isLast", isExpanded: "isExpanded", service: "service" }, outputs: { reset: "reset", apply: "apply", columnChange: "columnChange" }, host: { properties: { "class.k-column-list-wrapper": "this.className" } }, providers: [ColumnListKeyboardNavigation], viewQueries: [{ propertyName: "resetButton", first: true, predicate: ["resetButton"], descendants: true }, { propertyName: "applyButton", first: true, predicate: ["applyButton"], descendants: true }, { propertyName: "options", predicate: ColumnMenuChooserItemCheckedDirective, descendants: true }, { propertyName: "checkboxes", predicate: CheckBoxComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
271
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnListComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.ColumnListKeyboardNavigation }, { token: i2.AdaptiveGridService, optional: true }, { token: i3.ContextService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
272
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnListComponent, isStandalone: true, selector: "kendo-grid-columnlist", inputs: { columns: "columns", showActions: "showActions", autoSync: "autoSync", ariaLabel: "ariaLabel", allowHideAll: "allowHideAll", applyText: "applyText", resetText: "resetText", actionsClass: "actionsClass", isLast: "isLast", isExpanded: "isExpanded", service: "service" }, outputs: { reset: "reset", apply: "apply", columnChange: "columnChange" }, host: { properties: { "class.k-column-list-wrapper": "this.className", "class.k-column-list-md": "this.listSize" } }, providers: [ColumnListKeyboardNavigation], viewQueries: [{ propertyName: "resetButton", first: true, predicate: ["resetButton"], descendants: true }, { propertyName: "applyButton", first: true, predicate: ["applyButton"], descendants: true }, { propertyName: "options", predicate: ColumnMenuChooserItemCheckedDirective, descendants: true }, { propertyName: "checkboxes", predicate: CheckBoxComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
255
273
  <div
256
274
  class="k-column-list"
257
275
  role="listbox"
@@ -271,11 +289,13 @@ export class ColumnListComponent {
271
289
  <span class="k-checkbox-label">{{ column.displayTitle }}</span>
272
290
  </label>
273
291
  </div>
274
- <div [ngClass]="actionsClass" *ngIf="!autoSync">
292
+ <div [ngClass]="actionsClass" *ngIf="!autoSync && showActions">
275
293
  <button
276
294
  #applyButton
277
295
  kendoButton
278
296
  type="button"
297
+ icon="check"
298
+ [svgIcon]="checkIcon"
279
299
  themeColor="primary"
280
300
  (click)="applyChanges()"
281
301
  (keydown.enter)="$event.preventDefault(); $event.stopPropagation(); applyChanges();"
@@ -284,6 +304,8 @@ export class ColumnListComponent {
284
304
  #resetButton
285
305
  kendoButton
286
306
  type="button"
307
+ icon="reset"
308
+ [svgIcon]="arrowRotateCcwIcon"
287
309
  (keydown.tab)="onTab($event)"
288
310
  (click)="cancelChanges()"
289
311
  (keydown.enter)="$event.preventDefault(); $event.stopPropagation(); cancelChanges();"
@@ -316,11 +338,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
316
338
  <span class="k-checkbox-label">{{ column.displayTitle }}</span>
317
339
  </label>
318
340
  </div>
319
- <div [ngClass]="actionsClass" *ngIf="!autoSync">
341
+ <div [ngClass]="actionsClass" *ngIf="!autoSync && showActions">
320
342
  <button
321
343
  #applyButton
322
344
  kendoButton
323
345
  type="button"
346
+ icon="check"
347
+ [svgIcon]="checkIcon"
324
348
  themeColor="primary"
325
349
  (click)="applyChanges()"
326
350
  (keydown.enter)="$event.preventDefault(); $event.stopPropagation(); applyChanges();"
@@ -329,6 +353,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
329
353
  #resetButton
330
354
  kendoButton
331
355
  type="button"
356
+ icon="reset"
357
+ [svgIcon]="arrowRotateCcwIcon"
332
358
  (keydown.tab)="onTab($event)"
333
359
  (click)="cancelChanges()"
334
360
  (keydown.enter)="$event.preventDefault(); $event.stopPropagation(); cancelChanges();"
@@ -338,9 +364,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
338
364
  standalone: true,
339
365
  imports: [NgFor, ColumnMenuChooserItemCheckedDirective, NgIf, NgClass, CheckBoxComponent, ButtonDirective]
340
366
  }]
341
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.ColumnListKeyboardNavigation }]; }, propDecorators: { className: [{
367
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.ColumnListKeyboardNavigation }, { type: i2.AdaptiveGridService, decorators: [{
368
+ type: Optional
369
+ }] }, { type: i3.ContextService, decorators: [{
370
+ type: Optional
371
+ }] }]; }, propDecorators: { className: [{
342
372
  type: HostBinding,
343
373
  args: ["class.k-column-list-wrapper"]
374
+ }], listSize: [{
375
+ type: HostBinding,
376
+ args: ["class.k-column-list-md"]
344
377
  }], reset: [{
345
378
  type: Output
346
379
  }], apply: [{
@@ -349,6 +382,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
349
382
  type: Output
350
383
  }], columns: [{
351
384
  type: Input
385
+ }], showActions: [{
386
+ type: Input
352
387
  }], autoSync: [{
353
388
  type: Input
354
389
  }], ariaLabel: [{
@@ -58,7 +58,7 @@ export class ColumnMenuAutoSizeAllColumnsComponent extends ColumnMenuItemBase {
58
58
  [svgIcon]="displayInlineFlexIcon"
59
59
  (itemClick)="autoSizeAllColumns()"
60
60
  ></kendo-grid-columnmenu-item>
61
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
61
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }] });
62
62
  }
63
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuAutoSizeAllColumnsComponent, decorators: [{
64
64
  type: Component,
@@ -64,7 +64,7 @@ export class ColumnMenuAutoSizeColumnComponent extends ColumnMenuItemBase {
64
64
  [svgIcon]="maxWidthIcon"
65
65
  (itemClick)="autoSizeColumn()"
66
66
  ></kendo-grid-columnmenu-item>
67
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
67
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }] });
68
68
  }
69
69
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuAutoSizeColumnComponent, decorators: [{
70
70
  type: Component,
@@ -118,7 +118,7 @@ export class ColumnMenuChooserComponent extends ColumnMenuItemBase {
118
118
  </kendo-grid-columnlist>
119
119
  </ng-template>
120
120
  </kendo-grid-columnmenu-item>
121
- `, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }, { kind: "directive", type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }, { kind: "component", type: ColumnListComponent, selector: "kendo-grid-columnlist", inputs: ["columns", "autoSync", "ariaLabel", "allowHideAll", "applyText", "resetText", "actionsClass", "isLast", "isExpanded", "service"], outputs: ["reset", "apply", "columnChange"] }] });
121
+ `, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }, { kind: "directive", type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }, { kind: "component", type: ColumnListComponent, selector: "kendo-grid-columnlist", inputs: ["columns", "showActions", "autoSync", "ariaLabel", "allowHideAll", "applyText", "resetText", "actionsClass", "isLast", "isExpanded", "service"], outputs: ["reset", "apply", "columnChange"] }] });
122
122
  }
123
123
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuChooserComponent, decorators: [{
124
124
  type: Component,
@@ -33,7 +33,7 @@ export class ColumnMenuContainerComponent {
33
33
  else {
34
34
  return;
35
35
  }
36
- this.ngZone.onStable.pipe(take(1)).subscribe(() => this.service.menuTabbingService.firstFocusable.focus());
36
+ this.ngZone.onStable.pipe(take(1)).subscribe(() => this.service.menuTabbingService.firstFocusable?.focus());
37
37
  }
38
38
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuContainerComponent, deps: [{ token: i1.ColumnMenuService }, { token: NgZone }], target: i0.ɵɵFactoryTarget.Component });
39
39
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnMenuContainerComponent, isStandalone: true, selector: "kendo-grid-columnmenu-container", queries: [{ propertyName: "columnMenuItems", predicate: ColumnMenuItemDirective, descendants: true }], ngImport: i0, template: `
@@ -97,7 +97,7 @@ export class ColumnMenuFilterComponent extends ColumnMenuItemBase {
97
97
  </kendo-grid-filter-menu-container>
98
98
  </ng-template>
99
99
  </kendo-grid-columnmenu-item>
100
- `, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }, { kind: "directive", type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }, { kind: "component", type: FilterMenuContainerComponent, selector: "kendo-grid-filter-menu-container", inputs: ["column", "isLast", "isExpanded", "menuTabbingService", "filter", "actionsClass"], outputs: ["close"] }] });
100
+ `, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }, { kind: "directive", type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }, { kind: "component", type: FilterMenuContainerComponent, selector: "kendo-grid-filter-menu-container", inputs: ["column", "isLast", "isExpanded", "menuTabbingService", "filter", "actionsClass"], outputs: ["close"] }] });
101
101
  }
102
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuFilterComponent, decorators: [{
103
103
  type: Component,
@@ -5,13 +5,21 @@
5
5
  import { Component, Input, Output, EventEmitter, ContentChild, NgZone } from '@angular/core';
6
6
  import { trigger, transition, style, animate, state } from '@angular/animations';
7
7
  import { ColumnMenuItemContentTemplateDirective } from './column-menu-item-content-template.directive';
8
- import { chevronDownIcon, chevronUpIcon } from '@progress/kendo-svg-icons';
8
+ import { chevronDownIcon, chevronRightIcon, chevronUpIcon, filterIcon, sortAscSmallIcon, sortDescSmallIcon } from '@progress/kendo-svg-icons';
9
9
  import { guid } from '@progress/kendo-angular-common';
10
10
  import { ColumnMenuService } from './column-menu.service';
11
11
  import { NgIf, NgTemplateOutlet } from '@angular/common';
12
12
  import { IconWrapperComponent } from '@progress/kendo-angular-icons';
13
13
  import { take } from 'rxjs/operators';
14
+ import { ContextService } from '../common/provider.service';
15
+ import { filtersByField } from '../filtering/base-filter-cell.component';
16
+ import { AdaptiveGridService } from '../common/adaptiveness.service';
17
+ import { ColumnComponent } from '../columns/column.component';
18
+ import { normalize } from '../columns/sort-settings';
19
+ import { isPresent } from '../utils';
14
20
  import * as i0 from "@angular/core";
21
+ import * as i1 from "../common/provider.service";
22
+ import * as i2 from "../common/adaptiveness.service";
15
23
  /**
16
24
  * Represents an item that can be placed inside a
17
25
  * [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.
@@ -27,6 +35,16 @@ import * as i0 from "@angular/core";
27
35
  */
28
36
  export class ColumnMenuItemComponent {
29
37
  ngZone;
38
+ ctx;
39
+ adaptiveGridService;
40
+ /**
41
+ * @hidden
42
+ */
43
+ sortAscSmallIcon = sortAscSmallIcon;
44
+ /**
45
+ * @hidden
46
+ */
47
+ sortDescSmallIcon = sortDescSmallIcon;
30
48
  /**
31
49
  * Fires when the item is clicked.
32
50
  */
@@ -69,19 +87,39 @@ export class ColumnMenuItemComponent {
69
87
  * Required to include the item in the column menu keyboard navigation sequence.
70
88
  */
71
89
  service;
90
+ /**
91
+ * @hidden
92
+ */
93
+ column;
72
94
  contentTemplate;
73
95
  contentState = 'collapsed';
74
96
  contentId;
75
97
  chevronUpIcon = chevronUpIcon;
76
98
  chevronDownIcon = chevronDownIcon;
99
+ chevronRightIcon = chevronRightIcon;
100
+ filterIcon = filterIcon;
101
+ /**
102
+ * @hidden
103
+ */
104
+ get hasFilters() {
105
+ return filtersByField(this.ctx.grid.filter, this.column.field).length > 0;
106
+ }
77
107
  get expandedIcon() {
108
+ if (this.ctx.grid.isActionSheetExpanded) {
109
+ return 'arrow-chevron-right';
110
+ }
78
111
  return this.expanded ? 'arrow-chevron-up' : 'arrow-chevron-down';
79
112
  }
80
113
  get expandedSvgIcon() {
114
+ if (this.ctx.grid.isActionSheetExpanded) {
115
+ return this.chevronRightIcon;
116
+ }
81
117
  return this.expanded ? this.chevronUpIcon : this.chevronDownIcon;
82
118
  }
83
- constructor(ngZone) {
119
+ constructor(ngZone, ctx, adaptiveGridService) {
84
120
  this.ngZone = ngZone;
121
+ this.ctx = ctx;
122
+ this.adaptiveGridService = adaptiveGridService;
85
123
  }
86
124
  ngAfterViewInit() {
87
125
  this.ngZone.onStable.pipe(take(1)).subscribe(() => {
@@ -93,14 +131,41 @@ export class ColumnMenuItemComponent {
93
131
  this.updateContentState();
94
132
  }
95
133
  }
134
+ /**
135
+ * @hidden
136
+ */
137
+ sortDescriptor(field) {
138
+ return this.ctx.grid.sort.find(item => item.field === field) || { field };
139
+ }
140
+ /**
141
+ * @hidden
142
+ */
143
+ showSortNumbering(column) {
144
+ const { showIndexes } = normalize(this.ctx.grid.sortable);
145
+ return showIndexes
146
+ && this.ctx.grid.sort
147
+ && this.ctx.grid.sort.filter(({ dir }) => isPresent(dir)).length > 1
148
+ && this.sortOrder(column.field) > 0;
149
+ }
150
+ /**
151
+ * @hidden
152
+ */
153
+ sortOrder(field) {
154
+ return this.ctx.grid.sort
155
+ .filter(({ dir }) => isPresent(dir))
156
+ .findIndex(x => x.field === field)
157
+ + 1;
158
+ }
96
159
  /**
97
160
  * @hidden
98
161
  */
99
162
  onClick(e) {
100
163
  this.itemClick.emit(e);
101
164
  if (this.contentTemplate) {
102
- this.expanded = !this.expanded;
103
- this.updateContentState();
165
+ if (!this.ctx.grid.isActionSheetExpanded) {
166
+ this.expanded = !this.expanded;
167
+ this.updateContentState();
168
+ }
104
169
  if (this.expanded) {
105
170
  this.expand.emit();
106
171
  }
@@ -112,8 +177,8 @@ export class ColumnMenuItemComponent {
112
177
  updateContentState() {
113
178
  this.contentState = this.expanded ? 'expanded' : 'collapsed';
114
179
  }
115
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuItemComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
116
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnMenuItemComponent, isStandalone: true, selector: "kendo-grid-columnmenu-item", inputs: { icon: "icon", svgIcon: "svgIcon", text: "text", selected: "selected", disabled: "disabled", expanded: "expanded", service: "service" }, outputs: { itemClick: "itemClick", expand: "expand", collapse: "collapse" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: ColumnMenuItemContentTemplateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
180
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuItemComponent, deps: [{ token: i0.NgZone }, { token: i1.ContextService }, { token: i2.AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Component });
181
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnMenuItemComponent, isStandalone: true, selector: "kendo-grid-columnmenu-item", inputs: { icon: "icon", svgIcon: "svgIcon", text: "text", selected: "selected", disabled: "disabled", expanded: "expanded", service: "service", column: "column" }, outputs: { itemClick: "itemClick", expand: "expand", collapse: "collapse" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: ColumnMenuItemContentTemplateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
117
182
  <div *ngIf="contentTemplate; else content" class="k-expander">
118
183
  <ng-container [ngTemplateOutlet]="content"></ng-container>
119
184
  </div>
@@ -133,8 +198,22 @@ export class ColumnMenuItemComponent {
133
198
  [name]="icon"
134
199
  [svgIcon]="svgIcon"></kendo-icon-wrapper>
135
200
  {{ text }}
136
- <span *ngIf="contentTemplate" class="k-spacer"></span>
137
- <span *ngIf="contentTemplate" class="k-expander-indicator">
201
+ <span *ngIf="ctx.grid.isActionSheetExpanded && adaptiveGridService.viewType === 'sortToolbarTool' && sortDescriptor(column.field).dir"
202
+ class="k-columnmenu-indicators">
203
+ <kendo-icon-wrapper
204
+ [name]="sortDescriptor(column.field).dir === 'asc' ? 'sort-asc-small' : 'sort-desc-small'"
205
+ [svgIcon]="sortDescriptor(column.field).dir === 'asc' ? sortAscSmallIcon : sortDescSmallIcon">
206
+ </kendo-icon-wrapper>
207
+ <span *ngIf="showSortNumbering(column)" class="k-sort-index">{{sortOrder(column.field)}}</span>
208
+ </span>
209
+ <kendo-icon-wrapper
210
+ *ngIf="ctx.grid.isActionSheetExpanded && adaptiveGridService.viewType === 'filterToolbarTool' && hasFilters"
211
+ class="k-columnmenu-indicators"
212
+ name="filter"
213
+ [svgIcon]="filterIcon">
214
+ </kendo-icon-wrapper>
215
+ <span *ngIf="contentTemplate && adaptiveGridService.viewType !== 'sortToolbarTool'" class="k-spacer"></span>
216
+ <span *ngIf="contentTemplate && adaptiveGridService.viewType !== 'sortToolbarTool'" class="k-expander-indicator">
138
217
  <kendo-icon-wrapper
139
218
  [name]="expandedIcon"
140
219
  [svgIcon]="expandedSvgIcon">
@@ -217,8 +296,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
217
296
  [name]="icon"
218
297
  [svgIcon]="svgIcon"></kendo-icon-wrapper>
219
298
  {{ text }}
220
- <span *ngIf="contentTemplate" class="k-spacer"></span>
221
- <span *ngIf="contentTemplate" class="k-expander-indicator">
299
+ <span *ngIf="ctx.grid.isActionSheetExpanded && adaptiveGridService.viewType === 'sortToolbarTool' && sortDescriptor(column.field).dir"
300
+ class="k-columnmenu-indicators">
301
+ <kendo-icon-wrapper
302
+ [name]="sortDescriptor(column.field).dir === 'asc' ? 'sort-asc-small' : 'sort-desc-small'"
303
+ [svgIcon]="sortDescriptor(column.field).dir === 'asc' ? sortAscSmallIcon : sortDescSmallIcon">
304
+ </kendo-icon-wrapper>
305
+ <span *ngIf="showSortNumbering(column)" class="k-sort-index">{{sortOrder(column.field)}}</span>
306
+ </span>
307
+ <kendo-icon-wrapper
308
+ *ngIf="ctx.grid.isActionSheetExpanded && adaptiveGridService.viewType === 'filterToolbarTool' && hasFilters"
309
+ class="k-columnmenu-indicators"
310
+ name="filter"
311
+ [svgIcon]="filterIcon">
312
+ </kendo-icon-wrapper>
313
+ <span *ngIf="contentTemplate && adaptiveGridService.viewType !== 'sortToolbarTool'" class="k-spacer"></span>
314
+ <span *ngIf="contentTemplate && adaptiveGridService.viewType !== 'sortToolbarTool'" class="k-expander-indicator">
222
315
  <kendo-icon-wrapper
223
316
  [name]="expandedIcon"
224
317
  [svgIcon]="expandedSvgIcon">
@@ -234,7 +327,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
234
327
  standalone: true,
235
328
  imports: [IconWrapperComponent, NgIf, NgTemplateOutlet]
236
329
  }]
237
- }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { itemClick: [{
330
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.ContextService }, { type: i2.AdaptiveGridService }]; }, propDecorators: { itemClick: [{
238
331
  type: Output
239
332
  }], expand: [{
240
333
  type: Output
@@ -254,6 +347,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
254
347
  type: Input
255
348
  }], service: [{
256
349
  type: Input
350
+ }], column: [{
351
+ type: Input
257
352
  }], contentTemplate: [{
258
353
  type: ContentChild,
259
354
  args: [ColumnMenuItemContentTemplateDirective]
@@ -2,17 +2,21 @@
2
2
  * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { Directive, ElementRef, Input, NgZone, Renderer2 } from '@angular/core';
5
+ import { ChangeDetectorRef, Directive, ElementRef, Input, NgZone, Renderer2 } from '@angular/core';
6
6
  import { Subscription } from 'rxjs';
7
7
  import { Keys } from '@progress/kendo-angular-common';
8
8
  import { ColumnMenuPositionComponent } from './column-menu-position.component';
9
9
  import { ColumnMenuChooserComponent } from './column-menu-chooser.component';
10
10
  import { ColumnMenuFilterComponent } from './column-menu-filter.component';
11
+ import { ContextService } from '../common/provider.service';
11
12
  import * as i0 from "@angular/core";
13
+ import * as i1 from "../common/provider.service";
12
14
  export class ColumnMenuItemDirective {
13
15
  hostElement;
14
16
  renderer;
15
17
  ngZone;
18
+ cdr;
19
+ ctx;
16
20
  /**
17
21
  * The reference to the Grid column menu item. Required to include the item in the built-in keyboard navigation.
18
22
  */
@@ -55,6 +59,9 @@ export class ColumnMenuItemDirective {
55
59
  });
56
60
  if (this.isExpandableItem()) {
57
61
  this.menuItemComponent.isLast = true;
62
+ if (this.ctx.grid.isActionSheetExpanded) {
63
+ this.cdr.detectChanges();
64
+ }
58
65
  }
59
66
  }
60
67
  this._isLast = value;
@@ -69,10 +76,12 @@ export class ColumnMenuItemDirective {
69
76
  _isLast = false;
70
77
  columnMenuItems;
71
78
  subs = new Subscription();
72
- constructor(hostElement, renderer, ngZone) {
79
+ constructor(hostElement, renderer, ngZone, cdr, ctx) {
73
80
  this.hostElement = hostElement;
74
81
  this.renderer = renderer;
75
82
  this.ngZone = ngZone;
83
+ this.cdr = cdr;
84
+ this.ctx = ctx;
76
85
  }
77
86
  ngAfterViewInit() {
78
87
  this.columnMenuItems = this.hostElement.nativeElement.querySelectorAll('.k-columnmenu-item');
@@ -80,7 +89,7 @@ export class ColumnMenuItemDirective {
80
89
  if (this.menuItemComponent instanceof ColumnMenuFilterComponent) {
81
90
  this.menuItemComponent.service.menuTabbingService.isColumnMenu = true;
82
91
  }
83
- this.menuItemComponent.service?.columnMenuContainer.templateMenuItems.push(this);
92
+ this.menuItemComponent.service?.columnMenuContainer?.templateMenuItems.push(this);
84
93
  }
85
94
  ngOnDestroy() {
86
95
  if (this.subs) {
@@ -112,7 +121,7 @@ export class ColumnMenuItemDirective {
112
121
  this.menuItemComponent instanceof ColumnMenuChooserComponent ||
113
122
  this.menuItemComponent instanceof ColumnMenuPositionComponent;
114
123
  }
115
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuItemDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
124
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuItemDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.ContextService }], target: i0.ɵɵFactoryTarget.Directive });
116
125
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ColumnMenuItemDirective, isStandalone: true, selector: "[kendoGridColumnMenuItem]", inputs: { menuItemComponent: ["kendoGridColumnMenuItem", "menuItemComponent"] }, ngImport: i0 });
117
126
  }
118
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuItemDirective, decorators: [{
@@ -121,7 +130,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
121
130
  selector: '[kendoGridColumnMenuItem]',
122
131
  standalone: true
123
132
  }]
124
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { menuItemComponent: [{
133
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.ContextService }]; }, propDecorators: { menuItemComponent: [{
125
134
  type: Input,
126
135
  args: ['kendoGridColumnMenuItem']
127
136
  }] } });
@@ -89,7 +89,7 @@ export class ColumnMenuLockComponent extends ColumnMenuItemBase {
89
89
  (itemClick)="toggleColumn()"
90
90
  [disabled]="disabled">
91
91
  </kendo-grid-columnmenu-item>
92
- `, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
92
+ `, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }] });
93
93
  }
94
94
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuLockComponent, decorators: [{
95
95
  type: Component,
@@ -138,7 +138,7 @@ export class ColumnMenuPositionComponent extends ColumnMenuItemBase {
138
138
  </kendo-grid-columnmenu-stick>
139
139
  </ng-template>
140
140
  </kendo-grid-columnmenu-item>
141
- `, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }, { kind: "directive", type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColumnMenuLockComponent, selector: "kendo-grid-columnmenu-lock" }, { kind: "component", type: ColumnMenuStickComponent, selector: "kendo-grid-columnmenu-stick" }] });
141
+ `, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }, { kind: "directive", type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColumnMenuLockComponent, selector: "kendo-grid-columnmenu-lock" }, { kind: "component", type: ColumnMenuStickComponent, selector: "kendo-grid-columnmenu-stick" }] });
142
142
  }
143
143
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuPositionComponent, decorators: [{
144
144
  type: Component,
@@ -91,7 +91,7 @@ export class ColumnMenuSortComponent extends ColumnMenuItemBase {
91
91
  (itemClick)="toggleSort('desc')"
92
92
  [selected]="sortedDesc">
93
93
  </kendo-grid-columnmenu-item>
94
- `, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
94
+ `, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }] });
95
95
  }
96
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuSortComponent, decorators: [{
97
97
  type: Component,
@@ -91,7 +91,7 @@ export class ColumnMenuStickComponent extends ColumnMenuItemBase {
91
91
  (itemClick)="toggleColumn()"
92
92
  [disabled]="disabled">
93
93
  </kendo-grid-columnmenu-item>
94
- `, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
94
+ `, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }] });
95
95
  }
96
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuStickComponent, decorators: [{
97
97
  type: Component,