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

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 (32) 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 +30 -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/directives.d.ts +1 -2
  10. package/esm2022/adaptiveness/adaptive-renderer.component.mjs +26 -46
  11. package/esm2022/column-menu/column-chooser-content.component.mjs +306 -0
  12. package/esm2022/column-menu/column-chooser.component.mjs +39 -31
  13. package/esm2022/column-menu/column-list-kb-nav.service.mjs +3 -3
  14. package/esm2022/column-menu/column-list.component.mjs +258 -177
  15. package/esm2022/column-menu/column-menu-chooser.component.mjs +17 -36
  16. package/esm2022/column-menu/column-menu.component.mjs +12 -28
  17. package/esm2022/columns/column-base.mjs +8 -0
  18. package/esm2022/common/column-info.service.mjs +3 -0
  19. package/esm2022/directives.mjs +0 -2
  20. package/esm2022/grid.component.mjs +6 -0
  21. package/esm2022/grid.module.mjs +47 -48
  22. package/esm2022/localization/messages.mjs +12 -1
  23. package/esm2022/package-metadata.mjs +2 -2
  24. package/esm2022/rendering/toolbar/tools/column-chooser-tool.directive.mjs +38 -12
  25. package/fesm2022/progress-kendo-angular-grid.mjs +702 -367
  26. package/grid.module.d.ts +46 -47
  27. package/localization/messages.d.ts +10 -1
  28. package/package.json +21 -21
  29. package/rendering/toolbar/tools/column-chooser-tool.directive.d.ts +13 -1
  30. package/schematics/ngAdd/index.js +4 -4
  31. package/column-menu/column-chooser-item-checked.directive.d.ts +0 -21
  32. package/esm2022/column-menu/column-chooser-item-checked.directive.mjs +0 -45
@@ -6,17 +6,17 @@ import * as i0 from '@angular/core';
6
6
  import { EventEmitter, Injectable, SecurityContext, InjectionToken, Optional, Inject, Directive, SkipSelf, Input, isDevMode, QueryList, Component, ContentChildren, ContentChild, forwardRef, Host, Output, HostBinding, Pipe, TemplateRef, ChangeDetectionStrategy, ViewChildren, ViewChild, Self, NgZone, HostListener, ElementRef, ViewContainerRef, ViewEncapsulation, inject, Injector, NgModule } from '@angular/core';
7
7
  import { merge, of, Subject, zip as zip$1, from, Subscription, interval, fromEvent, Observable, BehaviorSubject } from 'rxjs';
8
8
  import * as i1$3 from '@progress/kendo-angular-common';
9
- import { isDocumentAvailable, Keys, hasClasses as hasClasses$1, isPresent as isPresent$1, normalizeNumpadKeys, anyChanged, TemplateContextDirective, DraggableDirective, EventsOutsideAngularDirective, replaceMessagePlaceholder, isChanged as isChanged$1, KendoInput, guid, closest as closest$1, hasObservers, ResizeSensorComponent, isFirefox, firefoxMaxHeight, closestInScope as closestInScope$1, isFocusable as isFocusable$1, PreventableEvent as PreventableEvent$1, getLicenseMessage, shouldShowValidationUI, WatermarkOverlayComponent, ResizeBatchService } from '@progress/kendo-angular-common';
9
+ import { isDocumentAvailable, Keys, hasClasses as hasClasses$1, isPresent as isPresent$1, normalizeNumpadKeys, anyChanged, TemplateContextDirective, DraggableDirective, EventsOutsideAngularDirective, replaceMessagePlaceholder, isChanged as isChanged$1, KendoInput, guid, PrefixTemplateDirective, closest as closest$1, hasObservers, ResizeSensorComponent, isFirefox, firefoxMaxHeight, closestInScope as closestInScope$1, isFocusable as isFocusable$1, PreventableEvent as PreventableEvent$1, getLicenseMessage, shouldShowValidationUI, WatermarkOverlayComponent, ResizeBatchService } from '@progress/kendo-angular-common';
10
10
  import * as i1 from '@angular/platform-browser';
11
11
  import * as i1$1 from '@progress/kendo-angular-icons';
12
12
  import { IconWrapperComponent, IconsService, KENDO_ICONS } from '@progress/kendo-angular-icons';
13
- import { plusIcon, cancelIcon, lockIcon, unlockIcon, caretAltDownIcon, caretAltRightIcon, caretAltLeftIcon, arrowLeftIcon, arrowRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterClearIcon, filterIcon, checkIcon, arrowRotateCcwIcon, columnsIcon, pencilIcon, saveIcon, trashIcon, fileExcelIcon, filePdfIcon, sparklesIcon, chevronUpIcon, chevronDownIcon, chevronRightIcon, displayInlineFlexIcon, maxWidthIcon, stickIcon, unstickIcon, setColumnPositionIcon, slidersIcon, moreVerticalIcon, reorderIcon, minusIcon, insertMiddleIcon, xIcon, xCircleIcon, plusCircleIcon, chevronLeftIcon, tableWizardIcon, undoIcon, redoIcon, arrowsSwapIcon, groupIcon } from '@progress/kendo-svg-icons';
13
+ import { plusIcon, cancelIcon, lockIcon, unlockIcon, caretAltDownIcon, caretAltRightIcon, caretAltLeftIcon, arrowLeftIcon, arrowRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterClearIcon, filterIcon, searchIcon, checkIcon, arrowRotateCcwIcon, columnsIcon, pencilIcon, saveIcon, trashIcon, fileExcelIcon, filePdfIcon, sparklesIcon, chevronUpIcon, chevronDownIcon, chevronRightIcon, displayInlineFlexIcon, maxWidthIcon, stickIcon, unstickIcon, setColumnPositionIcon, slidersIcon, moreVerticalIcon, reorderIcon, minusIcon, insertMiddleIcon, xIcon, xCircleIcon, plusCircleIcon, chevronLeftIcon, tableWizardIcon, undoIcon, redoIcon, arrowsSwapIcon, groupIcon } from '@progress/kendo-svg-icons';
14
14
  import { switchMap, take, map, filter, takeUntil, switchMapTo, delay, tap, throttleTime, debounceTime, distinctUntilChanged, skip, auditTime, bufferCount, flatMap } from 'rxjs/operators';
15
15
  import * as i1$2 from '@progress/kendo-angular-l10n';
16
16
  import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
17
17
  import * as i53 from '@progress/kendo-angular-pager';
18
18
  import { PagerContextService, PagerNavigationService, PagerTemplateDirective, KENDO_PAGER } from '@progress/kendo-angular-pager';
19
- import { orderBy, isCompositeFilterDescriptor, groupBy, filterBy, process } from '@progress/kendo-data-query';
19
+ import { orderBy, isCompositeFilterDescriptor, filterBy, groupBy, process } from '@progress/kendo-data-query';
20
20
  import { NgFor, NgIf, NgTemplateOutlet, NgSwitch, NgSwitchCase, NgClass, NgStyle, NgSwitchDefault, KeyValuePipe } from '@angular/common';
21
21
  import { getter } from '@progress/kendo-common';
22
22
  import * as i1$4 from '@progress/kendo-angular-intl';
@@ -2218,6 +2218,14 @@ class ColumnBase {
2218
2218
  * @hidden
2219
2219
  */
2220
2220
  initialMinResizableWidth;
2221
+ /**
2222
+ * @hidden
2223
+ */
2224
+ initiallyChecked;
2225
+ /**
2226
+ * @hidden
2227
+ */
2228
+ currentlyChecked;
2221
2229
  /**
2222
2230
  * @hidden
2223
2231
  */
@@ -5094,6 +5102,9 @@ class ColumnInfoService {
5094
5102
  return this.list().filter(column => !column.isVisible);
5095
5103
  }
5096
5104
  get leafNamedColumns() {
5105
+ if (!this.list) {
5106
+ return [];
5107
+ }
5097
5108
  const columns = expandColumns(this.list().filterSort(column => !column.isColumnGroup))
5098
5109
  .filter(column => column.matchesMedia && column.displayTitle);
5099
5110
  return orderBy(columns, [{ field: 'locked', dir: 'desc' }]);
@@ -11989,44 +12000,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
11989
12000
  args: ['class.k-filter-row']
11990
12001
  }] } });
11991
12002
 
