@progress/kendo-angular-grid 20.0.4-develop.2 → 20.1.0-develop.10

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 (65) hide show
  1. package/adaptiveness/adaptive-renderer.component.d.ts +2 -3
  2. package/column-menu/column-chooser-content.component.d.ts +60 -0
  3. package/column-menu/column-chooser.component.d.ts +15 -4
  4. package/column-menu/column-list-kb-nav.service.d.ts +2 -2
  5. package/column-menu/column-list.component.d.ts +28 -21
  6. package/column-menu/column-menu-chooser.component.d.ts +2 -7
  7. package/column-menu/column-menu.component.d.ts +0 -4
  8. package/columns/column-base.d.ts +8 -0
  9. package/columns/command-column.component.d.ts +1 -1
  10. package/columns/span-column.component.d.ts +1 -1
  11. package/directives.d.ts +1 -2
  12. package/editing/cancel-command.directive.d.ts +1 -1
  13. package/editing/edit-row-options.interface.d.ts +1 -1
  14. package/editing/edit-template.directive.d.ts +1 -1
  15. package/editing/remove-command.directive.d.ts +1 -1
  16. package/editing/save-command.directive.d.ts +1 -1
  17. package/editing-directives/edit-service.interface.d.ts +2 -2
  18. package/editing-directives/external-editing.directive.d.ts +1 -1
  19. package/editing-directives/in-cell-editing.directive.d.ts +1 -1
  20. package/editing-directives/reactive-editing.directive.d.ts +1 -1
  21. package/editing-directives/template-editing.directive.d.ts +1 -1
  22. package/esm2022/adaptiveness/adaptive-renderer.component.mjs +26 -46
  23. package/esm2022/column-menu/column-chooser-content.component.mjs +306 -0
  24. package/esm2022/column-menu/column-chooser.component.mjs +39 -31
  25. package/esm2022/column-menu/column-list-kb-nav.service.mjs +4 -4
  26. package/esm2022/column-menu/column-list.component.mjs +221 -176
  27. package/esm2022/column-menu/column-menu-chooser.component.mjs +17 -36
  28. package/esm2022/column-menu/column-menu-container.component.mjs +10 -1
  29. package/esm2022/column-menu/column-menu.component.mjs +19 -29
  30. package/esm2022/columns/column-base.mjs +8 -0
  31. package/esm2022/columns/command-column.component.mjs +1 -1
  32. package/esm2022/columns/span-column.component.mjs +1 -1
  33. package/esm2022/common/column-info.service.mjs +3 -0
  34. package/esm2022/directives.mjs +0 -2
  35. package/esm2022/editing/cancel-command.directive.mjs +1 -1
  36. package/esm2022/editing/edit-template.directive.mjs +1 -1
  37. package/esm2022/editing/remove-command.directive.mjs +1 -1
  38. package/esm2022/editing/save-command.directive.mjs +1 -1
  39. package/esm2022/editing-directives/external-editing.directive.mjs +1 -1
  40. package/esm2022/editing-directives/in-cell-editing.directive.mjs +1 -1
  41. package/esm2022/editing-directives/reactive-editing.directive.mjs +1 -1
  42. package/esm2022/editing-directives/template-editing.directive.mjs +1 -1
  43. package/esm2022/filtering/menu/filter-menu-input-wrapper.component.mjs +2 -2
  44. package/esm2022/filtering/menu/filter-menu.component.mjs +7 -1
  45. package/esm2022/grid.component.mjs +6 -0
  46. package/esm2022/grid.module.mjs +47 -48
  47. package/esm2022/localization/messages.mjs +12 -1
  48. package/esm2022/navigation/logical-cell.directive.mjs +8 -2
  49. package/esm2022/navigation/navigation.service.mjs +1 -0
  50. package/esm2022/package-metadata.mjs +2 -2
  51. package/esm2022/rendering/list.component.mjs +23 -1
  52. package/esm2022/rendering/toolbar/tools/column-chooser-tool.directive.mjs +39 -13
  53. package/esm2022/rendering/toolbar/tools/filter-toolbar-tool.component.mjs +1 -1
  54. package/esm2022/rendering/toolbar/tools/group-toolbar-tool.component.mjs +2 -2
  55. package/esm2022/rendering/toolbar/tools/sort-toolbar-tool.component.mjs +1 -1
  56. package/fesm2022/progress-kendo-angular-grid.mjs +739 -391
  57. package/grid.module.d.ts +46 -47
  58. package/localization/messages.d.ts +10 -1
  59. package/navigation/navigation.service.d.ts +1 -0
  60. package/package.json +21 -21
  61. package/rendering/list.component.d.ts +1 -0
  62. package/rendering/toolbar/tools/column-chooser-tool.directive.d.ts +13 -1
  63. package/schematics/ngAdd/index.js +4 -4
  64. package/column-menu/column-chooser-item-checked.directive.d.ts +0 -21
  65. package/esm2022/column-menu/column-chooser-item-checked.directive.mjs +0 -45
@@ -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, Input, Output, EventEmitter, ChangeDetectorRef, ElementRef } from '@angular/core';
5
+ import { Component, Input, Output, EventEmitter, ElementRef } from '@angular/core';
6
6
  import { ColumnInfoService } from '../common/column-info.service';
7
7
  import { ColumnMenuItemBase } from './column-menu-item-base';
8
8
  import { columnsIcon } from '@progress/kendo-svg-icons';
@@ -10,6 +10,7 @@ import { ContextService } from '../common/provider.service';
10
10
  import { ColumnListComponent } from './column-list.component';
11
11
  import { ColumnMenuItemContentTemplateDirective } from './column-menu-item-content-template.directive';
12
12
  import { ColumnMenuItemComponent } from './column-menu-item.component';
13
+ import { ColumnChooserContentComponent } from './column-chooser-content.component';
13
14
  import * as i0 from "@angular/core";
14
15
  import * as i1 from "../common/provider.service";
15
16
  import * as i2 from "../common/column-info.service";
@@ -40,7 +41,6 @@ import * as i2 from "../common/column-info.service";
40
41
  export class ColumnMenuChooserComponent extends ColumnMenuItemBase {
41
42
  ctx;
42
43
  columnInfoService;
43
- changeDetector;
44
44
  hostElement;
45
45
  /**
46
46
  * Fires when the content expands.
@@ -67,23 +67,12 @@ export class ColumnMenuChooserComponent extends ColumnMenuItemBase {
67
67
  return this.columnInfoService.leafNamedColumns;
68
68
  }
69
69
  columnsIcon = columnsIcon;
70
- constructor(ctx, columnInfoService, changeDetector, hostElement) {
70
+ constructor(ctx, columnInfoService, hostElement) {
71
71
  super();
72
72
  this.ctx = ctx;
73
73
  this.columnInfoService = columnInfoService;
74
- this.changeDetector = changeDetector;
75
74
  this.hostElement = hostElement;
76
75
  }
77
- /**
78
- * @hidden
79
- */
80
- onApply(changed) {
81
- this.close();
82
- if (changed.length) {
83
- this.changeDetector.markForCheck();
84
- this.columnInfoService.changeVisibility(changed);
85
- }
86
- }
87
76
  /**
88
77
  * @hidden
89
78
  */
@@ -101,7 +90,7 @@ export class ColumnMenuChooserComponent extends ColumnMenuItemBase {
101
90
  this.expanded = true;
102
91
  this.expand.emit();
103
92
  }
104
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuChooserComponent, deps: [{ token: i1.ContextService }, { token: i2.ColumnInfoService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
93
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuChooserComponent, deps: [{ token: i1.ContextService }, { token: i2.ColumnInfoService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
105
94
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnMenuChooserComponent, isStandalone: true, selector: "kendo-grid-columnmenu-chooser", inputs: { expanded: "expanded", isLast: "isLast" }, outputs: { expand: "expand", collapse: "collapse" }, usesInheritance: true, ngImport: i0, template: `
106
95
  <kendo-grid-columnmenu-item
107
96
  [text]="ctx.localization.get('columns')"
@@ -111,22 +100,18 @@ export class ColumnMenuChooserComponent extends ColumnMenuItemBase {
111
100
  (collapse)="onCollapse()"
112
101
  (expand)="onExpand()">
113
102
  <ng-template kendoGridColumnMenuItemContentTemplate>
114
- <kendo-grid-columnlist
115
- [applyText]="ctx.localization.get('columnsApply')"
116
- [resetText]="ctx.localization.get('columnsReset')"
117
- [ariaLabel]="ctx.localization.get('columns')"
103
+ <kendo-grid-column-chooser-content
118
104
  [columns]="columns"
119
- [autoSync]="false"
120
- [allowHideAll]="false"
121
- [actionsClass]="actionsClass"
122
105
  [isLast]="isLast"
123
106
  [isExpanded]="expanded"
107
+ [closeOnReset]="false"
124
108
  [service]="service"
125
- (apply)="onApply($event)">
126
- </kendo-grid-columnlist>
109
+ (close)="close()"
110
+ >
111
+ </kendo-grid-column-chooser-content>
127
112
  </ng-template>
128
113
  </kendo-grid-columnmenu-item>
129
- `, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "indicatorIcon", "text", "selected", "disabled", "expanded", "focused", "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"] }] });
114
+ `, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "indicatorIcon", "text", "selected", "disabled", "expanded", "focused", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }, { kind: "directive", type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }, { kind: "component", type: ColumnChooserContentComponent, selector: "kendo-grid-column-chooser-content", inputs: ["filterable", "showSelectAll", "showCheckedCount", "allowHideAll", "autoSync", "actionsClass", "closeOnReset", "columns", "isLast", "isExpanded", "service"], outputs: ["close"] }] });
130
115
  }
131
116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuChooserComponent, decorators: [{
132
117
  type: Component,
@@ -141,26 +126,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
141
126
  (collapse)="onCollapse()"
142
127
  (expand)="onExpand()">
143
128
  <ng-template kendoGridColumnMenuItemContentTemplate>
144
- <kendo-grid-columnlist
145
- [applyText]="ctx.localization.get('columnsApply')"
146
- [resetText]="ctx.localization.get('columnsReset')"
147
- [ariaLabel]="ctx.localization.get('columns')"
129
+ <kendo-grid-column-chooser-content
148
130
  [columns]="columns"
149
- [autoSync]="false"
150
- [allowHideAll]="false"
151
- [actionsClass]="actionsClass"
152
131
  [isLast]="isLast"
153
132
  [isExpanded]="expanded"
133
+ [closeOnReset]="false"
154
134
  [service]="service"
155
- (apply)="onApply($event)">
156
- </kendo-grid-columnlist>
135
+ (close)="close()"
136
+ >
137
+ </kendo-grid-column-chooser-content>
157
138
  </ng-template>
158
139
  </kendo-grid-columnmenu-item>
159
140
  `,