11992
- /**
11993
- * @hidden
11994
- */
11995
- class ColumnMenuChooserItemCheckedDirective {
11996
- host;
11997
- kendoColumnMenuChooserItemChecked;
11998
- checkbox;
11999
- checkedChangeSub = new Subscription();
12000
- constructor(host) {
12001
- this.host = host;
12002
- }
12003
- ngAfterViewInit() {
12004
- this.checkedChangeSub.add(this.checkbox.checkedStateChange.subscribe(() => {
12005
- this.kendoColumnMenuChooserItemChecked = this.checkbox.checkedState === true;
12006
- }));
12007
- }
12008
- ngOnDestroy() {
12009
- this.checkedChangeSub.unsubscribe();
12010
- }
12011
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuChooserItemCheckedDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
12012
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ColumnMenuChooserItemCheckedDirective, isStandalone: true, selector: "[kendoColumnMenuChooserItemChecked]", inputs: { kendoColumnMenuChooserItemChecked: "kendoColumnMenuChooserItemChecked" }, host: { properties: { "attr.aria-checked": "this.kendoColumnMenuChooserItemChecked" } }, queries: [{ propertyName: "checkbox", first: true, predicate: CheckBoxComponent, descendants: true }], ngImport: i0 });
12013
- }
12014
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuChooserItemCheckedDirective, decorators: [{
12015
- type: Directive,
12016
- args: [{
12017
- selector: '[kendoColumnMenuChooserItemChecked]',
12018
- standalone: true
12019
- }]
12020
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { kendoColumnMenuChooserItemChecked: [{
12021
- type: HostBinding,
12022
- args: ['attr.aria-checked']
12023
- }, {
12024
- type: Input
12025
- }], checkbox: [{
12026
- type: ContentChild,
12027
- args: [CheckBoxComponent]
12028
- }] } });
12029
-
12030
12003
  /**
12031
12004
  * Represents the service passed to the [`ColumnMenuTemplate`]({% slug api_grid_columnmenutemplatedirective %}) directive.
12032
12005
  *
@@ -12112,12 +12085,12 @@ class ColumnListKeyboardNavigation {
12112
12085
  this.toggle(this.activeIndex, true);
12113
12086
  }
12114
12087
  toggle(index, active) {
12115
- const element = this.items[index]?.host.nativeElement;
12116
- element && this.renderer.setAttribute(this.items[index].host.nativeElement, 'tabindex', active ? '0' : '-1');
12088
+ const element = this.items[index]?.hostElement.nativeElement.closest('.k-column-list-item');
12089
+ element && this.renderer.setAttribute(element, 'tabindex', active ? '0' : '-1');
12117
12090
  active && element?.focus();
12118
12091
  }
12119
12092
  toggleCheckedState() {
12120
- this.items[this.activeIndex].host.nativeElement.firstElementChild.click();
12093
+ this.items[this.activeIndex].hostElement.nativeElement.closest('.k-column-list-item').firstElementChild.click();
12121
12094
  }
12122
12095
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnListKeyboardNavigation, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
12123
12096
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnListKeyboardNavigation });
@@ -12134,10 +12107,10 @@ class ColumnListComponent {
12134
12107
  ngZone;
12135
12108
  renderer;
12136
12109
  listNavigationService;
12110
+ cdr;
12111
+ columnInfoService;
12137
12112
  adaptiveGridService;
12138
12113
  ctx;
12139
- checkIcon = checkIcon;
12140
- arrowRotateCcwIcon = arrowRotateCcwIcon;
12141
12114
  className = true;
12142
12115
  get listSizeMd() {
12143
12116
  return !(this.ctx?.grid?.isActionSheetExpanded);
@@ -12149,40 +12122,59 @@ class ColumnListComponent {
12149
12122
  apply = new EventEmitter();
12150
12123
  columnChange = new EventEmitter();
12151
12124
  set columns(value) {
12125
+ this.listNavigationService.items = this.checkboxes?.toArray();
12152
12126
  this._columns = value.filter(column => column.includeInChooser !== false);
12153
- this.allColumns = value;
12154
- this.updateColumnState();
12155
12127
  }
12156
12128
  get columns() {
12157
12129
  return this._columns;
12158
12130
  }
12159
- showActions = true;
12131
+ get checkedCheckboxesLength() {
12132
+ return this.columns?.filter(column => column.currentlyChecked).length;
12133
+ }
12134
+ filteredColumns = [];
12160
12135
  autoSync = true;
12136
+ showSelectAll = false;
12137
+ isFiltered = false;
12161
12138
  ariaLabel;
12162
12139
  allowHideAll = false;
12163
12140
  applyText;
12164
12141
  resetText;
12165
- actionsClass = 'k-actions k-actions-stretched k-actions-horizontal';
12166
12142
  isLast;
12167
12143
  isExpanded;
12168
12144
  service;
12145
+ filterable = false;
12146
+ checkboxes;
12147
+ get columnCheckboxes() {
12148
+ if (this.showSelectAll) {
12149
+ return this.checkboxes?.toArray().slice(1);
12150
+ }
12151
+ return this.checkboxes?.toArray();
12152
+ }
12153
+ get lockedColumnCheckboxes() {
12154
+ return this.columnCheckboxes?.filter((checkbox, index) => this.filteredColumns[index]?.locked);
12155
+ }
12156
+ get unlockedColumnCheckboxes() {
12157
+ return this.columnCheckboxes?.filter((checkbox, index) => !this.filteredColumns[index]?.locked);
12158
+ }
12159
+ get checkedCheckboxes() {
12160
+ if (this.showSelectAll && !this.isFiltered) {
12161
+ return this.checkboxes?.toArray().slice(1).filter(checkbox => checkbox.checkedState).length;
12162
+ }
12163
+ return this.checkboxes?.filter(checkbox => checkbox.checkedState).length;
12164
+ }
12169
12165
  resetButton;
12170
12166
  applyButton;
12171
- options;
12172
- checkboxes;
12173
- hasLocked;
12174
- hasVisibleLocked;
12175
- unlockedCount = 0;
12176
- hasUnlockedFiltered;
12177
- hasFiltered;
12167
+ filterInput;
12178
12168
  _columns;
12179
- allColumns;
12180
12169
  domSubscriptions = new Subscription();
12181
- constructor(element, ngZone, renderer, listNavigationService, adaptiveGridService, ctx) {
12170
+ lastDisabledCheckbox;
12171
+ constructor(element, ngZone, renderer, listNavigationService, cdr, columnInfoService, adaptiveGridService, ctx) {
12182
12172
  this.element = element;
12183
12173
  this.ngZone = ngZone;
12184
12174
  this.renderer = renderer;
12185
12175
  this.listNavigationService = listNavigationService;
12176
+ this.cdr = cdr;
12177
+ this.columnInfoService = columnInfoService;
12186
12178
  this.adaptiveGridService = adaptiveGridService;
12187
12179
  this.ctx = ctx;
12188
12180
  }
@@ -12192,17 +12184,17 @@ class ColumnListComponent {
12192
12184
  }
12193
12185
  this.ngZone.runOutsideAngular(() => {
12194
12186
  this.domSubscriptions.add(this.renderer.listen(this.element.nativeElement, 'click', (e) => {
12195
- e.stopImmediatePropagation();
12196
- this.ngZone.onStable.pipe(take(1)).subscribe(() => {
12197
- this.handleCheckBoxClick(e);
12198
- });
12187
+ if (e.target.classList.contains('k-checkbox')) {
12188
+ const label = e.target.closest('.k-column-list-item');
12189
+ this.setTabindex(label);
12190
+ }
12199
12191
  }));
12200
12192
  this.domSubscriptions.add(this.renderer.listen(this.element.nativeElement, 'keydown', this.onKeydown));
12201
12193
  });
12202
12194
  }
12203
12195
  ngAfterViewInit() {
12204
12196
  this.ngZone.onStable.pipe(take(1)).subscribe(() => {
12205
- this.listNavigationService.items = this.options.toArray();
12197
+ this.listNavigationService.items = this.checkboxes.toArray();
12206
12198
  if (this.adaptiveGridService?.viewType !== 'columnMenu') {
12207
12199
  this.listNavigationService.toggle(0, true);
12208
12200
  }
@@ -12219,38 +12211,97 @@ class ColumnListComponent {
12219
12211
  return;
12220
12212
  }
12221
12213
  if (changes['isLast'] && this.isLast) {
12222
- this.service.menuTabbingService.lastFocusable = this.applyButton.nativeElement;
12214
+ this.service.menuTabbingService.lastFocusable = this.applyButton?.nativeElement;
12223
12215
  }
12224
12216
  if (changes['isExpanded'] && this.isExpanded && this.isLast && this.applyButton) {
12225
12217
  this.service.menuTabbingService.lastFocusable = this.applyButton.nativeElement;
12226
12218
  }
12227
12219
  }
12220
+ onSelectAllClick(e) {
12221
+ if (e.target.classList.contains('k-checkbox')) {
12222
+ return;
12223
+ }
12224
+ e.preventDefault();
12225
+ const label = e.target.closest('.k-column-list-item');
12226
+ const input = label?.querySelector('input');
12227
+ input.click();
12228
+ }
12229
+ onSelectAllCheckboxChange(checkedState) {
12230
+ if (!checkedState && !this.allowHideAll) {
12231
+ const columnsToKeep = [];
12232
+ if (!columnsToKeep.length) {
12233
+ const unlockedColumns = this.filteredColumns.filter(c => !c.locked);
12234
+ if (unlockedColumns.length > 0) {
12235
+ columnsToKeep.push(unlockedColumns[0]);
12236
+ }
12237
+ }
12238
+ if (this.lockedColumnCheckboxes.length > 0) {
12239
+ const lockedColumns = this.filteredColumns.filter(c => c.locked);
12240
+ if (lockedColumns.length > 0) {
12241
+ columnsToKeep.unshift(lockedColumns[0]);
12242
+ }
12243
+ }
12244
+ this.filteredColumns.forEach(column => {
12245
+ const isChecked = columnsToKeep.indexOf(column) >= 0;
12246
+ column.currentlyChecked = isChecked;
12247
+ });
12248
+ }
12249
+ else {
12250
+ this.filteredColumns.forEach(column => {
12251
+ column.currentlyChecked = checkedState;
12252
+ });
12253
+ }
12254
+ if (this.autoSync) {
12255
+ const changedColumns = this.filteredColumns.filter(column => column.initiallyChecked !== column.currentlyChecked);
12256
+ if (changedColumns.length > 0) {
12257
+ changedColumns.forEach(column => {
12258
+ column.hidden = !column.currentlyChecked;
12259
+ column.initiallyChecked = column.currentlyChecked;
12260
+ });
12261
+ this.ngZone.run(() => {
12262
+ this.columnChange.emit(changedColumns);
12263
+ });
12264
+ }
12265
+ }
12266
+ this.filteredColumns = [...this.filteredColumns];
12267
+ this.updateDisabled();
12268
+ }
12228
12269
  ngOnDestroy() {
12229
12270
  this.domSubscriptions.unsubscribe();
12230
12271
  }
12231
- isDisabled(column) {
12232
- return !(this.allowHideAll || this.hasFiltered || column.hidden || this.columns.find(current => current !== column && !current.hidden)) ||
12233
- (this.hasVisibleLocked && !this.hasUnlockedFiltered && this.unlockedCount === 1 && !column.locked && !column.hidden);
12234
- }
12235
12272
  cancelChanges() {
12236
- this.checkboxes.forEach((element, index) => {
12237
- element.checkedState = !this.columns[index].hidden;
12273
+ this.columns.forEach((column) => {
12274
+ column.currentlyChecked = !column.hidden;
12275
+ column.initiallyChecked = !column.hidden;
12276
+ });
12277
+ this.filteredColumns.forEach((column) => {
12278
+ column.currentlyChecked = !column.hidden;
12279
+ column.initiallyChecked = !column.hidden;
12238
12280
  });
12239
12281
  this.updateDisabled();
12240
12282
  this.reset.emit();
12241
12283
  }
12242
12284
  applyChanges() {
12243
12285
  const changed = [];
12244
- this.checkboxes.forEach((item, index) => {
12245
- const column = this.columns[index];
12246
- const hidden = !item.checkedState;
12247
- if (Boolean(column.hidden) !== hidden) {
12248
- column.hidden = hidden;
12286
+ this.columns.forEach(column => {
12287
+ if (column.initiallyChecked !== column.currentlyChecked) {
12288
+ column.hidden = !column.currentlyChecked;
12249
12289
  changed.push(column);
12250
12290
  }
12251
12291
  });
12252
12292
  this.updateDisabled();
12253
12293
  this.apply.emit(changed);
12294
+ if (changed.length) {
12295
+ this.cdr.markForCheck();
12296
+ this.columnInfoService?.changeVisibility(changed);
12297
+ }
12298
+ }
12299
+ focusActiveColumn(e) {
12300
+ const keyboardEvent = e;
12301
+ if (keyboardEvent.shiftKey) {
12302
+ this.listNavigationService.toggle(this.listNavigationService.activeIndex, true);
12303
+ e.preventDefault();
12304
+ }
12254
12305
  }
12255
12306
  onTab(e) {
12256
12307
  if (this.isLast) {
@@ -12258,6 +12309,9 @@ class ColumnListComponent {
12258
12309
  if (this.service) {
12259
12310
  this.service.menuTabbingService.firstFocusable.focus();
12260
12311
  }
12312
+ else if (this.filterable) {
12313
+ this.filterInput?.input.nativeElement.focus();
12314
+ }
12261
12315
  else {
12262
12316
  this.listNavigationService.toggle(this.listNavigationService.activeIndex, true);
12263
12317
  }
@@ -12268,10 +12322,30 @@ class ColumnListComponent {
12268
12322
  if (code !== Keys.Tab) {
12269
12323
  e.preventDefault();
12270
12324
  }
12325
+ if (code === 'Tab' && e.shiftKey) {
12326
+ this.resetButton?.nativeElement.focus();
12327
+ e.preventDefault();
12328
+ }
12271
12329
  if (code === 'Tab' && !e.shiftKey && this.autoSync) {
12330
+ if (this.filterable) {
12331
+ this.filterInput?.input.nativeElement.focus();
12332
+ }
12333
+ e.preventDefault();
12334
+ }
12335
+ if (code === 'Tab' && e.shiftKey && this.autoSync && this.filterable) {
12336
+ this.filterInput?.input.nativeElement.focus();
12337
+ e.preventDefault();
12338
+ }
12339
+ if (code === 'Tab' && !e.shiftKey && !this.autoSync) {
12340
+ this.applyButton?.nativeElement.focus();
12272
12341
  e.preventDefault();
12273
12342
  }
12274
12343
  if (code === 'Tab' && e.shiftKey) {
12344
+ if (!this.autoSync && this.filterable && e.target.matches('.k-column-list-item')) {
12345
+ this.filterInput?.input.nativeElement.focus();
12346
+ e.preventDefault();
12347
+ return;
12348
+ }
12275
12349
  this.ngZone.run(() => {
12276
12350
  if (e.target.matches('.k-column-list-item')) {
12277
12351
  e.preventDefault();
@@ -12290,46 +12364,33 @@ class ColumnListComponent {
12290
12364
  }
12291
12365
  };
12292
12366
  updateDisabled() {
12293
- if (this.allowHideAll && !this.hasLocked) {
12367
+ const hasLockedColumns = this.columns.filter(c => c.locked).length > 0;
12368
+ if (this.allowHideAll && !hasLockedColumns) {
12294
12369
  return;
12295
12370
  }
12296
- // Cache visible columns to avoid repeated checks
12297
- const visibleColumns = [];
12298
- const columnMap = new Map();
12299
- this.checkboxes.forEach((checkbox, index) => {
12300
- // Reset all disabled states first
12301
- this.setDisabledState(checkbox, false);
12302
- if (checkbox.checkedState) {
12303
- visibleColumns.push({ checkbox, index });
12304
- columnMap.set(index, this.columns[index]);
12305
- }
12306
- });
12307
- // Only apply disabled states where needed
12308
- if (!this.allowHideAll && visibleColumns.length === 1 && !this.hasFiltered) {
12309
- this.setDisabledState(visibleColumns[0].checkbox, true);
12310
- }
12311
- else if (this.hasLocked && !this.hasUnlockedFiltered) {
12312
- const checkedUnlocked = visibleColumns.filter(item => !columnMap.get(item.index).locked);
12313
- if (checkedUnlocked.length === 1) {
12314
- this.setDisabledState(checkedUnlocked[0].checkbox, true);
12315
- }
12316
- }
12317
- }
12318
- updateColumnState() {
12319
- this.hasLocked = this.allColumns.filter(column => column.locked && (!column.hidden || column.includeInChooser !== false)).length > 0;
12320
- this.hasVisibleLocked = this.allColumns.filter(column => column.locked && !column.hidden).length > 0;
12321
- this.unlockedCount = this.columns.filter(column => !column.locked && !column.hidden).length;
12322
- const filteredColumns = this.allColumns.filter(column => column.includeInChooser === false && !column.hidden);
12323
- if (filteredColumns.length) {
12324
- this.hasFiltered = filteredColumns.length > 0;
12325
- this.hasUnlockedFiltered = filteredColumns.filter(column => !column.locked).length > 0;
12371
+ const currentlyCheckedUnlockedColumns = this.columns.filter(column => !column.locked && column.currentlyChecked).length;
12372
+ const shouldEnforceMinimumColumns = hasLockedColumns || !this.allowHideAll;
12373
+ if (shouldEnforceMinimumColumns && currentlyCheckedUnlockedColumns === 1) {
12374
+ this.disableFirstUnlockedCheckedCheckbox();
12326
12375
  }
12327
12376
  else {
12328
- this.hasFiltered = false;
12329
- this.hasUnlockedFiltered = false;
12377
+ this.enableLastDisabledColumn();
12330
12378
  }
12331
12379
  }
12380
+ disableFirstUnlockedCheckedCheckbox() {
12381
+ const index = this.filteredColumns.filter(c => !c.locked).findIndex(column => column.currentlyChecked);
12382
+ const firstUnlockedCheckedCheckbox = this.unlockedColumnCheckboxes[index];
12383
+ this.setDisabledState(firstUnlockedCheckedCheckbox, true);
12384
+ this.lastDisabledCheckbox = firstUnlockedCheckedCheckbox;
12385
+ }
12386
+ enableLastDisabledColumn() {
12387
+ this.setDisabledState(this.lastDisabledCheckbox, false);
12388
+ this.lastDisabledCheckbox = null;
12389
+ }
12332
12390
  setDisabledState(checkbox, disabled) {
12391
+ if (!checkbox) {
12392
+ return;
12393
+ }
12333
12394
  if (checkbox.disabled !== disabled) {
12334
12395
  this.ngZone.runOutsideAngular(() => {
12335
12396
  checkbox.disabled = disabled;
@@ -12346,85 +12407,87 @@ class ColumnListComponent {
12346
12407
  });
12347
12408
  }
12348
12409
  }
12349
- handleCheckBoxClick = (e) => {
12410
+ checkBoxClick(e) {
12350
12411
  const closestItem = e.target.closest('.k-column-list-item');
12351
- if (closestItem) {
12352
- const checkboxElement = closestItem.querySelector('.k-checkbox-wrap');
12353
- const index = parseInt(checkboxElement.firstElementChild.getAttribute('data-index'), 10);
12354
- const checkbox = this.checkboxes.toArray()[index];
12355
- if (e.target === checkbox.input.nativeElement) {
12356
- closestItem.focus();
12357
- e.target.classList.remove('k-focus');
12358
- }
12359
- if (this.autoSync) {
12360
- if (!this.columns[index]) {
12361
- return;
12362
- }
12363
- const column = this.columns[index];
12364
- const hidden = !checkbox.checkedState;
12365
- if (Boolean(column.hidden) !== hidden) {
12366
- this.ngZone.runOutsideAngular(() => {
12367
- column.hidden = hidden;
12368
- this.ngZone.run(() => {
12369
- this.columnChange.emit([column]);
12370
- });
12371
- });
12372
- }
12373
- }
12374
- else {
12375
- this.ngZone.run(() => this.updateDisabled());
12376
- }
12377
- if (index !== this.listNavigationService.activeIndex) {
12378
- this.listNavigationService.toggle(this.listNavigationService.activeIndex, false);
12379
- this.listNavigationService.activeIndex = index;
12380
- this.listNavigationService.toggle(index, true);
12412
+ if (!closestItem)
12413
+ return;
12414
+ const checkboxElement = closestItem.querySelector('.k-checkbox-wrap');
12415
+ const input = checkboxElement?.querySelector('input');
12416
+ if (e.target === input) {
12417
+ return;
12418
+ }
12419
+ e.preventDefault();
12420
+ if (input) {
12421
+ const index = parseInt(input.getAttribute('data-index'), 10);
12422
+ const column = this.filteredColumns[index];
12423
+ const isDisabled = checkboxElement.classList.contains('k-disabled');
12424
+ if (column && !isDisabled) {
12425
+ input.click();
12381
12426
  }
12382
12427
  }
12383
- };
12384
- 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: ColumnListKeyboardNavigation }, { token: AdaptiveGridService, optional: true }, { token: ContextService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
12385
- 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.listSizeMd", "class.k-column-list-lg": "this.listSizeLg" } }, 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: `
12428
+ }
12429
+ onCheckboxChange(checkedState, column, _index) {
12430
+ column.currentlyChecked = checkedState;
12431
+ if (this.autoSync) {
12432
+ column.hidden = !checkedState;
12433
+ column.initiallyChecked = checkedState;
12434
+ this.columnChange.emit([column]);
12435
+ }
12436
+ this.updateDisabled();
12437
+ }
12438
+ setTabindex(labelElement) {
12439
+ if (!labelElement) {
12440
+ return;
12441
+ }
12442
+ const allLabels = this.checkboxes.map(checkbox => checkbox.hostElement.nativeElement.parentElement);
12443
+ allLabels.forEach((label) => {
12444
+ const input = label.querySelector('input');
12445
+ input.classList.remove('k-focus');
12446
+ this.renderer.removeAttribute(label, 'tabindex');
12447
+ });
12448
+ this.renderer.setAttribute(labelElement, 'tabindex', '0');
12449
+ labelElement.focus();
12450
+ this.listNavigationService.activeIndex = allLabels.indexOf(labelElement);
12451
+ }
12452
+ 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: ColumnListKeyboardNavigation }, { token: i0.ChangeDetectorRef }, { token: ColumnInfoService, optional: true }, { token: AdaptiveGridService, optional: true }, { token: ContextService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
12453
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnListComponent, isStandalone: true, selector: "kendo-grid-columnlist", inputs: { columns: "columns", filteredColumns: "filteredColumns", autoSync: "autoSync", showSelectAll: "showSelectAll", isFiltered: "isFiltered", ariaLabel: "ariaLabel", allowHideAll: "allowHideAll", applyText: "applyText", resetText: "resetText", isLast: "isLast", isExpanded: "isExpanded", service: "service", filterable: "filterable" }, outputs: { reset: "reset", apply: "apply", columnChange: "columnChange" }, host: { properties: { "class.k-column-list-wrapper": "this.className", "class.k-column-list-md": "this.listSizeMd", "class.k-column-list-lg": "this.listSizeLg" } }, providers: [ColumnListKeyboardNavigation], viewQueries: [{ propertyName: "checkboxes", predicate: CheckBoxComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
12386
12454
  <div
12387
12455
  class="k-column-list"
12388
12456
  role="listbox"
12389
12457
  aria-multiselectable="true"
12390
12458
  [attr.aria-label]="ariaLabel">
12391
12459
  <label
12392
- *ngFor="let column of columns; let index = index;"
12460
+ *ngIf="showSelectAll"
12393
12461
  class='k-column-list-item'
12394
- [kendoColumnMenuChooserItemChecked]="!column.hidden"
12395
- role="option">
12462
+ role="option"
12463
+ [kendoEventsOutsideAngular]="{click: onSelectAllClick}"
12464
+ [scope]="this">
12396
12465
  <kendo-checkbox
12466
+ #checkbox
12467
+ [inputAttributes]="{'data-index': '0'}"
12468
+ [tabindex]="-1"
12469
+ [checkedState]="checkedCheckboxesLength === columns.length"
12470
+ (checkedStateChange)="onSelectAllCheckboxChange($event)"
12471
+ ></kendo-checkbox>
12472
+ <span class="k-checkbox-label">{{ 'Select all' }}</span>
12473
+ </label>
12474
+ <label
12475
+ *ngFor="let column of filteredColumns; let index = index;"
12476
+ class='k-column-list-item'
12477
+ role="option"
12478
+ [kendoEventsOutsideAngular]="{click: checkBoxClick}"
12479
+ [scope]="this">
12480
+ <kendo-checkbox
12481
+ #checkbox
12397
12482
  [inputAttributes]="{'data-index': index.toString()}"
12398
12483
  [tabindex]="-1"
12399
- [checkedState]="!column.hidden"
12400
- [disabled]="isDisabled(column)"
12484
+ [checkedState]="column.currentlyChecked"
12485
+ (checkedStateChange)="onCheckboxChange($event, column, index)"
12401
12486
  ></kendo-checkbox>
12402
12487
  <span class="k-checkbox-label">{{ column.displayTitle }}</span>
12403
12488
  </label>
12404
12489
  </div>
12405
- <div [ngClass]="actionsClass" *ngIf="!autoSync && showActions">
12406
- <button
12407
- #applyButton
12408
- kendoButton
12409
- type="button"
12410
- icon="check"
12411
- [svgIcon]="checkIcon"
12412
- themeColor="primary"
12413
- (click)="applyChanges()"
12414
- (keydown.enter)="$event.preventDefault(); $event.stopPropagation(); applyChanges();"
12415
- (keydown.space)="$event.preventDefault(); $event.stopPropagation(); applyChanges();">{{ applyText }}</button>
12416
- <button
12417
- #resetButton
12418
- kendoButton
12419
- type="button"
12420
- icon="reset"
12421
- [svgIcon]="arrowRotateCcwIcon"
12422
- (keydown.tab)="onTab($event)"
12423
- (click)="cancelChanges()"
12424
- (keydown.enter)="$event.preventDefault(); $event.stopPropagation(); cancelChanges();"
12425
- (keydown.space)="$event.preventDefault(); $event.stopPropagation(); cancelChanges();">{{ resetText }}</button>
12426
- </div>
12427
- `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: ColumnMenuChooserItemCheckedDirective, selector: "[kendoColumnMenuChooserItemChecked]", inputs: ["kendoColumnMenuChooserItemChecked"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }, { 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"] }] });
12490
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
12428
12491
  }
12429
12492
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnListComponent, decorators: [{
12430
12493
  type: Component,
@@ -12438,46 +12501,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
12438
12501
  aria-multiselectable="true"
12439
12502
  [attr.aria-label]="ariaLabel">
12440
12503
  <label
12441
- *ngFor="let column of columns; let index = index;"
12504
+ *ngIf="showSelectAll"
12442
12505
  class='k-column-list-item'
12443
- [kendoColumnMenuChooserItemChecked]="!column.hidden"
12444
- role="option">
12506
+ role="option"
12507
+ [kendoEventsOutsideAngular]="{click: onSelectAllClick}"
12508
+ [scope]="this">
12445
12509
  <kendo-checkbox
12510
+ #checkbox
12511
+ [inputAttributes]="{'data-index': '0'}"
12512
+ [tabindex]="-1"
12513
+ [checkedState]="checkedCheckboxesLength === columns.length"
12514
+ (checkedStateChange)="onSelectAllCheckboxChange($event)"
12515
+ ></kendo-checkbox>
12516
+ <span class="k-checkbox-label">{{ 'Select all' }}</span>
12517
+ </label>
12518
+ <label
12519
+ *ngFor="let column of filteredColumns; let index = index;"
12520
+ class='k-column-list-item'
12521
+ role="option"
12522
+ [kendoEventsOutsideAngular]="{click: checkBoxClick}"
12523
+ [scope]="this">
12524
+ <kendo-checkbox
12525
+ #checkbox
12446
12526
  [inputAttributes]="{'data-index': index.toString()}"
12447
12527
  [tabindex]="-1"
12448
- [checkedState]="!column.hidden"
12449
- [disabled]="isDisabled(column)"
12528
+ [checkedState]="column.currentlyChecked"
12529
+ (checkedStateChange)="onCheckboxChange($event, column, index)"
12450
12530
  ></kendo-checkbox>
12451
12531
  <span class="k-checkbox-label">{{ column.displayTitle }}</span>
12452
12532
  </label>
12453
12533
  </div>
12454
- <div [ngClass]="actionsClass" *ngIf="!autoSync && showActions">
12455
- <button
12456
- #applyButton
12457
- kendoButton
12458
- type="button"
12459
- icon="check"
12460
- [svgIcon]="checkIcon"
12461
- themeColor="primary"
12462
- (click)="applyChanges()"
12463
- (keydown.enter)="$event.preventDefault(); $event.stopPropagation(); applyChanges();"
12464
- (keydown.space)="$event.preventDefault(); $event.stopPropagation(); applyChanges();">{{ applyText }}</button>
12465
- <button
12466
- #resetButton
12467
- kendoButton
12468
- type="button"
12469
- icon="reset"
12470
- [svgIcon]="arrowRotateCcwIcon"
12471
- (keydown.tab)="onTab($event)"
12472
- (click)="cancelChanges()"
12473
- (keydown.enter)="$event.preventDefault(); $event.stopPropagation(); cancelChanges();"
12474
- (keydown.space)="$event.preventDefault(); $event.stopPropagation(); cancelChanges();">{{ resetText }}</button>
12475
- </div>
12476
12534
  `,
12477
12535
  standalone: true,
12478
- imports: [NgFor, ColumnMenuChooserItemCheckedDirective, NgIf, NgClass, CheckBoxComponent, ButtonComponent]
12536
+ imports: [NgFor, NgIf, CheckBoxComponent, EventsOutsideAngularDirective]
12479
12537
  }]
12480
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: ColumnListKeyboardNavigation }, { type: AdaptiveGridService, decorators: [{
12538
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: ColumnListKeyboardNavigation }, { type: i0.ChangeDetectorRef }, { type: ColumnInfoService, decorators: [{
12539
+ type: Optional
12540
+ }] }, { type: AdaptiveGridService, decorators: [{
12481
12541
  type: Optional
12482
12542
  }] }, { type: ContextService, decorators: [{
12483
12543
  type: Optional
@@ -12498,10 +12558,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
12498
12558
  type: Output
12499
12559
  }], columns: [{
12500
12560
  type: Input
12501
- }], showActions: [{
12561
+ }], filteredColumns: [{
12502
12562
  type: Input
12503
12563
  }], autoSync: [{
12504
12564
  type: Input
12565
+ }], showSelectAll: [{
12566
+ type: Input
12567
+ }], isFiltered: [{
12568
+ type: Input
12505
12569
  }], ariaLabel: [{
12506
12570
  type: Input
12507
12571
  }], allowHideAll: [{
@@ -12510,28 +12574,307 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
12510
12574
  type: Input
12511
12575
  }], resetText: [{
12512
12576
  type: Input
12513
- }], actionsClass: [{
12514
- type: Input
12515
12577
  }], isLast: [{
12516
12578
  type: Input
12517
12579
  }], isExpanded: [{
12518
12580
  type: Input
12519
12581
  }], service: [{
12520
12582
  type: Input
12521
- }], resetButton: [{
12522
- type: ViewChild,
12523
- args: ['resetButton', { static: false }]
12524
- }], applyButton: [{
12525
- type: ViewChild,
12526
- args: ['applyButton', { static: false }]
12527
- }], options: [{
12528
- type: ViewChildren,
12529
- args: [ColumnMenuChooserItemCheckedDirective]
12583
+ }], filterable: [{
12584
+ type: Input
12530
12585
  }], checkboxes: [{
12531
12586
  type: ViewChildren,
12532
12587
  args: [CheckBoxComponent]
12533
12588
  }] } });
12534
12589
 
12590
+ /**
12591
+ * @hidden
12592
+ */
12593
+ class ColumnChooserContentComponent {
12594
+ cdr;
12595
+ columnInfoService;
12596
+ ctx;
12597
+ resetButton;
12598
+ applyButton;
12599
+ columnList;
12600
+ filterInput;
12601
+ filterable = true;
12602
+ showSelectAll = true;
12603
+ showCheckedCount = true;
12604
+ allowHideAll = false;
12605
+ autoSync = false;
12606
+ actionsClass = 'k-actions k-actions-stretched k-actions-horizontal';
12607
+ closeOnReset = true;
12608
+ set columns(value) {
12609
+ this._columns = value;
12610
+ }
12611
+ get columns() {
12612
+ return this._columns;
12613
+ }
12614
+ isLast;
12615
+ isExpanded;
12616
+ service;
12617
+ close = new EventEmitter();
12618
+ get selectedItemsText() {
12619
+ const count = this.columnList?.checkedCheckboxesLength || 0;
12620
+ const localizedMessage = this.messageFor('columnChooserSelectedColumnsCount');
12621
+ return replaceMessagePlaceholder(localizedMessage, 'selectedColumnsCount', count.toString());
12622
+ }
12623
+ get actionSheetOpened() {
12624
+ return this.ctx?.grid?.isActionSheetExpanded;
12625
+ }
12626
+ searchIcon = searchIcon;
12627
+ checkIcon = checkIcon;
12628
+ arrowRotateCcwIcon = arrowRotateCcwIcon;
12629
+ applyText;
12630
+ resetText;
12631
+ filteredColumns = [];
12632
+ isFiltered = false;
12633
+ _columns = [];
12634
+ constructor(cdr, columnInfoService, ctx) {
12635
+ this.cdr = cdr;
12636
+ this.columnInfoService = columnInfoService;
12637
+ this.ctx = ctx;
12638
+ }
12639
+ ngOnInit() {
12640
+ this.applyText = this.ctx?.localization.get('columnsApply');
12641
+ this.resetText = this.ctx?.localization.get('columnsReset');
12642
+ }
12643
+ ngAfterViewInit() {
12644
+ this.filteredColumns = this.columnInfoService?.leafNamedColumns.filter(column => {
12645
+ if (column.includeInChooser !== false) {
12646
+ column.initiallyChecked = column.currentlyChecked = !column.hidden;
12647
+ return true;
12648
+ }
12649
+ return false;
12650
+ });
12651
+ this.cdr.detectChanges();
12652
+ }
12653
+ ngAfterViewChecked() {
12654
+ this.columnList.resetButton = this.resetButton;
12655
+ this.columnList.applyButton = this.applyButton;
12656
+ this.columnList.filterInput = this.filterInput;
12657
+ }
12658
+ onFilter(value) {
12659
+ this.isFiltered = value.length > 0;
12660
+ this.showSelectAll = !this.isFiltered;
12661
+ const filterDescriptor = {
12662
+ field: 'displayTitle',
12663
+ operator: 'contains',
12664
+ value: value
12665
+ };
12666
+ this.filteredColumns = filterBy(this.columnInfoService?.leafNamedColumns, filterDescriptor);
12667
+ this.cdr.detectChanges();
12668
+ this.columnList.listNavigationService.activeIndex = 0;
12669
+ this.columnList.listNavigationService.items = this.columnList.checkboxes?.toArray();
12670
+ }
12671
+ messageFor = token => this.ctx?.localization.get(token);
12672
+ onChange(changed) {
12673
+ this.cdr.markForCheck();
12674
+ this.columnInfoService?.changeVisibility(changed);
12675
+ }
12676
+ applyChanges() {
12677
+ this.columnList.applyChanges();
12678
+ this.close.emit();
12679
+ }
12680
+ cancelChanges() {
12681
+ this.columnList.cancelChanges();
12682
+ if (this.closeOnReset) {
12683
+ this.close.emit();
12684
+ }
12685
+ }
12686
+ onTab(e) {
12687
+ if (e.key === 'Tab' && !e.shiftKey) {
12688
+ this.columnList.listNavigationService.toggle(this.columnList.listNavigationService.activeIndex, true);
12689
+ e.preventDefault();
12690
+ }
12691
+ if (e.key === 'Tab' && e.shiftKey && !this.service) {
12692
+ this.columnList.resetButton?.nativeElement.focus();
12693
+ e.preventDefault();
12694
+ }
12695
+ }
12696
+ onApplyButtonKeydown(e) {
12697
+ if (e.key === 'Tab') {
12698
+ this.columnList.focusActiveColumn(e);
12699
+ }
12700
+ }
12701
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnChooserContentComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: ColumnInfoService, optional: true }, { token: ContextService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
12702
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnChooserContentComponent, isStandalone: true, selector: "kendo-grid-column-chooser-content", inputs: { filterable: "filterable", showSelectAll: "showSelectAll", showCheckedCount: "showCheckedCount", allowHideAll: "allowHideAll", autoSync: "autoSync", actionsClass: "actionsClass", closeOnReset: "closeOnReset", columns: "columns", isLast: "isLast", isExpanded: "isExpanded", service: "service" }, outputs: { close: "close" }, viewQueries: [{ propertyName: "resetButton", first: true, predicate: ["resetButton"], descendants: true }, { propertyName: "applyButton", first: true, predicate: ["applyButton"], descendants: true }, { propertyName: "columnList", first: true, predicate: ["columnList"], descendants: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }], ngImport: i0, template: `
12703
+ <form class="k-filter-menu">
12704
+ <div class="k-filter-menu-container">
12705
+ <kendo-textbox
12706
+ #filterInput
12707
+ *ngIf="filterable"
12708
+ class="k-searchbox"
12709
+ (valueChange)="onFilter($event)"
12710
+ [kendoEventsOutsideAngular]="{'keydown': onTab}"
12711
+ [scope]="this"
12712
+ >
12713
+ <ng-template kendoPrefixTemplate>
12714
+ <kendo-icon-wrapper
12715
+ [name]="'search'"
12716
+ [svgIcon]="searchIcon">
12717
+ </kendo-icon-wrapper>
12718
+ </ng-template>
12719
+ </kendo-textbox>
12720
+ <kendo-grid-columnlist
12721
+ #columnList
12722
+ [columns]="columns"
12723
+ [filteredColumns]="filteredColumns"
12724
+ [ariaLabel]="messageFor('columns')"
12725
+ [showSelectAll]="showSelectAll"
12726
+ [isLast]="isLast"
12727
+ [isFiltered]="isFiltered"
12728
+ [filterable]="filterable"
12729
+ [isExpanded]="isExpanded"
12730
+ [service]="service"
12731
+ [applyText]="messageFor('columnsApply')"
12732
+ [resetText]="messageFor('columnsReset')"
12733
+ [autoSync]="autoSync"
12734
+ [allowHideAll]="allowHideAll"
12735
+ (columnChange)="onChange($event)"
12736
+ >
12737
+ </kendo-grid-columnlist>
12738
+ <div *ngIf="showCheckedCount" class="k-filter-selected-items">
12739
+ {{selectedItemsText}}
12740
+ </div>
12741
+ <div [ngClass]="actionsClass" *ngIf="!autoSync && !actionSheetOpened">
12742
+ <button
12743
+ #applyButton
12744
+ kendoButton
12745
+ type="button"
12746
+ icon="check"
12747
+ [svgIcon]="checkIcon"
12748
+ themeColor="primary"
12749
+ (click)="applyChanges()"
12750
+ (keydown)="onApplyButtonKeydown($event)"
12751
+ >{{ applyText }}</button>
12752
+ <button
12753
+ #resetButton
12754
+ kendoButton
12755
+ type="button"
12756
+ icon="reset"
12757
+ (keydown.tab)="columnList.onTab($event)"
12758
+ [svgIcon]="arrowRotateCcwIcon"
12759
+ (click)="cancelChanges()"
12760
+ >{{ resetText }}</button>
12761
+ </div>
12762
+ </div>
12763
+ </form>
12764
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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", "filteredColumns", "autoSync", "showSelectAll", "isFiltered", "ariaLabel", "allowHideAll", "applyText", "resetText", "isLast", "isExpanded", "service", "filterable"], outputs: ["reset", "apply", "columnChange"] }, { kind: "component", type: TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "directive", type: PrefixTemplateDirective, selector: "[kendoPrefixTemplate]", inputs: ["showSeparator"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
12765
+ }
12766
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnChooserContentComponent, decorators: [{
12767
+ type: Component,
12768
+ args: [{
12769
+ selector: 'kendo-grid-column-chooser-content',
12770
+ template: `
12771
+ <form class="k-filter-menu">
12772
+ <div class="k-filter-menu-container">
12773
+ <kendo-textbox
12774
+ #filterInput
12775
+ *ngIf="filterable"
12776
+ class="k-searchbox"
12777
+ (valueChange)="onFilter($event)"
12778
+ [kendoEventsOutsideAngular]="{'keydown': onTab}"
12779
+ [scope]="this"
12780
+ >
12781
+ <ng-template kendoPrefixTemplate>
12782
+ <kendo-icon-wrapper
12783
+ [name]="'search'"
12784
+ [svgIcon]="searchIcon">
12785
+ </kendo-icon-wrapper>
12786
+ </ng-template>
12787
+ </kendo-textbox>
12788
+ <kendo-grid-columnlist
12789
+ #columnList
12790
+ [columns]="columns"
12791
+ [filteredColumns]="filteredColumns"
12792
+ [ariaLabel]="messageFor('columns')"
12793
+ [showSelectAll]="showSelectAll"
12794
+ [isLast]="isLast"
12795
+ [isFiltered]="isFiltered"
12796
+ [filterable]="filterable"
12797
+ [isExpanded]="isExpanded"
12798
+ [service]="service"
12799
+ [applyText]="messageFor('columnsApply')"
12800
+ [resetText]="messageFor('columnsReset')"
12801
+ [autoSync]="autoSync"
12802
+ [allowHideAll]="allowHideAll"
12803
+ (columnChange)="onChange($event)"
12804
+ >
12805
+ </kendo-grid-columnlist>
12806
+ <div *ngIf="showCheckedCount" class="k-filter-selected-items">
12807
+ {{selectedItemsText}}
12808
+ </div>
12809
+ <div [ngClass]="actionsClass" *ngIf="!autoSync && !actionSheetOpened">
12810
+ <button
12811
+ #applyButton
12812
+ kendoButton
12813
+ type="button"
12814
+ icon="check"
12815
+ [svgIcon]="checkIcon"
12816
+ themeColor="primary"
12817
+ (click)="applyChanges()"
12818
+ (keydown)="onApplyButtonKeydown($event)"
12819
+ >{{ applyText }}</button>
12820
+ <button
12821
+ #resetButton
12822
+ kendoButton
12823
+ type="button"
12824
+ icon="reset"
12825
+ (keydown.tab)="columnList.onTab($event)"
12826
+ [svgIcon]="arrowRotateCcwIcon"
12827
+ (click)="cancelChanges()"
12828
+ >{{ resetText }}</button>
12829
+ </div>
12830
+ </div>
12831
+ </form>
12832
+ `,
12833
+ standalone: true,
12834
+ imports: [NgIf, NgClass, ButtonComponent, ColumnListComponent, TextBoxComponent, PrefixTemplateDirective, IconWrapperComponent, EventsOutsideAngularDirective]
12835
+ }]
12836
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: ColumnInfoService, decorators: [{
12837
+ type: Optional
12838
+ }] }, { type: ContextService, decorators: [{
12839
+ type: Optional
12840
+ }] }]; }, propDecorators: { resetButton: [{
12841
+ type: ViewChild,
12842
+ args: ['resetButton']
12843
+ }], applyButton: [{
12844
+ type: ViewChild,
12845
+ args: ['applyButton']
12846
+ }], columnList: [{
12847
+ type: ViewChild,
12848
+ args: ['columnList']
12849
+ }], filterInput: [{
12850
+ type: ViewChild,
12851
+ args: ['filterInput']
12852
+ }], filterable: [{
12853
+ type: Input
12854
+ }], showSelectAll: [{
12855
+ type: Input
12856
+ }], showCheckedCount: [{
12857
+ type: Input
12858
+ }], allowHideAll: [{
12859
+ type: Input
12860
+ }], autoSync: [{
12861
+ type: Input
12862
+ }], actionsClass: [{
12863
+ type: Input
12864
+ }], closeOnReset: [{
12865
+ type: Input
12866
+ }], columns: [{
12867
+ type: Input
12868
+ }], isLast: [{
12869
+ type: Input
12870
+ }], isExpanded: [{
12871
+ type: Input
12872
+ }], service: [{
12873
+ type: Input
12874
+ }], close: [{
12875
+ type: Output
12876
+ }] } });
12877
+
12535
12878
  /**
12536
12879
  * Represents the component for toggling visibility of the Grid columns visibility. [See example](slug:columnmenu_grid#toc-using-standalone-column-chooser).
12537
12880
  * To show and hide the columns without including the column chooser item in the [Column Menu](slug:columnmenu_grid),
@@ -12560,6 +12903,18 @@ class ColumnChooserComponent {
12560
12903
  * @default false
12561
12904
  */
12562
12905
  autoSync = false;
12906
+ /**
12907
+ * Specifies if the column chooser displays a search box.
12908
+ *
12909
+ * @default true
12910
+ */
12911
+ filterable = true;
12912
+ /**
12913
+ * Specifies if the column chooser displays a select all checkbox.
12914
+ *
12915
+ * @default true
12916
+ */
12917
+ showSelectAll = true;
12563
12918
  /**
12564
12919
  * Specifies if all columns can be hidden.
12565
12920
  *
@@ -12635,16 +12990,6 @@ class ColumnChooserComponent {
12635
12990
  this.close();
12636
12991
  }
12637
12992
  }
12638
- /**
12639
- * @hidden
12640
- */
12641
- onApply(changed) {
12642
- this.close(true);
12643
- if (changed.length) {
12644
- this.changeDetector.markForCheck();
12645
- this.columnInfoService.changeVisibility(changed);
12646
- }
12647
- }
12648
12993
  /**
12649
12994
  * @hidden
12650
12995
  */
@@ -12652,6 +12997,9 @@ class ColumnChooserComponent {
12652
12997
  this.changeDetector.markForCheck();
12653
12998
  this.columnInfoService.changeVisibility(changed);
12654
12999
  }
13000
+ /**
13001
+ * @hidden
13002
+ */
12655
13003
  close(focusAnchor = false) {
12656
13004
  if (this.popupRef) {
12657
13005
  this.popupRef.close();
@@ -12669,7 +13017,7 @@ class ColumnChooserComponent {
12669
13017
  }
12670
13018
  }
12671
13019
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnChooserComponent, deps: [{ token: ContextService }, { token: ColumnInfoService }, { token: i2.PopupService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
12672
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnChooserComponent, isStandalone: true, selector: "kendo-grid-column-chooser", inputs: { autoSync: "autoSync", allowHideAll: "allowHideAll" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true }, { propertyName: "columnList", first: true, predicate: ["columnList"], descendants: true }], ngImport: i0, template: `
13020
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnChooserComponent, isStandalone: true, selector: "kendo-grid-column-chooser", inputs: { autoSync: "autoSync", filterable: "filterable", showSelectAll: "showSelectAll", allowHideAll: "allowHideAll" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true }, { propertyName: "columnList", first: true, predicate: ["columnList"], descendants: true }], ngImport: i0, template: `
12673
13021
  <button #anchor
12674
13022
  kendoButton
12675
13023
  type="button"
@@ -12682,20 +13030,19 @@ class ColumnChooserComponent {
12682
13030
  [attr.aria-expanded]="!!(popupRef)"
12683
13031
  [attr.aria-controls]="!!(popupRef) ? popupId : undefined"></button>
12684
13032
  <ng-template #template>
12685
- <kendo-grid-columnlist
12686
- #columnList
13033
+ <kendo-grid-column-chooser-content
12687
13034
  [columns]="columns"
12688
- [ariaLabel]="messageFor('columns')"
12689
- [isLast]="true"
12690
- [applyText]="messageFor('columnsApply')"
12691
- [resetText]="messageFor('columnsReset')"
12692
13035
  [autoSync]="autoSync"
13036
+ [filterable]="filterable"
13037
+ [showSelectAll]="showSelectAll"
13038
+ [closeOnReset]="false"
13039
+ [isLast]="true"
12693
13040
  [allowHideAll]="allowHideAll"
12694
- (apply)="onApply($event)"
12695
- (columnChange)="onChange($event)">
12696
- </kendo-grid-columnlist>
13041
+ (close)="close(true)"
13042
+ >
13043
+ </kendo-grid-column-chooser-content>
12697
13044
  </ng-template>
12698
- `, 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"] }] });
13045
+ `, 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: ColumnChooserContentComponent, selector: "kendo-grid-column-chooser-content", inputs: ["filterable", "showSelectAll", "showCheckedCount", "allowHideAll", "autoSync", "actionsClass", "closeOnReset", "columns", "isLast", "isExpanded", "service"], outputs: ["close"] }] });
12699
13046
  }
12700
13047
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnChooserComponent, decorators: [{
12701
13048
  type: Component,
@@ -12714,25 +13061,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
12714
13061
  [attr.aria-expanded]="!!(popupRef)"
12715
13062
  [attr.aria-controls]="!!(popupRef) ? popupId : undefined"></button>
12716
13063
  <ng-template #template>
12717
- <kendo-grid-columnlist
12718
- #columnList
13064
+ <kendo-grid-column-chooser-content
12719
13065
  [columns]="columns"
12720
- [ariaLabel]="messageFor('columns')"
12721
- [isLast]="true"
12722
- [applyText]="messageFor('columnsApply')"
12723
- [resetText]="messageFor('columnsReset')"
12724
13066
  [autoSync]="autoSync"
13067
+ [filterable]="filterable"
13068
+ [showSelectAll]="showSelectAll"
13069
+ [closeOnReset]="false"
13070
+ [isLast]="true"
12725
13071
  [allowHideAll]="allowHideAll"
12726
- (apply)="onApply($event)"
12727
- (columnChange)="onChange($event)">
12728
- </kendo-grid-columnlist>
13072
+ (close)="close(true)"
13073
+ >
13074
+ </kendo-grid-column-chooser-content>
12729
13075
  </ng-template>
12730
13076
  `,