160
141
  standalone: true,
161
- imports: [ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnListComponent]
142
+ imports: [ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnListComponent, ColumnChooserContentComponent]
162
143
  }]
163
- }], ctorParameters: function () { return [{ type: i1.ContextService }, { type: i2.ColumnInfoService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { expand: [{
144
+ }], ctorParameters: function () { return [{ type: i1.ContextService }, { type: i2.ColumnInfoService }, { type: i0.ElementRef }]; }, propDecorators: { expand: [{
164
145
  type: Output
165
146
  }], collapse: [{
166
147
  type: Output
@@ -6,6 +6,7 @@ import { ColumnMenuItemDirective } from './column-menu-item.directive';
6
6
  import { Component, ContentChildren, Inject, NgZone, QueryList } from '@angular/core';
7
7
  import { take } from 'rxjs/operators';
8
8
  import { ColumnMenuService } from './column-menu.service';
9
+ import { DropDownListComponent } from '@progress/kendo-angular-dropdowns';
9
10
  import * as i0 from "@angular/core";
10
11
  import * as i1 from "./column-menu.service";
11
12
  /**
@@ -33,7 +34,15 @@ export class ColumnMenuContainerComponent {
33
34
  else {
34
35
  return;
35
36
  }
36
- this.ngZone.onStable.pipe(take(1)).subscribe(() => this.service.menuTabbingService.firstFocusable?.focus());
37
+ this.ngZone.onStable.pipe(take(1)).subscribe(() => {
38
+ const firstFocusable = this.service.menuTabbingService.firstFocusable;
39
+ if (firstFocusable instanceof DropDownListComponent) {
40
+ firstFocusable.wrapper.nativeElement.focus({ preventScroll: true });
41
+ }
42
+ else {
43
+ firstFocusable?.focus({ preventScroll: true });
44
+ }
45
+ });
37
46
  }
38
47
  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
48
  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: `
@@ -31,6 +31,7 @@ import { NgClass, NgTemplateOutlet, NgIf } from '@angular/common';
31
31
  import { IconWrapperComponent } from '@progress/kendo-angular-icons';
32
32
  import { AdaptiveGridService } from '../common/adaptiveness.service';
33
33
  import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
34
+ import { ColumnChooserContentComponent } from './column-chooser-content.component';
34
35
  import * as i0 from "@angular/core";
35
36
  import * as i1 from "./../navigation/navigation.service";
36
37
  import * as i2 from "../common/single-popup.service";
@@ -199,16 +200,6 @@ export class ColumnMenuComponent {
199
200
  get hasColumnChooser() {
200
201
  return hasColumnChooser(this.settings);
201
202
  }
202
- /**
203
- * @hidden
204
- */
205
- onApply(changed) {
206
- this.close(true);
207
- if (changed.length) {
208
- this.cdr.markForCheck();
209
- this.columnInfoService.changeVisibility(changed);
210
- }
211
- }
212
203
  /**
213
204
  * @hidden
214
205
  */
@@ -362,7 +353,13 @@ export class ColumnMenuComponent {
362
353
  ariaRoot && this.renderer.setAttribute(ariaRoot, 'aria-expanded', 'false');
363
354
  }
364
355
  focusRoot() {
365
- this.isNavigable ? this.navigationService.focusCell(0, this.column.leafIndex) : this.anchor.nativeElement.focus();
356
+ if (this.isNavigable) {
357
+ this.navigationService.preventScroll = true;
358
+ this.navigationService.focusCell(0, this.column.leafIndex);
359
+ }
360
+ else {
361
+ this.anchor.nativeElement.focus({ preventScroll: true });
362
+ }
366
363
  }
367
364
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuComponent, deps: [{ token: i1.NavigationService }, { token: i2.SinglePopupService }, { token: i3.ColumnMenuService }, { token: i4.ContextService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i5.ColumnInfoService }, { token: i6.IdService, optional: true }, { token: i7.AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Component });
368
365
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnMenuComponent, isStandalone: true, selector: "kendo-grid-column-menu", inputs: { standalone: "standalone", column: "column", settings: "settings", sort: "sort", filter: "filter", sortable: "sortable", columnMenuTemplate: "columnMenuTemplate", tabIndex: "tabIndex" }, host: { properties: { "class.k-grid-column-menu-standalone": "this.standalone" } }, providers: [
@@ -522,22 +519,18 @@ export class ColumnMenuComponent {
522
519
  </kendo-icon-wrapper>
523
520
  </ng-template>
524
521
  <ng-template kendoTabContent>
525
- <kendo-grid-columnlist
526
- [applyText]="ctx.localization.get('columnsApply')"
527
- [resetText]="ctx.localization.get('columnsReset')"
522
+ <kendo-grid-column-chooser-content
528
523
  [columns]="columns"
529
- [autoSync]="false"
530
- [allowHideAll]="false"
531
- [actionsClass]="actionsClass"
532
524
  [service]="service"
533
- (apply)="onApply($event)">
534
- </kendo-grid-columnlist>
525
+ (close)="close()"
526
+ >
527
+ </kendo-grid-column-chooser-content>
535
528
  </ng-template>
536
529
  </kendo-tabstrip-tab>
537
530
  </kendo-tabstrip>
538
531
  </ng-template>
539
532
 
540
- `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: ColumnMenuContainerComponent, selector: "kendo-grid-columnmenu-container" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColumnMenuSortComponent, selector: "kendo-grid-columnmenu-sort" }, { kind: "directive", type: ColumnMenuItemDirective, selector: "[kendoGridColumnMenuItem]", inputs: ["kendoGridColumnMenuItem"] }, { kind: "component", type: ColumnMenuLockComponent, selector: "kendo-grid-columnmenu-lock" }, { kind: "component", type: ColumnMenuStickComponent, selector: "kendo-grid-columnmenu-stick" }, { kind: "component", type: ColumnMenuPositionComponent, selector: "kendo-grid-columnmenu-position", inputs: ["expanded", "showLock", "showStick", "isLast"], outputs: ["expand", "collapse"] }, { kind: "component", type: ColumnMenuChooserComponent, selector: "kendo-grid-columnmenu-chooser", inputs: ["expanded", "isLast"], outputs: ["expand", "collapse"] }, { kind: "component", type: ColumnMenuAutoSizeColumnComponent, selector: "kendo-grid-columnmenu-autosize-column", inputs: ["column"] }, { kind: "component", type: ColumnMenuAutoSizeAllColumnsComponent, selector: "kendo-grid-columnmenu-autosize-all-columns" }, { kind: "component", type: ColumnMenuFilterComponent, selector: "kendo-grid-columnmenu-filter", inputs: ["expanded", "isLast"], outputs: ["expand", "collapse"] }, { kind: "component", type: TabStripComponent, selector: "kendo-tabstrip", inputs: ["height", "animate", "tabAlignment", "tabPosition", "keepTabContent", "closable", "scrollable", "size", "closeIcon", "closeIconClass", "closeSVGIcon", "showContentArea"], outputs: ["tabSelect", "tabClose", "tabScroll"], exportAs: ["kendoTabStrip"] }, { kind: "component", type: TabStripTabComponent, selector: "kendo-tabstrip-tab", inputs: ["title", "disabled", "cssClass", "cssStyle", "selected", "closable", "closeIcon", "closeIconClass", "closeSVGIcon"], exportAs: ["kendoTabStripTab"] }, { kind: "directive", type: TabTitleDirective, selector: "[kendoTabTitle]" }, { kind: "directive", type: TabContentDirective, selector: "[kendoTabContent]" }, { kind: "component", type: FilterMenuContainerComponent, selector: "kendo-grid-filter-menu-container", inputs: ["column", "isLast", "isExpanded", "menuTabbingService", "filter", "actionsClass"], outputs: ["close"] }, { kind: "component", type: ColumnListComponent, selector: "kendo-grid-columnlist", inputs: ["columns", "showActions", "autoSync", "ariaLabel", "allowHideAll", "applyText", "resetText", "actionsClass", "isLast", "isExpanded", "service"], outputs: ["reset", "apply", "columnChange"] }] });
533
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: ColumnMenuContainerComponent, selector: "kendo-grid-columnmenu-container" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColumnMenuSortComponent, selector: "kendo-grid-columnmenu-sort" }, { kind: "directive", type: ColumnMenuItemDirective, selector: "[kendoGridColumnMenuItem]", inputs: ["kendoGridColumnMenuItem"] }, { kind: "component", type: ColumnMenuLockComponent, selector: "kendo-grid-columnmenu-lock" }, { kind: "component", type: ColumnMenuStickComponent, selector: "kendo-grid-columnmenu-stick" }, { kind: "component", type: ColumnMenuPositionComponent, selector: "kendo-grid-columnmenu-position", inputs: ["expanded", "showLock", "showStick", "isLast"], outputs: ["expand", "collapse"] }, { kind: "component", type: ColumnMenuChooserComponent, selector: "kendo-grid-columnmenu-chooser", inputs: ["expanded", "isLast"], outputs: ["expand", "collapse"] }, { kind: "component", type: ColumnMenuAutoSizeColumnComponent, selector: "kendo-grid-columnmenu-autosize-column", inputs: ["column"] }, { kind: "component", type: ColumnMenuAutoSizeAllColumnsComponent, selector: "kendo-grid-columnmenu-autosize-all-columns" }, { kind: "component", type: ColumnMenuFilterComponent, selector: "kendo-grid-columnmenu-filter", inputs: ["expanded", "isLast"], outputs: ["expand", "collapse"] }, { kind: "component", type: TabStripComponent, selector: "kendo-tabstrip", inputs: ["height", "animate", "tabAlignment", "tabPosition", "keepTabContent", "closable", "scrollable", "size", "closeIcon", "closeIconClass", "closeSVGIcon", "showContentArea"], outputs: ["tabSelect", "tabClose", "tabScroll"], exportAs: ["kendoTabStrip"] }, { kind: "component", type: TabStripTabComponent, selector: "kendo-tabstrip-tab", inputs: ["title", "disabled", "cssClass", "cssStyle", "selected", "closable", "closeIcon", "closeIconClass", "closeSVGIcon"], exportAs: ["kendoTabStripTab"] }, { kind: "directive", type: TabTitleDirective, selector: "[kendoTabTitle]" }, { kind: "directive", type: TabContentDirective, selector: "[kendoTabContent]" }, { kind: "component", type: FilterMenuContainerComponent, selector: "kendo-grid-filter-menu-container", inputs: ["column", "isLast", "isExpanded", "menuTabbingService", "filter", "actionsClass"], outputs: ["close"] }, { kind: "component", type: ColumnChooserContentComponent, selector: "kendo-grid-column-chooser-content", inputs: ["filterable", "showSelectAll", "showCheckedCount", "allowHideAll", "autoSync", "actionsClass", "closeOnReset", "columns", "isLast", "isExpanded", "service"], outputs: ["close"] }] });
541
534
  }
542
535
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuComponent, decorators: [{
543
536
  type: Component,
@@ -701,16 +694,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
701
694
  </kendo-icon-wrapper>
702
695
  </ng-template>
703
696
  <ng-template kendoTabContent>
704
- <kendo-grid-columnlist
705
- [applyText]="ctx.localization.get('columnsApply')"
706
- [resetText]="ctx.localization.get('columnsReset')"
697
+ <kendo-grid-column-chooser-content
707
698
  [columns]="columns"
708
- [autoSync]="false"
709
- [allowHideAll]="false"
710
- [actionsClass]="actionsClass"
711
699
  [service]="service"
712
- (apply)="onApply($event)">
713
- </kendo-grid-columnlist>
700
+ (close)="close()"
701
+ >
702
+ </kendo-grid-column-chooser-content>
714
703
  </ng-template>
715
704
  </kendo-tabstrip-tab>
716
705
  </kendo-tabstrip>
@@ -723,7 +712,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
723
712
  ColumnMenuSortComponent, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuStickComponent,
724
713
  ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuAutoSizeColumnComponent,
725
714
  ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuFilterComponent, TabStripComponent,
726
- TabStripTabComponent, TabTitleDirective, TabContentDirective, FilterMenuContainerComponent, ColumnListComponent
715
+ TabStripTabComponent, TabTitleDirective, TabContentDirective, FilterMenuContainerComponent, ColumnListComponent,
716
+ ColumnChooserContentComponent
727
717
  ]
728
718
  }]
729
719
  }], ctorParameters: function () { return [{ type: i1.NavigationService }, { type: i2.SinglePopupService }, { type: i3.ColumnMenuService }, { type: i4.ContextService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i5.ColumnInfoService }, { type: i6.IdService, decorators: [{
@@ -44,6 +44,14 @@ export class ColumnBase {
44
44
  * @hidden
45
45
  */
46
46
  initialMinResizableWidth;
47
+ /**
48
+ * @hidden
49
+ */
50
+ initiallyChecked;
51
+ /**
52
+ * @hidden
53
+ */
54
+ currentlyChecked;
47
55
  /**
48
56
  * @hidden
49
57
  */
@@ -11,7 +11,7 @@ import * as i1 from "./column-base";
11
11
  import * as i2 from "../common/id.service";
12
12
  /**
13
13
  * Represents the command columns of the Grid. Define the content of the column inside an `<ng-template>` tag.
14
- * For more information and examples, see the [Command Column Directives](slug:editing_directives_grid#toc-command-column-directives) article.
14
+ * For more information and examples, see the [Editing Action Buttons](slug:basics_editing_grid#editing-action-buttons) article.
15
15
  *
16
16
  * @example
17
17
  * ```html
@@ -75,7 +75,7 @@ export class SpanColumnComponent extends ColumnBase {
75
75
  includeInChooser = false;
76
76
  /**
77
77
  * Sets whether the edit template of the column is rendered.
78
- * To enable editing for a spanned column, set an edit template for it ([see example](slug:custom_reactive_editing_grid)).
78
+ * To enable editing for a spanned column, set an edit template for it ([see example](slug:custom_editors_grid#setting-up-custom-editors)).
79
79
  * @default false
80
80
  */
81
81
  set editable(value) {
@@ -38,6 +38,9 @@ export class ColumnInfoService {
38
38
  return this.list().filter(column => !column.isVisible);
39
39
  }
40
40
  get leafNamedColumns() {
41
+ if (!this.list) {
42
+ return [];
43
+ }
41
44
  const columns = expandColumns(this.list().filterSort(column => !column.isColumnGroup))
42
45
  .filter(column => column.matchesMedia && column.displayTitle);
43
46
  return orderBy(columns, [{ field: 'locked', dir: 'desc' }]);
@@ -71,7 +71,6 @@ import { NumericFilterCellComponent } from "./filtering/cell/numeric-filter-cell
71
71
  import { StringFilterCellComponent } from "./filtering/cell/string-filter-cell.component";
72
72
  import { FilterRowComponent } from "./filtering/filter-row.component";
73
73
  // COLUMN MENU
74
- import { ColumnMenuChooserItemCheckedDirective } from "./column-menu/column-chooser-item-checked.directive";
75
74
  import { ColumnChooserComponent } from "./column-menu/column-chooser.component";
76
75
  import { ColumnChooserToolbarDirective } from "./rendering/toolbar/tools/column-chooser-tool.directive";
77
76
  import { ColumnListComponent } from "./column-menu/column-list.component";
@@ -300,7 +299,6 @@ export const KENDO_GRID_FILTER_ROW = [
300
299
  * Utility array that contains the former ColumnMenu module declarations
301
300
  */
302
301
  export const KENDO_GRID_COLUMN_MENU_DECLARATIONS = [
303
- ColumnMenuChooserItemCheckedDirective,
304
302
  ColumnListComponent,
305
303
  ColumnChooserComponent,
306
304
  ColumnChooserToolbarDirective,
@@ -15,7 +15,7 @@ import * as i2 from "../common/provider.service";
15
15
  /**
16
16
  * Represents the `cancel` command of the Grid. Apply this directive to any `button`
17
17
  * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
18
- * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
18
+ * ([see example](slug:basics_editing_grid#editing-action-buttons)).
19
19
  *
20
20
  * When a button with this directive is clicked, the
21
21
  * [`cancel`]({% slug api_grid_gridcomponent %}#toc-cancel) event
@@ -5,7 +5,7 @@
5
5
  import { Directive, TemplateRef, Optional } from '@angular/core';
6
6
  import * as i0 from "@angular/core";
7
7
  /**
8
- * Lets you customize the content of edited cells by providing a column edit-cell template for the Grid ([see example](slug:custom_reactive_editing_grid#toc-setting-up-custom-inputs)).
8
+ * Lets you customize the content of edited cells by providing a column edit-cell template for the Grid ([see example](slug:custom_editors_grid#setting-up-custom-editors)).
9
9
  * Place an `<ng-template>` tag with the `kendoGridEditTemplate` directive inside a `<kendo-grid-column>` tag to define the template.
10
10
  *
11
11
  * The template context includes:
@@ -15,7 +15,7 @@ import * as i2 from "../common/provider.service";
15
15
  /**
16
16
  * Represents the `remove` command of the Grid. Apply this directive to any `button` element
17
17
  * inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
18
- * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
18
+ * ([see example](slug:basics_editing_grid#editing-action-buttons)).
19
19
  * When you click the button with this directive, the
20
20
  * [`remove`]({% slug api_grid_gridcomponent %}#toc-remove) event fires.
21
21
  * The button with `kendoGridRemoveCommand` is automatically hidden when the row is in edit mode.
@@ -15,7 +15,7 @@ import * as i2 from "../common/provider.service";
15
15
  /**
16
16
  * Represents the `save` command of the Grid. Apply this directive to any `button`
17
17
  * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
18
- * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
18
+ * ([see example](slug:basics_editing_grid#editing-action-buttons)).
19
19
  * When you click the button with this directive, the
20
20
  * [`save`]({% slug api_grid_gridcomponent %}#toc-save) event fires.
21
21
  * The button with `kendoGridSaveCommand` is automatically hidden when the row is not in edit mode.
@@ -16,7 +16,7 @@ import * as i2 from "../editing/local-data-changes.service";
16
16
  import * as i3 from "../common/adaptiveness.service";
17
17
  /**
18
18
  * Represents the Kendo UI Grid external editing directive. The directive manages editing operations in the Grid when using the
19
- * External Form ([see example](slug:editing_directives_grid#external-editing)).
19
+ * External Form ([see example](slug:external_editing_grid#quick-setup)).
20
20
  *
21
21
  * @example
22
22
  * ```typescript
@@ -12,7 +12,7 @@ import * as i0 from "@angular/core";
12
12
  import * as i1 from "../grid.component";
13
13
  import * as i2 from "../editing/local-data-changes.service";
14
14
  /**
15
- * Represent the directive that manages in-cell editing operations in the Grid when using Reactive Forms ([see example]({% slug editing_directives_grid %}#toc-in-cell-editing)).
15
+ * Represent the directive that manages in-cell editing operations in the Grid when using Reactive Forms ([see example](slug:editing_incell_grid#quick-setup)).
16
16
  *
17
17
  * @example
18
18
  * ```html
@@ -11,7 +11,7 @@ import * as i0 from "@angular/core";
11
11
  import * as i1 from "../grid.component";
12
12
  import * as i2 from "../editing/local-data-changes.service";
13
13
  /**
14
- * Represents the directive that manages editing operations in the Grid when using Reactive Forms ([see example](slug:editing_directives_grid#toc-reactive-editing-directive)).
14
+ * Represents the directive that manages editing operations in the Grid when using Reactive Forms ([see example](slug:inline_editing_grid#using-reactive-forms)).
15
15
  *
16
16
  * @example
17
17
  * ```html
@@ -10,7 +10,7 @@ import * as i0 from "@angular/core";
10
10
  import * as i1 from "../grid.component";
11
11
  import * as i2 from "../editing/local-data-changes.service";
12
12
  /**
13
- * Represents the directive that manages editing operations in the Grid when using Template-Driven Angular Forms ([see example]({% slug editing_directives_grid %}#toc-template-editing-directive)).
13
+ * Represents the directive that manages editing operations in the Grid when using Template-Driven Angular Forms ([see example](slug:inline_editing_grid#using-template-driven-forms)).
14
14
  *
15
15
  * @example
16
16
  * ```html
@@ -45,11 +45,11 @@ export class FilterMenuInputWrapperComponent extends FilterInputWrapperComponent
45
45
  this.filterService.menuTabbingService.firstFocusable = this.firstOperatorDropDown;
46
46
  if (this.ctx.grid?.isActionSheetExpanded) {
47
47
  this.subs.add(this.adaptiveGridService.animationEnd.subscribe(() => {
48
- this.firstOperatorDropDown.focus();
48
+ this.firstOperatorDropDown.wrapper.nativeElement.focus({ preventScroll: true });
49
49
  }));
50
50
  }
51
51
  else {
52
- this.firstOperatorDropDown.focus();
52
+ this.firstOperatorDropDown.wrapper.nativeElement.focus({ preventScroll: true });
53
53
  }
54
54
  }
55
55
  }
@@ -139,7 +139,13 @@ export class FilterMenuComponent {
139
139
  this.cdr.markForCheck();
140
140
  }
141
141
  focusRoot() {
142
- this.isNavigable ? this.navigationService.focusCell(0, this.column.leafIndex) : this.anchor.nativeElement.focus();
142
+ if (this.isNavigable) {
143
+ this.navigationService.preventScroll = true;
144
+ this.navigationService.focusCell(0, this.column.leafIndex);
145
+ }
146
+ else {
147
+ this.anchor.nativeElement.focus({ preventScroll: true });
148
+ }
143
149
  }
144
150
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterMenuComponent, deps: [{ token: i1.FilterService }, { token: i2.SinglePopupService }, { token: i3.ContextService }, { token: i4.NavigationService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i5.AdaptiveGridService }, { token: i0.NgZone }, { token: i6.IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
145
151
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilterMenuComponent, isStandalone: true, selector: "kendo-grid-filter-menu", inputs: { column: "column", filter: "filter", tabIndex: "tabIndex" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, static: true }, { propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: `
@@ -2867,6 +2867,9 @@ export class GridComponent {
2867
2867
 
2868
2868
  i18n-aiAssistantOutputCardBodyContent="kendo.grid.aiAssistantOutputCardBodyContent|The success message dispayed in the AI Assistant Prompt Output Card's body"
2869
2869
  aiAssistantOutputCardBodyContent="Operation is successful. Data is:"
2870
+
2871
+ i18n-columnChooserSelectedColumnsCount="kendo.grid.columnChooserSelectedColumnsCount|The text displayed in the Column Chooser for the number of selected columns"
2872
+ columnChooserSelectedColumnsCount="{{ '{selectedColumnsCount} Selected items' }}"
2870
2873
  >
2871
2874
  </ng-container>
2872
2875
  <kendo-grid-toolbar
@@ -3724,6 +3727,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3724
3727
 
3725
3728
  i18n-aiAssistantOutputCardBodyContent="kendo.grid.aiAssistantOutputCardBodyContent|The success message dispayed in the AI Assistant Prompt Output Card's body"
3726
3729
  aiAssistantOutputCardBodyContent="Operation is successful. Data is:"
3730
+
3731
+ i18n-columnChooserSelectedColumnsCount="kendo.grid.columnChooserSelectedColumnsCount|The text displayed in the Column Chooser for the number of selected columns"
3732
+ columnChooserSelectedColumnsCount="{{ '{selectedColumnsCount} Selected items' }}"
3727
3733
  >
3728
3734
  </ng-container>
3729
3735
  <kendo-grid-toolbar