12731
13077
  standalone: true,
12732
- imports: [ButtonComponent, ColumnListComponent]
13078
+ imports: [ButtonComponent, ColumnListComponent, ColumnChooserContentComponent]
12733
13079
  }]
12734
13080
  }], ctorParameters: function () { return [{ type: ContextService }, { type: ColumnInfoService }, { type: i2.PopupService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { autoSync: [{
12735
13081
  type: Input
13082
+ }], filterable: [{
13083
+ type: Input
13084
+ }], showSelectAll: [{
13085
+ type: Input
12736
13086
  }], allowHideAll: [{
12737
13087
  type: Input
12738
13088
  }], anchor: [{
@@ -12867,6 +13217,18 @@ class ColumnChooserToolbarDirective extends ToolbarToolBase {
12867
13217
  * @default true
12868
13218
  */
12869
13219
  allowHideAll = true;
13220
+ /**
13221
+ * When `true`, enables the columns' filtering.
13222
+ *
13223
+ * @default true
13224
+ */
13225
+ filterable = true;
13226
+ /**
13227
+ * When `true`, displays a select all checkbox.
13228
+ *
13229
+ * @default true
13230
+ */
13231
+ showSelectAll = true;
12870
13232
  /**
12871
13233
  * @hidden
12872
13234
  */
@@ -12945,7 +13307,7 @@ class ColumnChooserToolbarDirective extends ToolbarToolBase {
12945
13307
  const direction = this.ctx.localization.rtl ? 'right' : 'left';
12946
13308
  this.popupRef = this.popupSerivce.open({
12947
13309
  anchor: this.buttonElement,
12948
- content: ColumnListComponent,
13310
+ content: ColumnChooserContentComponent,
12949
13311
  positionMode: 'absolute',
12950
13312
  anchorAlign: { vertical: 'bottom', horizontal: direction },
12951
13313
  popupAlign: { vertical: 'top', horizontal: direction }
@@ -12967,18 +13329,28 @@ class ColumnChooserToolbarDirective extends ToolbarToolBase {
12967
13329
  this.buttonElement?.setAttribute('aria-expanded', 'true');
12968
13330
  this.buttonElement?.setAttribute('aria-controls', popupId);
12969
13331
  this.host.selected = true;
12970
- const columnList = this.popupRef.content.instance;
12971
- columnList.isLast = true;
12972
- columnList.autoSync = this.autoSync;
12973
- columnList.allowHideAll = this.allowHideAll;
12974
- columnList.applyText = this.ctx.localization.get('columnsApply');
12975
- columnList.resetText = this.ctx.localization.get('columnsReset');
12976
- columnList.columns = this.ctx.grid.columns;
12977
- columnList.ariaLabel = this.ctx.localization.get('columns');
13332
+ const columnChooserContent = this.popupRef.content.instance;
13333
+ columnChooserContent.columnInfoService = this.columnInfoService;
13334
+ columnChooserContent.ctx = this.ctx;
13335
+ columnChooserContent.showSelectAll = this.showSelectAll;
13336
+ columnChooserContent.filterable = this.filterable;
13337
+ columnChooserContent.isLast = true;
13338
+ columnChooserContent.autoSync = this.autoSync;
13339
+ columnChooserContent.allowHideAll = this.allowHideAll;
13340
+ columnChooserContent.applyText = this.ctx.localization.get('columnsApply');
13341
+ columnChooserContent.resetText = this.ctx.localization.get('columnsReset');
13342
+ columnChooserContent.columns = this.ctx.grid.columns;
13343
+ columnChooserContent.filteredColumns = this.columnInfoService?.leafNamedColumns.filter(column => {
13344
+ if (column.includeInChooser !== false) {
13345
+ column.initiallyChecked = column.currentlyChecked = !column.hidden;
13346
+ return true;
13347
+ }
13348
+ return false;
13349
+ });
12978
13350
  this.subs.add(this.popupRef.popup.instance.anchorViewportLeave.subscribe(() => {
12979
13351
  this.closePopup(true);
12980
13352
  }));
12981
- this.subs.add(columnList.apply.subscribe((changed) => {
13353
+ this.subs.add(columnChooserContent.columnList.apply.subscribe((changed) => {
12982
13354
  if (changed.length) {
12983
13355
  this.cdr.markForCheck();
12984
13356
  this.columnInfoService.changeVisibility(changed);
@@ -13006,7 +13378,7 @@ class ColumnChooserToolbarDirective extends ToolbarToolBase {
13006
13378
  focusAnchor && this.buttonElement?.focus();
13007
13379
  }
13008
13380
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnChooserToolbarDirective, deps: [{ token: i0.Renderer2 }, { token: i2.PopupService }, { token: i54.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i54.RefreshService }, { token: AdaptiveGridService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
13009
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ColumnChooserToolbarDirective, isStandalone: true, selector: "[kendoGridColumnChooserTool]", inputs: { autoSync: "autoSync", allowHideAll: "allowHideAll" }, usesInheritance: true, ngImport: i0 });
13381
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ColumnChooserToolbarDirective, isStandalone: true, selector: "[kendoGridColumnChooserTool]", inputs: { autoSync: "autoSync", allowHideAll: "allowHideAll", filterable: "filterable", showSelectAll: "showSelectAll" }, usesInheritance: true, ngImport: i0 });
13010
13382
  }
13011
13383
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnChooserToolbarDirective, decorators: [{
13012
13384
  type: Directive,
@@ -13018,6 +13390,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
13018
13390
  type: Input
13019
13391
  }], allowHideAll: [{
13020
13392
  type: Input
13393
+ }], filterable: [{
13394
+ type: Input
13395
+ }], showSelectAll: [{
13396
+ type: Input
13021
13397
  }] } });
13022
13398
 
13023
13399
  /**
@@ -13703,7 +14079,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
13703
14079
  class ColumnMenuChooserComponent extends ColumnMenuItemBase {
13704
14080
  ctx;
13705
14081
  columnInfoService;
13706
- changeDetector;
13707
14082
  hostElement;
13708
14083
  /**
13709
14084
  * Fires when the content expands.
@@ -13730,23 +14105,12 @@ class ColumnMenuChooserComponent extends ColumnMenuItemBase {
13730
14105
  return this.columnInfoService.leafNamedColumns;
13731
14106
  }
13732
14107
  columnsIcon = columnsIcon;
13733
- constructor(ctx, columnInfoService, changeDetector, hostElement) {
14108
+ constructor(ctx, columnInfoService, hostElement) {
13734
14109
  super();
13735
14110
  this.ctx = ctx;
13736
14111
  this.columnInfoService = columnInfoService;
13737
- this.changeDetector = changeDetector;
13738
14112
  this.hostElement = hostElement;
13739
14113
  }
13740
- /**
13741
- * @hidden
13742
- */
13743
- onApply(changed) {
13744
- this.close();
13745
- if (changed.length) {
13746
- this.changeDetector.markForCheck();
13747
- this.columnInfoService.changeVisibility(changed);
13748
- }
13749
- }
13750
14114
  /**
13751
14115
  * @hidden
13752
14116
  */
@@ -13764,7 +14128,7 @@ class ColumnMenuChooserComponent extends ColumnMenuItemBase {
13764
14128
  this.expanded = true;
13765
14129
  this.expand.emit();
13766
14130
  }
13767
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuChooserComponent, deps: [{ token: ContextService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
14131
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuChooserComponent, deps: [{ token: ContextService }, { token: ColumnInfoService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
13768
14132
  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: `
13769
14133
  <kendo-grid-columnmenu-item
13770
14134
  [text]="ctx.localization.get('columns')"
@@ -13774,22 +14138,18 @@ class ColumnMenuChooserComponent extends ColumnMenuItemBase {
13774
14138
  (collapse)="onCollapse()"
13775
14139
  (expand)="onExpand()">
13776
14140
  <ng-template kendoGridColumnMenuItemContentTemplate>
13777
- <kendo-grid-columnlist
13778
- [applyText]="ctx.localization.get('columnsApply')"
13779
- [resetText]="ctx.localization.get('columnsReset')"
13780
- [ariaLabel]="ctx.localization.get('columns')"
14141
+ <kendo-grid-column-chooser-content
13781
14142
  [columns]="columns"
13782
- [autoSync]="false"
13783
- [allowHideAll]="false"
13784
- [actionsClass]="actionsClass"
13785
14143
  [isLast]="isLast"
13786
14144
  [isExpanded]="expanded"
14145
+ [closeOnReset]="false"
13787
14146
  [service]="service"
13788
- (apply)="onApply($event)">
13789
- </kendo-grid-columnlist>
14147
+ (close)="close()"
14148
+ >
14149
+ </kendo-grid-column-chooser-content>
13790
14150
  </ng-template>
13791
14151
  </kendo-grid-columnmenu-item>
13792
- `, 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"] }] });
14152
+ `, 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"] }] });
13793
14153
  }
13794
14154
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuChooserComponent, decorators: [{
13795
14155
  type: Component,
@@ -13804,26 +14164,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
13804
14164
  (collapse)="onCollapse()"
13805
14165
  (expand)="onExpand()">
13806
14166
  <ng-template kendoGridColumnMenuItemContentTemplate>
13807
- <kendo-grid-columnlist
13808
- [applyText]="ctx.localization.get('columnsApply')"
13809
- [resetText]="ctx.localization.get('columnsReset')"
13810
- [ariaLabel]="ctx.localization.get('columns')"
14167
+ <kendo-grid-column-chooser-content
13811
14168
  [columns]="columns"
13812
- [autoSync]="false"
13813
- [allowHideAll]="false"
13814
- [actionsClass]="actionsClass"
13815
14169
  [isLast]="isLast"
13816
14170
  [isExpanded]="expanded"
14171
+ [closeOnReset]="false"
13817
14172
  [service]="service"
13818
- (apply)="onApply($event)">
13819
- </kendo-grid-columnlist>
14173
+ (close)="close()"
14174
+ >
14175
+ </kendo-grid-column-chooser-content>
13820
14176
  </ng-template>
13821
14177
  </kendo-grid-columnmenu-item>
13822
14178
  `,
13823
14179
  standalone: true,
13824
- imports: [ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnListComponent]
14180
+ imports: [ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnListComponent, ColumnChooserContentComponent]
13825
14181
  }]
13826
- }], ctorParameters: function () { return [{ type: ContextService }, { type: ColumnInfoService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { expand: [{
14182
+ }], ctorParameters: function () { return [{ type: ContextService }, { type: ColumnInfoService }, { type: i0.ElementRef }]; }, propDecorators: { expand: [{
13827
14183
  type: Output
13828
14184
  }], collapse: [{
13829
14185
  type: Output
@@ -14845,16 +15201,6 @@ class ColumnMenuComponent {
14845
15201
  get hasColumnChooser() {
14846
15202
  return hasColumnChooser(this.settings);
14847
15203
  }
14848
- /**
14849
- * @hidden
14850
- */
14851
- onApply(changed) {
14852
- this.close(true);
14853
- if (changed.length) {
14854
- this.cdr.markForCheck();
14855
- this.columnInfoService.changeVisibility(changed);
14856
- }
14857
- }
14858
15204
  /**
14859
15205
  * @hidden
14860
15206
  */
@@ -15168,22 +15514,18 @@ class ColumnMenuComponent {
15168
15514
  </kendo-icon-wrapper>
15169
15515
  </ng-template>
15170
15516
  <ng-template kendoTabContent>
15171
- <kendo-grid-columnlist
15172
- [applyText]="ctx.localization.get('columnsApply')"
15173
- [resetText]="ctx.localization.get('columnsReset')"
15517
+ <kendo-grid-column-chooser-content
15174
15518
  [columns]="columns"
15175
- [autoSync]="false"
15176
- [allowHideAll]="false"
15177
- [actionsClass]="actionsClass"
15178
15519
  [service]="service"
15179
- (apply)="onApply($event)">
15180
- </kendo-grid-columnlist>
15520
+ (close)="close()"
15521
+ >
15522
+ </kendo-grid-column-chooser-content>
15181
15523
  </ng-template>
15182
15524
  </kendo-tabstrip-tab>
15183
15525
  </kendo-tabstrip>
15184
15526
  </ng-template>
15185
15527
 
15186
- `, 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"] }] });
15528
+ `, 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"] }] });
15187
15529
  }
15188
15530
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuComponent, decorators: [{
15189
15531
  type: Component,
@@ -15347,16 +15689,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
15347
15689
  </kendo-icon-wrapper>
15348
15690
  </ng-template>
15349
15691
  <ng-template kendoTabContent>
15350
- <kendo-grid-columnlist
15351
- [applyText]="ctx.localization.get('columnsApply')"
15352
- [resetText]="ctx.localization.get('columnsReset')"
15692
+ <kendo-grid-column-chooser-content
15353
15693
  [columns]="columns"
15354
- [autoSync]="false"
15355
- [allowHideAll]="false"
15356
- [actionsClass]="actionsClass"
15357
15694
  [service]="service"
15358
- (apply)="onApply($event)">
15359
- </kendo-grid-columnlist>
15695
+ (close)="close()"
15696
+ >
15697
+ </kendo-grid-column-chooser-content>
15360
15698
  </ng-template>
15361
15699
  </kendo-tabstrip-tab>
15362
15700
  </kendo-tabstrip>
@@ -15369,7 +15707,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
15369
15707
  ColumnMenuSortComponent, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuStickComponent,
15370
15708
  ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuAutoSizeColumnComponent,
15371
15709
  ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuFilterComponent, TabStripComponent,
15372
- TabStripTabComponent, TabTitleDirective, TabContentDirective, FilterMenuContainerComponent, ColumnListComponent
15710
+ TabStripTabComponent, TabTitleDirective, TabContentDirective, FilterMenuContainerComponent, ColumnListComponent,
15711
+ ColumnChooserContentComponent
15373
15712
  ]
15374
15713
  }]
15375
15714
  }], ctorParameters: function () { return [{ type: NavigationService }, { type: SinglePopupService }, { type: ColumnMenuService }, { type: ContextService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: ColumnInfoService }, { type: IdService, decorators: [{
@@ -22088,8 +22427,8 @@ const packageMetadata = {
22088
22427
  productName: 'Kendo UI for Angular',
22089
22428
  productCode: 'KENDOUIANGULAR',
22090
22429
  productCodes: ['KENDOUIANGULAR'],
22091
- publishDate: 1758036547,
22092
- version: '20.0.4-develop.2',
22430
+ publishDate: 1758109748,
22431
+ version: '20.1.0-develop.1',
22093
22432
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
22094
22433
  };
22095
22434
 
@@ -25956,6 +26295,15 @@ class GridMessages extends ComponentMessages {
25956
26295
  * Sets the text for the Grid Column Chooser and Column Chooser toolbar tool.
25957
26296
  */
25958
26297
  columns;
26298
+ /**
26299
+ * The message for the selected columns count in the Column Chooser.
26300
+ * Follows the pattern **{selectedColumnsCount} Selected items ** by default.
26301
+ *
26302
+ * The message consists of two parts - selected columns count and a localizable string.
26303
+ * To allow for reordering its parts, the `columnChooserSelectedColumnsCount` input accepts a string with a placeholder for the selected columns count.
26304
+ * The `{selectedColumnsCount}` placeholder will be replaced internally with the respective actual value.
26305
+ */
26306
+ columnChooserSelectedColumnsCount;
25959
26307
  /**
25960
26308
  * Sets the subtitle for the adaptive Grid Column Chooser and Column Chooser toolbar tool.
25961
26309
  */
@@ -26208,7 +26556,7 @@ class GridMessages extends ComponentMessages {
26208
26556
  */
26209
26557
  externalEditingCancelText;
26210
26558
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
26211
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: GridMessages, selector: "kendo-grid-messages-base", inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItems: "pagerItems", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", pagerInputLabel: "pagerInputLabel", pagerSelectPage: "pagerSelectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", filterCellOperatorLabel: "filterCellOperatorLabel", booleanFilterCellLabel: "booleanFilterCellLabel", aiAssistantApplyButtonText: "aiAssistantApplyButtonText", aiAssistantToolbarToolText: "aiAssistantToolbarToolText", aiAssistantWindowTitle: "aiAssistantWindowTitle", aiAssistantWindowCloseTitle: "aiAssistantWindowCloseTitle", aiAssistantOutputCardTitle: "aiAssistantOutputCardTitle", aiAssistantOutputCardBodyContent: "aiAssistantOutputCardBodyContent", aiAssistantWindowMaximizeTitle: "aiAssistantWindowMaximizeTitle", aiAssistantWindowMinimizeTitle: "aiAssistantWindowMinimizeTitle", aiAssistantWindowRestoreTitle: "aiAssistantWindowRestoreTitle", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", adaptiveFilterOperatorsTitle: "adaptiveFilterOperatorsTitle", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", adaptiveCloseButtonTitle: "adaptiveCloseButtonTitle", adaptiveBackButtonTitle: "adaptiveBackButtonTitle", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", filterToolbarToolText: "filterToolbarToolText", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", columnsSubtitle: "columnsSubtitle", adaptiveFilterTitle: "adaptiveFilterTitle", adaptiveSortTitle: "adaptiveSortTitle", adaptiveGroupTitle: "adaptiveGroupTitle", filterClearAllButton: "filterClearAllButton", groupClearButton: "groupClearButton", sortClearButton: "sortClearButton", sortDoneButton: "sortDoneButton", groupDoneButton: "groupDoneButton", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", sortToolbarToolText: "sortToolbarToolText", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", editToolbarToolText: "editToolbarToolText", saveToolbarToolText: "saveToolbarToolText", addToolbarToolText: "addToolbarToolText", cancelToolbarToolText: "cancelToolbarToolText", removeToolbarToolText: "removeToolbarToolText", excelExportToolbarToolText: "excelExportToolbarToolText", pdfExportToolbarToolText: "pdfExportToolbarToolText", groupPanelLabel: "groupPanelLabel", dragRowHandleLabel: "dragRowHandleLabel", columnMenuFilterTabTitle: "columnMenuFilterTabTitle", columnMenuGeneralTabTitle: "columnMenuGeneralTabTitle", columnMenuColumnsTabTitle: "columnMenuColumnsTabTitle", groupChipMenuPrevious: "groupChipMenuPrevious", groupChipMenuNext: "groupChipMenuNext", groupToolbarToolText: "groupToolbarToolText", formValidationErrorText: "formValidationErrorText", removeConfirmationDialogTitle: "removeConfirmationDialogTitle", removeConfirmationDialogContent: "removeConfirmationDialogContent", removeConfirmationDialogConfirmText: "removeConfirmationDialogConfirmText", removeConfirmationDialogRejectText: "removeConfirmationDialogRejectText", externalEditingTitle: "externalEditingTitle", externalEditingAddTitle: "externalEditingAddTitle", externalEditingSaveText: "externalEditingSaveText", externalEditingCancelText: "externalEditingCancelText" }, usesInheritance: true, ngImport: i0 });
26559
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: GridMessages, selector: "kendo-grid-messages-base", inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItems: "pagerItems", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", pagerInputLabel: "pagerInputLabel", pagerSelectPage: "pagerSelectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", filterCellOperatorLabel: "filterCellOperatorLabel", booleanFilterCellLabel: "booleanFilterCellLabel", aiAssistantApplyButtonText: "aiAssistantApplyButtonText", aiAssistantToolbarToolText: "aiAssistantToolbarToolText", aiAssistantWindowTitle: "aiAssistantWindowTitle", aiAssistantWindowCloseTitle: "aiAssistantWindowCloseTitle", aiAssistantOutputCardTitle: "aiAssistantOutputCardTitle", aiAssistantOutputCardBodyContent: "aiAssistantOutputCardBodyContent", aiAssistantWindowMaximizeTitle: "aiAssistantWindowMaximizeTitle", aiAssistantWindowMinimizeTitle: "aiAssistantWindowMinimizeTitle", aiAssistantWindowRestoreTitle: "aiAssistantWindowRestoreTitle", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", adaptiveFilterOperatorsTitle: "adaptiveFilterOperatorsTitle", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", adaptiveCloseButtonTitle: "adaptiveCloseButtonTitle", adaptiveBackButtonTitle: "adaptiveBackButtonTitle", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", filterToolbarToolText: "filterToolbarToolText", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", columnChooserSelectedColumnsCount: "columnChooserSelectedColumnsCount", columnsSubtitle: "columnsSubtitle", adaptiveFilterTitle: "adaptiveFilterTitle", adaptiveSortTitle: "adaptiveSortTitle", adaptiveGroupTitle: "adaptiveGroupTitle", filterClearAllButton: "filterClearAllButton", groupClearButton: "groupClearButton", sortClearButton: "sortClearButton", sortDoneButton: "sortDoneButton", groupDoneButton: "groupDoneButton", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", sortToolbarToolText: "sortToolbarToolText", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", editToolbarToolText: "editToolbarToolText", saveToolbarToolText: "saveToolbarToolText", addToolbarToolText: "addToolbarToolText", cancelToolbarToolText: "cancelToolbarToolText", removeToolbarToolText: "removeToolbarToolText", excelExportToolbarToolText: "excelExportToolbarToolText", pdfExportToolbarToolText: "pdfExportToolbarToolText", groupPanelLabel: "groupPanelLabel", dragRowHandleLabel: "dragRowHandleLabel", columnMenuFilterTabTitle: "columnMenuFilterTabTitle", columnMenuGeneralTabTitle: "columnMenuGeneralTabTitle", columnMenuColumnsTabTitle: "columnMenuColumnsTabTitle", groupChipMenuPrevious: "groupChipMenuPrevious", groupChipMenuNext: "groupChipMenuNext", groupToolbarToolText: "groupToolbarToolText", formValidationErrorText: "formValidationErrorText", removeConfirmationDialogTitle: "removeConfirmationDialogTitle", removeConfirmationDialogContent: "removeConfirmationDialogContent", removeConfirmationDialogConfirmText: "removeConfirmationDialogConfirmText", removeConfirmationDialogRejectText: "removeConfirmationDialogRejectText", externalEditingTitle: "externalEditingTitle", externalEditingAddTitle: "externalEditingAddTitle", externalEditingSaveText: "externalEditingSaveText", externalEditingCancelText: "externalEditingCancelText" }, usesInheritance: true, ngImport: i0 });
26212
26560
  }
26213
26561
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridMessages, decorators: [{
26214
26562
  type: Directive,
@@ -26344,6 +26692,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
26344
26692
  type: Input
26345
26693
  }], columns: [{
26346
26694
  type: Input
26695
+ }], columnChooserSelectedColumnsCount: [{
26696
+ type: Input
26347
26697
  }], columnsSubtitle: [{
26348
26698
  type: Input
26349
26699
  }], adaptiveFilterTitle: [{
@@ -27729,7 +28079,6 @@ class AdaptiveRendererComponent {
27729
28079
  cancelIcon = cancelIcon;
27730
28080
  saveIcon = saveIcon;
27731
28081
  columns;
27732
- actionsClass = 'k-actions';
27733
28082
  externalEditingSettings;
27734
28083
  get hasSort() {
27735
28084
  return hasSort(this.ctx.grid.columnMenu, this.adaptiveGridService.column);
@@ -27827,7 +28176,7 @@ class AdaptiveRendererComponent {
27827
28176
  get hasCheckCloseIcon() {
27828
28177
  return this.adaptiveGridService.viewType === 'sortToolbarTool' || this.adaptiveGridService.viewType === 'groupToolbarTool';
27829
28178
  }
27830
- columnList;
28179
+ columnChooserContent;
27831
28180
  filterToolbarToolTemplate;
27832
28181
  filterMenuContainer;
27833
28182
  actionSheet;
@@ -27891,7 +28240,7 @@ class AdaptiveRendererComponent {
27891
28240
  this.actionSheet.nextView();
27892
28241
  }
27893
28242
  applyChanges() {
27894
- this.columnList.applyChanges();
28243
+ this.columnChooserContent.applyChanges();
27895
28244
  this.actionSheet.toggle(false);
27896
28245
  }
27897
28246
  sortBy(column) {
@@ -27943,10 +28292,11 @@ class AdaptiveRendererComponent {
27943
28292
  this.adaptiveGridService.notifyAnimationEnd();
27944
28293
  }
27945
28294
  cancelChanges() {
27946
- this.columnList.cancelChanges();
28295
+ this.columnChooserContent.cancelChanges();
28296
+ this.columnChooserContent.cdr.detectChanges();
27947
28297
  }
27948
28298
  onTab(event) {
27949
- this.columnList.onTab(event);
28299
+ this.columnChooserContent.onTab(event);
27950
28300
  }
27951
28301
  saveEditing() {
27952
28302
  const { event, formGroup, externalEditingDirective } = this.externalEditingSettings;
@@ -27954,7 +28304,7 @@ class AdaptiveRendererComponent {
27954
28304
  this.actionSheet.toggle(false);
27955
28305
  }
27956
28306
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AdaptiveRendererComponent, deps: [{ token: ColumnMenuService }, { token: AdaptiveGridService }, { token: FilterService }, { token: ContextService }, { token: i2$1.AdaptiveService }, { token: SortService }, { token: ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });
27957
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AdaptiveRendererComponent, isStandalone: true, selector: "kendo-grid-adaptive-renderer", viewQueries: [{ propertyName: "columnList", first: true, predicate: ["columnList"], descendants: true }, { propertyName: "filterToolbarToolTemplate", first: true, predicate: ["filterToolbarToolTemplate"], descendants: true, read: ViewContainerRef }, { propertyName: "filterMenuContainer", first: true, predicate: ["filterMenuContainer"], descendants: true }, { propertyName: "actionSheet", first: true, predicate: ActionSheetComponent, descendants: true }, { propertyName: "groupToolbarTool", first: true, predicate: GroupToolbarToolComponent, descendants: true }], ngImport: i0, template: `
28307
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AdaptiveRendererComponent, isStandalone: true, selector: "kendo-grid-adaptive-renderer", viewQueries: [{ propertyName: "columnChooserContent", first: true, predicate: ["columnChooserContent"], descendants: true }, { propertyName: "filterToolbarToolTemplate", first: true, predicate: ["filterToolbarToolTemplate"], descendants: true, read: ViewContainerRef }, { propertyName: "filterMenuContainer", first: true, predicate: ["filterMenuContainer"], descendants: true }, { propertyName: "actionSheet", first: true, predicate: ActionSheetComponent, descendants: true }, { propertyName: "groupToolbarTool", first: true, predicate: GroupToolbarToolComponent, descendants: true }], ngImport: i0, template: `
27958
28308
  <kendo-actionsheet
27959
28309
  [cssClass]="{
27960
28310
  'k-adaptive-actionsheet': true,
@@ -28014,19 +28364,14 @@ class AdaptiveRendererComponent {
28014
28364
  </ng-container>
28015
28365
  </ng-template>
28016
28366
  <ng-template kendoActionSheetContentTemplate>
28017
- <kendo-grid-columnlist
28018
- #columnList
28019
- [columns]="adaptiveGridService.columns"
28020
- [ariaLabel]="messageFor('columns')"
28367
+ <kendo-grid-column-chooser-content
28368
+ #columnChooserContent
28369
+ [columns]="columns"
28021
28370
  [isLast]="true"
28022
- [showActions]="false"
28023
- [applyText]="messageFor('columnsApply')"
28024
- [resetText]="messageFor('columnsReset')"
28025
28371
  [autoSync]="false"
28026
- [actionsClass]="actionsClass"
28027
28372
  [allowHideAll]="false"
28028
28373
  >
28029
- </kendo-grid-columnlist>
28374
+ </kendo-grid-column-chooser-content>
28030
28375
  </ng-template>
28031
28376
  <ng-template kendoActionSheetFooterTemplate>
28032
28377
  <ng-container [ngTemplateOutlet]="actionSheetFooterTemplate">
@@ -28168,20 +28513,15 @@ class AdaptiveRendererComponent {
28168
28513
  </ng-template>
28169
28514
 
28170
28515
  <ng-template kendoActionSheetContentTemplate>
28171
- <kendo-grid-columnlist
28516
+ <kendo-grid-column-chooser-content
28172
28517
  *ngIf="adaptiveGridService.secondaryView === 'columnChooser'"
28173
- #columnList
28518
+ #columnChooserContent
28174
28519
  [columns]="adaptiveGridService.columns"
28175
- [ariaLabel]="messageFor('columns')"
28176
28520
  [isLast]="true"
28177
- [showActions]="false"
28178
- [applyText]="messageFor('columnsApply')"
28179
- [resetText]="messageFor('columnsReset')"
28180
28521
  [autoSync]="false"
28181
- [actionsClass]="actionsClass"
28182
28522
  [allowHideAll]="false"
28183
28523
  >
28184
- </kendo-grid-columnlist>
28524
+ </kendo-grid-column-chooser-content>
28185
28525
  <kendo-grid-filter-menu-container
28186
28526
  *ngIf="adaptiveGridService.secondaryView === 'columnFilter'"
28187
28527
  [column]="adaptiveGridService.column"
@@ -28380,7 +28720,7 @@ class AdaptiveRendererComponent {
28380
28720
  {{messageFor('filterFilterButton')}}
28381
28721
  </button>
28382
28722
  </ng-template>
28383
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["actions", "actionsLayout", "overlayClickClose", "title", "subtitle", "items", "cssClass", "cssStyle", "animation", "expanded", "titleId", "initialFocus"], outputs: ["expandedChange", "action", "expand", "collapse", "itemClick", "overlayClick"], exportAs: ["kendoActionSheet"] }, { kind: "component", type: ActionSheetViewComponent, selector: "kendo-actionsheet-view", inputs: ["title", "subtitle", "titleId"] }, { kind: "component", type: FilterToolbarToolComponent, selector: "kendo-filter-toolbar-tool", outputs: ["close"] }, { kind: "component", type: GroupToolbarToolComponent, selector: "kendo-group-toolbar-tool", inputs: ["adaptive"], outputs: ["close", "groupClear"] }, { kind: "component", type: ButtonDirective, 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: "directive", type: ActionSheetHeaderTemplateDirective, selector: "[kendoActionSheetHeaderTemplate]" }, { kind: "directive", type: ActionSheetContentTemplateDirective, selector: "[kendoActionSheetContentTemplate]" }, { kind: "directive", type: ActionSheetFooterTemplateDirective, selector: "[kendoActionSheetFooterTemplate]" }, { kind: "component", type: ColumnMenuContainerComponent, selector: "kendo-grid-columnmenu-container" }, { kind: "component", type: ColumnMenuFilterComponent, selector: "kendo-grid-columnmenu-filter", inputs: ["expanded", "isLast"], outputs: ["expand", "collapse"] }, { kind: "component", type: ColumnMenuSortComponent, selector: "kendo-grid-columnmenu-sort" }, { 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: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "indicatorIcon", "text", "selected", "disabled", "expanded", "focused", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }, { kind: "directive", type: ColumnMenuItemDirective, selector: "[kendoGridColumnMenuItem]", inputs: ["kendoGridColumnMenuItem"] }, { kind: "component", type: ColumnListComponent, selector: "kendo-grid-columnlist", inputs: ["columns", "showActions", "autoSync", "ariaLabel", "allowHideAll", "applyText", "resetText", "actionsClass", "isLast", "isExpanded", "service"], outputs: ["reset", "apply", "columnChange"] }, { kind: "component", type: FilterMenuContainerComponent, selector: "kendo-grid-filter-menu-container", inputs: ["column", "isLast", "isExpanded", "menuTabbingService", "filter", "actionsClass"], outputs: ["close"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: FormComponent, selector: "kendo-grid-external-form", inputs: ["controls", "formSettings", "formGroup", "actionButtons"], outputs: ["formSubmit"] }] });
28723
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["actions", "actionsLayout", "overlayClickClose", "title", "subtitle", "items", "cssClass", "cssStyle", "animation", "expanded", "titleId", "initialFocus"], outputs: ["expandedChange", "action", "expand", "collapse", "itemClick", "overlayClick"], exportAs: ["kendoActionSheet"] }, { kind: "component", type: ActionSheetViewComponent, selector: "kendo-actionsheet-view", inputs: ["title", "subtitle", "titleId"] }, { kind: "component", type: FilterToolbarToolComponent, selector: "kendo-filter-toolbar-tool", outputs: ["close"] }, { kind: "component", type: GroupToolbarToolComponent, selector: "kendo-group-toolbar-tool", inputs: ["adaptive"], outputs: ["close", "groupClear"] }, { kind: "component", type: ButtonDirective, 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: "directive", type: ActionSheetHeaderTemplateDirective, selector: "[kendoActionSheetHeaderTemplate]" }, { kind: "directive", type: ActionSheetContentTemplateDirective, selector: "[kendoActionSheetContentTemplate]" }, { kind: "directive", type: ActionSheetFooterTemplateDirective, selector: "[kendoActionSheetFooterTemplate]" }, { kind: "component", type: ColumnMenuContainerComponent, selector: "kendo-grid-columnmenu-container" }, { kind: "component", type: ColumnMenuFilterComponent, selector: "kendo-grid-columnmenu-filter", inputs: ["expanded", "isLast"], outputs: ["expand", "collapse"] }, { kind: "component", type: ColumnMenuSortComponent, selector: "kendo-grid-columnmenu-sort" }, { 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: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "indicatorIcon", "text", "selected", "disabled", "expanded", "focused", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }, { kind: "directive", type: ColumnMenuItemDirective, selector: "[kendoGridColumnMenuItem]", inputs: ["kendoGridColumnMenuItem"] }, { kind: "component", type: FilterMenuContainerComponent, selector: "kendo-grid-filter-menu-container", inputs: ["column", "isLast", "isExpanded", "menuTabbingService", "filter", "actionsClass"], outputs: ["close"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: FormComponent, selector: "kendo-grid-external-form", inputs: ["controls", "formSettings", "formGroup", "actionButtons"], outputs: ["formSubmit"] }, { kind: "component", type: ColumnChooserContentComponent, selector: "kendo-grid-column-chooser-content", inputs: ["filterable", "showSelectAll", "showCheckedCount", "allowHideAll", "autoSync", "actionsClass", "closeOnReset", "columns", "isLast", "isExpanded", "service"], outputs: ["close"] }] });
28384
28724
  }
28385
28725
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AdaptiveRendererComponent, decorators: [{
28386
28726
  type: Component,
@@ -28446,19 +28786,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
28446
28786
  </ng-container>
28447
28787
  </ng-template>
28448
28788
  <ng-template kendoActionSheetContentTemplate>
28449
- <kendo-grid-columnlist
28450
- #columnList
28451
- [columns]="adaptiveGridService.columns"
28452
- [ariaLabel]="messageFor('columns')"
28789
+ <kendo-grid-column-chooser-content
28790
+ #columnChooserContent
28791
+ [columns]="columns"
28453
28792
  [isLast]="true"
28454
- [showActions]="false"
28455
- [applyText]="messageFor('columnsApply')"
28456
- [resetText]="messageFor('columnsReset')"
28457
28793
  [autoSync]="false"
28458
- [actionsClass]="actionsClass"
28459
28794
  [allowHideAll]="false"
28460
28795
  >
28461
- </kendo-grid-columnlist>
28796
+ </kendo-grid-column-chooser-content>
28462
28797
  </ng-template>
28463
28798
  <ng-template kendoActionSheetFooterTemplate>
28464
28799
  <ng-container [ngTemplateOutlet]="actionSheetFooterTemplate">
@@ -28600,20 +28935,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
28600
28935
  </ng-template>
28601
28936
 
28602
28937
  <ng-template kendoActionSheetContentTemplate>
28603
- <kendo-grid-columnlist
28938
+ <kendo-grid-column-chooser-content
28604
28939
  *ngIf="adaptiveGridService.secondaryView === 'columnChooser'"
28605
- #columnList
28940
+ #columnChooserContent
28606
28941
  [columns]="adaptiveGridService.columns"
28607
- [ariaLabel]="messageFor('columns')"
28608
28942
  [isLast]="true"
28609
- [showActions]="false"
28610
- [applyText]="messageFor('columnsApply')"
28611
- [resetText]="messageFor('columnsReset')"
28612
28943
  [autoSync]="false"
28613
- [actionsClass]="actionsClass"
28614
28944
  [allowHideAll]="false"
28615
28945
  >
28616
- </kendo-grid-columnlist>
28946
+ </kendo-grid-column-chooser-content>
28617
28947
  <kendo-grid-filter-menu-container
28618
28948
  *ngIf="adaptiveGridService.secondaryView === 'columnFilter'"
28619
28949
  [column]="adaptiveGridService.column"
@@ -28838,16 +29168,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
28838
29168
  ColumnMenuAutoSizeAllColumnsComponent,
28839
29169
  ColumnMenuItemComponent,
28840
29170
  ColumnMenuItemDirective,
28841
- ColumnListComponent,
28842
29171
  FilterMenuContainerComponent,
28843
29172
  ColumnMenuLockComponent,
28844
29173
  EventsOutsideAngularDirective,
28845
- FormComponent
29174
+ FormComponent,
29175
+ ColumnChooserContentComponent
28846
29176
  ]
28847
29177
  }]
28848
- }], ctorParameters: function () { return [{ type: ColumnMenuService }, { type: AdaptiveGridService }, { type: FilterService }, { type: ContextService }, { type: i2$1.AdaptiveService }, { type: SortService }, { type: ColumnInfoService }]; }, propDecorators: { columnList: [{
29178
+ }], ctorParameters: function () { return [{ type: ColumnMenuService }, { type: AdaptiveGridService }, { type: FilterService }, { type: ContextService }, { type: i2$1.AdaptiveService }, { type: SortService }, { type: ColumnInfoService }]; }, propDecorators: { columnChooserContent: [{
28849
29179
  type: ViewChild,
28850
- args: ['columnList', { static: false }]
29180
+ args: ['columnChooserContent', { static: false }]
28851
29181
  }], filterToolbarToolTemplate: [{
28852
29182
  type: ViewChild,
28853
29183
  args: ['filterToolbarToolTemplate', { read: ViewContainerRef, static: false }]
@@ -32277,6 +32607,9 @@ class GridComponent {
32277
32607
 
32278
32608
  i18n-aiAssistantOutputCardBodyContent="kendo.grid.aiAssistantOutputCardBodyContent|The success message dispayed in the AI Assistant Prompt Output Card's body"
32279
32609
  aiAssistantOutputCardBodyContent="Operation is successful. Data is:"
32610
+
32611
+ i18n-columnChooserSelectedColumnsCount="kendo.grid.columnChooserSelectedColumnsCount|The text displayed in the Column Chooser for the number of selected columns"
32612
+ columnChooserSelectedColumnsCount="{{ '{selectedColumnsCount} Selected items' }}"
32280
32613
  >
32281
32614
  </ng-container>
32282
32615
  <kendo-grid-toolbar
@@ -33134,6 +33467,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
33134
33467
 
33135
33468
  i18n-aiAssistantOutputCardBodyContent="kendo.grid.aiAssistantOutputCardBodyContent|The success message dispayed in the AI Assistant Prompt Output Card's body"
33136
33469
  aiAssistantOutputCardBodyContent="Operation is successful. Data is:"
33470
+
33471
+ i18n-columnChooserSelectedColumnsCount="kendo.grid.columnChooserSelectedColumnsCount|The text displayed in the Column Chooser for the number of selected columns"
33472
+ columnChooserSelectedColumnsCount="{{ '{selectedColumnsCount} Selected items' }}"
33137
33473
  >
33138
33474
  </ng-container>
33139
33475
  <kendo-grid-toolbar
@@ -37382,7 +37718,6 @@ const KENDO_GRID_FILTER_ROW = [
37382
37718
  * Utility array that contains the former ColumnMenu module declarations
37383
37719
  */
37384
37720
  const KENDO_GRID_COLUMN_MENU_DECLARATIONS = [
37385
- ColumnMenuChooserItemCheckedDirective,
37386
37721
  ColumnListComponent,
37387
37722
  ColumnChooserComponent,
37388
37723
  ColumnChooserToolbarDirective,
@@ -37612,7 +37947,7 @@ const KENDO_GRID = [
37612
37947
  */
37613
37948
  class GridModule {
37614
37949
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
37615
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: GridModule, imports: [GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, EditCommandToolbarDirective, SaveCommandToolbarDirective, RemoveCommandToolbarDirective, CancelCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, SortCommandToolbarDirective, FilterCommandToolbarDirective, AIAssistantToolbarDirective, GroupCommandToolbarDirective, SelectAllToolbarToolComponent, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, FooterComponent, i53.CustomMessagesComponent, i53.PagerFocusableDirective, i53.PagerInfoComponent, i53.PagerInputComponent, i53.PagerNextButtonsComponent, i53.PagerNumericButtonsComponent, i53.PagerPageSizesComponent, i53.PagerPrevButtonsComponent, i53.PagerTemplateDirective, i53.PagerComponent, i53.PagerSpacerComponent, i54.ToolBarComponent, i54.ToolbarCustomMessagesComponent, i54.ToolBarButtonComponent, i54.ToolBarButtonGroupComponent, i54.ToolBarDropDownButtonComponent, i54.ToolBarSeparatorComponent, i54.ToolBarSpacerComponent, i54.ToolBarSplitButtonComponent, i54.ToolBarToolComponent, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnMenuChooserItemCheckedDirective, ColumnListComponent, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, ToolbarComponent, LocalizedMessagesDirective, CustomMessagesComponent, DataBindingDirective, ToolbarTemplateDirective, SelectionDirective, HighlightDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExternalEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GridMarqueeDirective, GridSpacerComponent, GridToolbarFocusableDirective, StatusBarComponent, StatusBarTemplateDirective, GridClipboardDirective, FormComponent, DialogFormComponent, FormFormFieldComponent, UndoRedoDirective, i54.ToolBarComponent, i54.ToolbarCustomMessagesComponent, i54.ToolBarButtonComponent, i54.ToolBarButtonGroupComponent, i54.ToolBarDropDownButtonComponent, i54.ToolBarSeparatorComponent, i54.ToolBarSpacerComponent, i54.ToolBarSplitButtonComponent, i54.ToolBarToolComponent, TableDirective,
37950
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: GridModule, imports: [GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, EditCommandToolbarDirective, SaveCommandToolbarDirective, RemoveCommandToolbarDirective, CancelCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, SortCommandToolbarDirective, FilterCommandToolbarDirective, AIAssistantToolbarDirective, GroupCommandToolbarDirective, SelectAllToolbarToolComponent, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, FooterComponent, i53.CustomMessagesComponent, i53.PagerFocusableDirective, i53.PagerInfoComponent, i53.PagerInputComponent, i53.PagerNextButtonsComponent, i53.PagerNumericButtonsComponent, i53.PagerPageSizesComponent, i53.PagerPrevButtonsComponent, i53.PagerTemplateDirective, i53.PagerComponent, i53.PagerSpacerComponent, i54.ToolBarComponent, i54.ToolbarCustomMessagesComponent, i54.ToolBarButtonComponent, i54.ToolBarButtonGroupComponent, i54.ToolBarDropDownButtonComponent, i54.ToolBarSeparatorComponent, i54.ToolBarSpacerComponent, i54.ToolBarSplitButtonComponent, i54.ToolBarToolComponent, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnListComponent, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, ToolbarComponent, LocalizedMessagesDirective, CustomMessagesComponent, DataBindingDirective, ToolbarTemplateDirective, SelectionDirective, HighlightDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExternalEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GridMarqueeDirective, GridSpacerComponent, GridToolbarFocusableDirective, StatusBarComponent, StatusBarTemplateDirective, GridClipboardDirective, FormComponent, DialogFormComponent, FormFormFieldComponent, UndoRedoDirective, i54.ToolBarComponent, i54.ToolbarCustomMessagesComponent, i54.ToolBarButtonComponent, i54.ToolBarButtonGroupComponent, i54.ToolBarDropDownButtonComponent, i54.ToolBarSeparatorComponent, i54.ToolBarSpacerComponent, i54.ToolBarSplitButtonComponent, i54.ToolBarToolComponent, TableDirective,
37616
37951
  UndoCommandToolbarDirective,
37617
37952
  RedoCommandToolbarDirective], exports: [GridComponent, ToolbarTemplateDirective, ToolbarComponent, GridSpacerComponent, StatusBarTemplateDirective, DataBindingDirective, SelectionDirective, HighlightDirective, CustomMessagesComponent, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExternalEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GridToolbarFocusableDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, EditCommandToolbarDirective, SaveCommandToolbarDirective, RemoveCommandToolbarDirective, CancelCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, SortCommandToolbarDirective, FilterCommandToolbarDirective, AIAssistantToolbarDirective, GroupCommandToolbarDirective, SelectAllToolbarToolComponent, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridClipboardDirective, UndoRedoDirective, UndoCommandToolbarDirective, RedoCommandToolbarDirective, i54.ToolBarComponent, i54.ToolbarCustomMessagesComponent, i54.ToolBarButtonComponent, i54.ToolBarButtonGroupComponent, i54.ToolBarDropDownButtonComponent, i54.ToolBarSeparatorComponent, i54.ToolBarSpacerComponent, i54.ToolBarSplitButtonComponent, i54.ToolBarToolComponent, i53.CustomMessagesComponent, i53.PagerFocusableDirective, i53.PagerInfoComponent, i53.PagerInputComponent, i53.PagerNextButtonsComponent, i53.PagerNumericButtonsComponent, i53.PagerPageSizesComponent, i53.PagerPrevButtonsComponent, i53.PagerTemplateDirective, i53.PagerComponent, i53.PagerSpacerComponent] });
37618
37953
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridModule, providers: [