@progress/kendo-angular-grid 11.4.0-develop.1 → 11.4.0-develop.11

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 (47) hide show
  1. package/common/provider.service.d.ts +6 -0
  2. package/esm2020/column-menu/column-list.component.mjs +1 -1
  3. package/esm2020/column-menu/column-menu-chooser.component.mjs +1 -1
  4. package/esm2020/column-menu/column-menu-filter.component.mjs +1 -1
  5. package/esm2020/column-menu/column-menu-position.component.mjs +1 -1
  6. package/esm2020/common/provider.service.mjs +9 -3
  7. package/esm2020/filtering/cell/date-filter-cell.component.mjs +1 -1
  8. package/esm2020/filtering/cell/filter-cell.component.mjs +7 -3
  9. package/esm2020/filtering/menu/date-filter-menu-input.component.mjs +1 -1
  10. package/esm2020/filtering/menu/filter-menu-container.component.mjs +1 -1
  11. package/esm2020/filtering/shared-filtering.module.mjs +1 -1
  12. package/esm2020/grid.component.mjs +54 -4
  13. package/esm2020/grid.module.mjs +8 -3
  14. package/esm2020/grouping/group-panel.component.mjs +16 -4
  15. package/esm2020/index.mjs +2 -0
  16. package/esm2020/localization/messages.mjs +7 -1
  17. package/esm2020/navigation/navigation.service.mjs +5 -0
  18. package/esm2020/package-metadata.mjs +2 -2
  19. package/esm2020/rendering/cell.component.mjs +1 -1
  20. package/esm2020/rendering/footer/footer.component.mjs +7 -3
  21. package/esm2020/rendering/header/header.component.mjs +72 -22
  22. package/esm2020/rendering/list.component.mjs +8 -12
  23. package/esm2020/rendering/table-body.component.mjs +4 -2
  24. package/esm2020/rendering/toolbar/toolbar-focusable.directive.mjs +63 -0
  25. package/esm2020/rendering/toolbar/toolbar-navigation.service.mjs +53 -0
  26. package/esm2020/rendering/toolbar/toolbar-position.mjs +5 -0
  27. package/esm2020/rendering/toolbar/toolbar-template.directive.mjs +1 -1
  28. package/esm2020/rendering/toolbar/toolbar.component.mjs +74 -9
  29. package/fesm2015/progress-kendo-angular-grid.mjs +366 -63
  30. package/fesm2020/progress-kendo-angular-grid.mjs +363 -63
  31. package/filtering/cell/filter-cell.component.d.ts +1 -0
  32. package/grid.component.d.ts +5 -0
  33. package/grid.module.d.ts +97 -96
  34. package/grouping/group-panel.component.d.ts +5 -1
  35. package/index.d.ts +2 -0
  36. package/localization/messages.d.ts +13 -1
  37. package/navigation/navigable-settings.d.ts +1 -1
  38. package/navigation/navigation.service.d.ts +2 -0
  39. package/package.json +14 -14
  40. package/rendering/footer/footer.component.d.ts +1 -0
  41. package/rendering/header/header.component.d.ts +5 -1
  42. package/rendering/list.component.d.ts +2 -2
  43. package/rendering/toolbar/toolbar-focusable.directive.d.ts +29 -0
  44. package/rendering/toolbar/toolbar-navigation.service.d.ts +21 -0
  45. package/rendering/toolbar/toolbar-position.d.ts +5 -0
  46. package/rendering/toolbar/toolbar.component.d.ts +11 -2
  47. package/schematics/ngAdd/index.js +2 -2
@@ -3,9 +3,9 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as i0 from '@angular/core';
6
- import { InjectionToken, Component, HostBinding, Input, EventEmitter, Injectable, Optional, Inject, Directive, SkipSelf, QueryList, isDevMode, ContentChildren, ContentChild, forwardRef, Host, Output, SecurityContext, ChangeDetectionStrategy, ViewChild, HostListener, ViewChildren, Self, TemplateRef, Pipe, ViewEncapsulation, NgModule } from '@angular/core';
6
+ import { InjectionToken, Component, HostBinding, Input, EventEmitter, Injectable, Optional, Inject, Directive, SkipSelf, QueryList, isDevMode, ContentChildren, ContentChild, forwardRef, Host, Output, SecurityContext, HostListener, ChangeDetectionStrategy, ViewChild, ViewChildren, Self, TemplateRef, Pipe, ViewEncapsulation, NgModule } from '@angular/core';
7
7
  import * as i1$1 from '@progress/kendo-angular-common';
8
- import { isDocumentAvailable, Keys, anyChanged, isChanged as isChanged$1, KendoInput, guid, hasObservers, ResizeSensorComponent, DraggableModule, EventsModule, ResizeSensorModule } from '@progress/kendo-angular-common';
8
+ import { isDocumentAvailable, Keys, closest as closest$1, isFocusable as isFocusable$1, anyChanged, isChanged as isChanged$1, KendoInput, guid, hasObservers, ResizeSensorComponent, DraggableModule, EventsModule, ResizeSensorModule } from '@progress/kendo-angular-common';
9
9
  import { merge, of, Subject, from, Subscription, interval, fromEvent, zip as zip$1, BehaviorSubject, Observable } from 'rxjs';
10
10
  import { switchMap, take, map, filter, takeUntil, switchMapTo, delay, auditTime, distinctUntilChanged, tap, throttleTime, debounceTime, bufferCount } from 'rxjs/operators';
11
11
  import * as i1 from '@progress/kendo-angular-l10n';
@@ -1528,6 +1528,7 @@ class NavigationService {
1528
1528
  this.cursor = new NavigationCursor(this.model);
1529
1529
  this.pagerIsNavigable = false;
1530
1530
  this.tableIsNavigable = false;
1531
+ this.toolbarIsNavigable = false;
1531
1532
  this.changes = this.cursor.changes;
1532
1533
  }
1533
1534
  set metadata(value) {
@@ -1546,6 +1547,9 @@ class NavigationService {
1546
1547
  get tableEnabled() {
1547
1548
  return this.alive && this.tableIsNavigable;
1548
1549
  }
1550
+ get toolbarEnabled() {
1551
+ return this.alive && this.toolbarIsNavigable;
1552
+ }
1549
1553
  get activeCell() {
1550
1554
  if (this.mode !== 0 /* Standby */) {
1551
1555
  return this.cursor.cell;
@@ -1741,6 +1745,7 @@ class NavigationService {
1741
1745
  setActiveSections(navigableOptions) {
1742
1746
  this.pagerIsNavigable = navigableOptions.includes('pager');
1743
1747
  this.tableIsNavigable = navigableOptions.includes('table');
1748
+ this.toolbarIsNavigable = navigableOptions.includes('toolbar');
1744
1749
  }
1745
1750
  focusAdjacentCell(fwd, wrap) {
1746
1751
  this.focusCell();
@@ -2856,8 +2861,8 @@ const packageMetadata = {
2856
2861
  name: '@progress/kendo-angular-grid',
2857
2862
  productName: 'Kendo UI for Angular',
2858
2863
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
2859
- publishDate: 1678093026,
2860
- version: '11.4.0-develop.1',
2864
+ publishDate: 1678814679,
2865
+ version: '11.4.0-develop.11',
2861
2866
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
2862
2867
  };
2863
2868
 
@@ -4923,6 +4928,54 @@ class PairSet {
4923
4928
  }
4924
4929
  }
4925
4930
 
4931
+ /**
4932
+ * @hidden
4933
+ */
4934
+ class GridToolbarNavigationService {
4935
+ constructor(renderer) {
4936
+ this.renderer = renderer;
4937
+ this.navigableElements = [];
4938
+ this.currentActiveIndex = 0;
4939
+ this.defaultFocusableSelector = `
4940
+ [kendogridtoolbarfocusable],
4941
+ [kendogridaddcommand],
4942
+ [kendogridcancelcommand],
4943
+ [kendogrideditcommand],
4944
+ [kendogridremovecommand],
4945
+ [kendogridsavecommand],
4946
+ [kendogridexcelcommand],
4947
+ [kendogridpdfcommand]
4948
+ `;
4949
+ }
4950
+ notify() {
4951
+ // ensure focusable elements are in the same order as in the DOM
4952
+ this.navigableElements = this.navigableElements.length && Array.from(this.navigableElements[0].parentElement.querySelectorAll(this.defaultFocusableSelector)) || [];
4953
+ this.currentActiveIndex = 0;
4954
+ this.updateFocus();
4955
+ }
4956
+ focus() {
4957
+ var _a;
4958
+ (_a = this.navigableElements[this.currentActiveIndex]) === null || _a === void 0 ? void 0 : _a.focus();
4959
+ }
4960
+ updateFocus() {
4961
+ if (!this.navigableElements.length) {
4962
+ return;
4963
+ }
4964
+ this.navigableElements.forEach(el => {
4965
+ this.renderer.setAttribute(el, 'tabindex', '-1');
4966
+ });
4967
+ this.renderer.setAttribute(this.navigableElements[this.currentActiveIndex], 'tabindex', '0');
4968
+ if (isDocumentAvailable() && document.activeElement.closest('.k-toolbar')) {
4969
+ this.navigableElements[this.currentActiveIndex].focus();
4970
+ }
4971
+ }
4972
+ }
4973
+ GridToolbarNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridToolbarNavigationService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
4974
+ GridToolbarNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridToolbarNavigationService });
4975
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridToolbarNavigationService, decorators: [{
4976
+ type: Injectable
4977
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
4978
+
4926
4979
  /**
4927
4980
  * @hidden
4928
4981
  *
@@ -4933,12 +4986,17 @@ class PairSet {
4933
4986
  * and a avoids dependency cycles between components.
4934
4987
  */
4935
4988
  class ContextService {
4989
+ constructor(renderer) {
4990
+ this.renderer = renderer;
4991
+ this.topToolbarNavigation = new GridToolbarNavigationService(this.renderer);
4992
+ this.bottomToolbarNavigation = new GridToolbarNavigationService(this.renderer);
4993
+ }
4936
4994
  }
4937
- ContextService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4995
+ ContextService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ContextService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
4938
4996
  ContextService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ContextService });
4939
4997
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ContextService, decorators: [{
4940
4998
  type: Injectable
4941
- }] });
4999
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
4942
5000
 
4943
5001
  /**
4944
5002
  * @hidden
@@ -5765,7 +5823,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5765
5823
  class ToolbarTemplateDirective {
5766
5824
  constructor(templateRef) {
5767
5825
  this.templateRef = templateRef;
5768
- this._position = "top";
5826
+ this._position = 'top';
5769
5827
  }
5770
5828
  /**
5771
5829
  * The position of the toolbar ([see example]({% slug toolbartemplate_grid %})).
@@ -6672,7 +6730,9 @@ class ToolbarComponent {
6672
6730
  this.ctx = ctx;
6673
6731
  this.wrapper = wrapper;
6674
6732
  this.context = {};
6733
+ this.role = 'toolbar';
6675
6734
  this._size = 'medium';
6735
+ this.navigationService = this.ctx[`${this.wrapper.nativeElement.getAttribute('position')}ToolbarNavigation`];
6676
6736
  }
6677
6737
  get sizeSmallClass() {
6678
6738
  return this.size === 'small';
@@ -6693,18 +6753,62 @@ class ToolbarComponent {
6693
6753
  get size() {
6694
6754
  return this._size;
6695
6755
  }
6756
+ clickHandler(ev) {
6757
+ if (this.navigable && isDocumentAvailable()) {
6758
+ const closestFocusable = closest$1(ev.target, isFocusable$1);
6759
+ const targetIndex = this.navigationService.navigableElements.indexOf(closestFocusable);
6760
+ if (targetIndex > -1) {
6761
+ this.navigationService.currentActiveIndex = targetIndex;
6762
+ }
6763
+ this.navigationService.updateFocus();
6764
+ if (ev.target === this.wrapper.nativeElement) {
6765
+ this.navigationService.focus();
6766
+ }
6767
+ }
6768
+ }
6769
+ ;
6770
+ arrowLeftListener() {
6771
+ if (this.navigable && isDocumentAvailable() && this.navigationService.navigableElements.length) {
6772
+ this.navigationService.currentActiveIndex--;
6773
+ if (this.navigationService.currentActiveIndex < 0) {
6774
+ this.navigationService.currentActiveIndex = this.navigationService.navigableElements.length - 1;
6775
+ }
6776
+ this.navigationService.updateFocus();
6777
+ }
6778
+ }
6779
+ arrowRightListener() {
6780
+ if (this.navigable && isDocumentAvailable() && this.navigationService.navigableElements.length) {
6781
+ this.navigationService.currentActiveIndex++;
6782
+ if (this.navigationService.currentActiveIndex >= this.navigationService.navigableElements.length) {
6783
+ this.navigationService.currentActiveIndex = 0;
6784
+ }
6785
+ this.navigationService.updateFocus();
6786
+ }
6787
+ }
6788
+ homeKeyListener(e) {
6789
+ if (this.navigable && isDocumentAvailable() && this.navigationService.navigableElements.length) {
6790
+ e.preventDefault();
6791
+ this.navigationService.currentActiveIndex = 0;
6792
+ this.navigationService.updateFocus();
6793
+ }
6794
+ }
6795
+ endKeyListener(e) {
6796
+ if (this.navigable && isDocumentAvailable() && this.navigationService.navigableElements.length) {
6797
+ e.preventDefault();
6798
+ this.navigationService.currentActiveIndex = this.navigationService.navigableElements.length - 1;
6799
+ this.navigationService.updateFocus();
6800
+ }
6801
+ }
6696
6802
  get toolbarTemplateRef() {
6697
6803
  return this.ctx.grid.toolbarTemplate ? this.ctx.grid.toolbarTemplate.templateRef : undefined;
6698
6804
  }
6699
6805
  }
6700
6806
  ToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ToolbarComponent, deps: [{ token: ContextService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
6701
- ToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: { position: "position", size: "size" }, host: { properties: { "class.k-toolbar-sm": "this.sizeSmallClass", "class.k-toolbar-md": "this.sizeMediumClass" } }, ngImport: i0, template: `
6807
+ ToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: { position: "position", size: "size", navigable: "navigable" }, host: { listeners: { "click": "clickHandler($event)", "keydown.arrowleft": "arrowLeftListener($event)", "keydown.arrowright": "arrowRightListener($event)", "keydown.home": "homeKeyListener($event)", "keydown.end": "endKeyListener($event)" }, properties: { "attr.role": "this.role", "class.k-toolbar-sm": "this.sizeSmallClass", "class.k-toolbar-md": "this.sizeMediumClass" } }, ngImport: i0, template: `
6702
6808
  <ng-template
6703
6809
  *ngIf="toolbarTemplateRef"
6704
6810
  [ngTemplateOutlet]="toolbarTemplateRef"
6705
- [ngTemplateOutletContext]="context"
6706
- >
6707
- </ng-template>
6811
+ [ngTemplateOutletContext]="context"></ng-template>
6708
6812
  `, isInline: true, directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
6709
6813
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ToolbarComponent, decorators: [{
6710
6814
  type: Component,
@@ -6714,12 +6818,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6714
6818
  <ng-template
6715
6819
  *ngIf="toolbarTemplateRef"
6716
6820
  [ngTemplateOutlet]="toolbarTemplateRef"
6717
- [ngTemplateOutletContext]="context"
6718
- >
6719
- </ng-template>
6821
+ [ngTemplateOutletContext]="context"></ng-template>
6720
6822
  `
6721
6823
  }]
6722
- }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ElementRef }]; }, propDecorators: { sizeSmallClass: [{
6824
+ }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ElementRef }]; }, propDecorators: { role: [{
6825
+ type: HostBinding,
6826
+ args: ['attr.role']
6827
+ }], sizeSmallClass: [{
6723
6828
  type: HostBinding,
6724
6829
  args: ['class.k-toolbar-sm']
6725
6830
  }], sizeMediumClass: [{
@@ -6729,6 +6834,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6729
6834
  type: Input
6730
6835
  }], size: [{
6731
6836
  type: Input
6837
+ }], clickHandler: [{
6838
+ type: HostListener,
6839
+ args: ['click', ['$event']]
6840
+ }], arrowLeftListener: [{
6841
+ type: HostListener,
6842
+ args: ['keydown.arrowleft', ['$event']]
6843
+ }], arrowRightListener: [{
6844
+ type: HostListener,
6845
+ args: ['keydown.arrowright', ['$event']]
6846
+ }], homeKeyListener: [{
6847
+ type: HostListener,
6848
+ args: ['keydown.home', ['$event']]
6849
+ }], endKeyListener: [{
6850
+ type: HostListener,
6851
+ args: ['keydown.end', ['$event']]
6852
+ }], navigable: [{
6853
+ type: Input
6732
6854
  }] } });
6733
6855
 
6734
6856
  /**
@@ -8460,6 +8582,12 @@ class GroupPanelComponent {
8460
8582
  this.targetSubscription.unsubscribe();
8461
8583
  }
8462
8584
  }
8585
+ messageFor(token) {
8586
+ return this.localization.get(token);
8587
+ }
8588
+ getTitle(group) {
8589
+ return this.messageFor(group.dir === 'desc' ? 'sortedDescending' : 'sortedAscending');
8590
+ }
8463
8591
  getDirectionIcon(group) {
8464
8592
  return group.dir === 'desc' ? 'sort-desc-sm' : 'sort-asc-sm';
8465
8593
  }
@@ -8525,7 +8653,7 @@ class GroupPanelComponent {
8525
8653
  }
8526
8654
  }
8527
8655
  GroupPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupPanelComponent, deps: [{ token: DragHintService }, { token: DropCueService }, { token: GroupInfoService }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
8528
- GroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: { text: "text", groups: "groups" }, outputs: { change: "change" }, host: { properties: { "class.k-grouping-header": "this.groupHeaderClass" } }, viewQueries: [{ propertyName: "dropTargets", predicate: DropTargetDirective, descendants: true }], ngImport: i0, template: `
8656
+ GroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: { text: "text", navigable: "navigable", groups: "groups" }, outputs: { change: "change" }, host: { properties: { "class.k-grouping-header": "this.groupHeaderClass" } }, viewQueries: [{ propertyName: "dropTargets", predicate: DropTargetDirective, descendants: true }], ngImport: i0, template: `
8529
8657
  <div
8530
8658
  *ngIf="groups.length === 0"
8531
8659
  class="k-grouping-drop-container"
@@ -8539,12 +8667,14 @@ GroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
8539
8667
 
8540
8668
  <kendo-chiplist
8541
8669
  *ngIf="groups.length !== 0"
8542
- >
8670
+ [navigable]="navigable"
8671
+ role="none">
8543
8672
  <kendo-chip
8544
8673
  *ngFor="let group of groups; let index = index;"
8545
8674
  kendoDropTarget
8546
8675
  kendoDraggableColumn
8547
8676
  kendoDraggable
8677
+ [title]="getTitle(group)"
8548
8678
  [enableDrag]="true"
8549
8679
  [context]="{
8550
8680
  field: group.field,
@@ -8569,7 +8699,7 @@ GroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
8569
8699
  }"
8570
8700
  kendoDropTarget
8571
8701
  >&nbsp;</div>
8572
- `, isInline: true, components: [{ type: i4$1.ChipListComponent, selector: "kendo-chiplist, kendo-chip-list", inputs: ["selection", "size"], outputs: ["selectedChange", "remove"] }, { type: i4$1.ChipComponent, selector: "kendo-chip", inputs: ["label", "icon", "svgIcon", "iconClass", "avatarClass", "selected", "removable", "removeIcon", "removeSvgIcon", "disabled", "size", "rounded", "fillMode", "themeColor"], outputs: ["remove", "contentClick"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DropTargetDirective, selector: "[kendoDropTarget]", inputs: ["context"], outputs: ["enter", "leave", "drop"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DraggableColumnDirective, selector: "[kendoDraggableColumn]", inputs: ["context", "enableDrag"], outputs: ["drag"] }, { type: i1$1.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8702
+ `, isInline: true, components: [{ type: i4$1.ChipListComponent, selector: "kendo-chiplist, kendo-chip-list", inputs: ["selection", "size", "role", "navigable"], outputs: ["selectedChange", "remove"] }, { type: i4$1.ChipComponent, selector: "kendo-chip", inputs: ["label", "icon", "svgIcon", "iconClass", "avatarClass", "selected", "removable", "removeIcon", "removeSvgIcon", "disabled", "size", "rounded", "fillMode", "themeColor"], outputs: ["remove", "contentClick"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DropTargetDirective, selector: "[kendoDropTarget]", inputs: ["context"], outputs: ["enter", "leave", "drop"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DraggableColumnDirective, selector: "[kendoDraggableColumn]", inputs: ["context", "enableDrag"], outputs: ["drag"] }, { type: i1$1.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8573
8703
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupPanelComponent, decorators: [{
8574
8704
  type: Component,
8575
8705
  args: [{
@@ -8589,12 +8719,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8589
8719
 
8590
8720
  <kendo-chiplist
8591
8721
  *ngIf="groups.length !== 0"
8592
- >
8722
+ [navigable]="navigable"
8723
+ role="none">
8593
8724
  <kendo-chip
8594
8725
  *ngFor="let group of groups; let index = index;"
8595
8726
  kendoDropTarget
8596
8727
  kendoDraggableColumn
8597
8728
  kendoDraggable
8729
+ [title]="getTitle(group)"
8598
8730
  [enableDrag]="true"
8599
8731
  [context]="{
8600
8732
  field: group.field,
@@ -8628,6 +8760,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8628
8760
  args: ["class.k-grouping-header"]
8629
8761
  }], text: [{
8630
8762
  type: Input
8763
+ }], navigable: [{
8764
+ type: Input
8631
8765
  }], groups: [{
8632
8766
  type: Input
8633
8767
  }], dropTargets: [{
@@ -10346,7 +10480,7 @@ DateFilterMenuInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
10346
10480
  </kendo-datepicker-messages>
10347
10481
  </kendo-datepicker>
10348
10482
  </kendo-grid-filter-menu-input-wrapper>
10349
- `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: "kendo-grid-filter-menu-input-wrapper", inputs: ["filterService", "isFirstDropDown", "menuTabbingService", "currentFilter"] }, { type: i5$1.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i5$1.DatePickerCustomMessagesComponent, selector: "kendo-datepicker-messages" }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }] });
10483
+ `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: "kendo-grid-filter-menu-input-wrapper", inputs: ["filterService", "isFirstDropDown", "menuTabbingService", "currentFilter"] }, { type: i5$1.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i5$1.DatePickerCustomMessagesComponent, selector: "kendo-datepicker-messages" }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }] });
10350
10484
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateFilterMenuInputComponent, decorators: [{
10351
10485
  type: Component,
10352
10486
  args: [{
@@ -10925,7 +11059,7 @@ class FilterMenuContainerComponent {
10925
11059
  /**
10926
11060
  * @hidden
10927
11061
  */
10928
- this.actionsClass = 'k-action-buttons';
11062
+ this.actionsClass = 'k-actions';
10929
11063
  this._templateContext = {};
10930
11064
  this.menuTabbingService = menuTabbingService;
10931
11065
  }
@@ -11838,7 +11972,7 @@ class ColumnMenuPositionComponent extends ColumnMenuItemBase {
11838
11972
  /**
11839
11973
  * @hidden
11840
11974
  */
11841
- this.actionsClass = 'k-columnmenu-actions';
11975
+ this.actionsClass = 'k-actions';
11842
11976
  this.setColumnPositionIcon = setColumnPositionIcon;
11843
11977
  this._isLast = false;
11844
11978
  }
@@ -11972,7 +12106,7 @@ class ColumnListComponent {
11972
12106
  this.columnChange = new EventEmitter();
11973
12107
  this.autoSync = true;
11974
12108
  this.allowHideAll = false;
11975
- this.actionsClass = 'k-action-buttons';
12109
+ this.actionsClass = 'k-actions';
11976
12110
  this.unlockedCount = 0;
11977
12111
  }
11978
12112
  get className() {
@@ -12219,7 +12353,7 @@ class ColumnMenuChooserComponent extends ColumnMenuItemBase {
12219
12353
  /**
12220
12354
  * @hidden
12221
12355
  */
12222
- this.actionsClass = 'k-columnmenu-actions';
12356
+ this.actionsClass = 'k-actions';
12223
12357
  this.columnsIcon = columnsIcon;
12224
12358
  }
12225
12359
  get columns() {
@@ -12371,7 +12505,7 @@ class ColumnMenuFilterComponent extends ColumnMenuItemBase {
12371
12505
  /**
12372
12506
  * @hidden
12373
12507
  */
12374
- this.actionsClass = 'k-columnmenu-actions';
12508
+ this.actionsClass = 'k-actions';
12375
12509
  this.filterIcon = filterIcon;
12376
12510
  }
12377
12511
  /**
@@ -13812,7 +13946,7 @@ DateFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
13812
13946
  </kendo-datepicker-messages>
13813
13947
  </kendo-datepicker>
13814
13948
  </kendo-grid-filter-wrapper-cell>
13815
- `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-grid-filter-wrapper-cell", inputs: ["showOperators"] }, { type: i5$1.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i5$1.DatePickerCustomMessagesComponent, selector: "kendo-datepicker-messages" }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }, { type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }] });
13949
+ `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-grid-filter-wrapper-cell", inputs: ["showOperators"] }, { type: i5$1.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i5$1.DatePickerCustomMessagesComponent, selector: "kendo-datepicker-messages" }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }, { type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }] });
13816
13950
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateFilterCellComponent, decorators: [{
13817
13951
  type: Component,
13818
13952
  args: [{
@@ -13894,6 +14028,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13894
14028
  */
13895
14029
  class FilterCellComponent {
13896
14030
  constructor() {
14031
+ this.hostRole = 'gridcell';
13897
14032
  this.size = 'medium';
13898
14033
  this._templateContext = {};
13899
14034
  }
@@ -13917,7 +14052,7 @@ class FilterCellComponent {
13917
14052
  }
13918
14053
  }
13919
14054
  FilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13920
- FilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: FilterCellComponent, selector: "[kendoGridFilterCell]", inputs: { column: "column", filter: "filter", size: "size" }, ngImport: i0, template: `
14055
+ FilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: FilterCellComponent, selector: "[kendoGridFilterCell]", inputs: { column: "column", filter: "filter", size: "size" }, host: { properties: { "attr.role": "this.hostRole" } }, ngImport: i0, template: `
13921
14056
  <ng-container *ngIf="isFilterable">
13922
14057
  <ng-container [ngSwitch]="hasTemplate">
13923
14058
  <ng-container *ngSwitchCase="false">
@@ -13954,7 +14089,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13954
14089
  </ng-container>
13955
14090
  `
13956
14091
  }]
13957
- }], propDecorators: { column: [{
14092
+ }], propDecorators: { hostRole: [{
14093
+ type: HostBinding,
14094
+ args: ['attr.role']
14095
+ }], column: [{
13958
14096
  type: Input
13959
14097
  }], filter: [{
13960
14098
  type: Input
@@ -14710,7 +14848,7 @@ const modifierKeys = ['alt', 'ctrl', 'shift', 'meta'];
14710
14848
  * @hidden
14711
14849
  */
14712
14850
  class HeaderComponent {
14713
- constructor(popupService, hint, cue, reorderService, idService, sortService, localization, columnInfoService, cd) {
14851
+ constructor(popupService, hint, cue, reorderService, idService, sortService, localization, columnInfoService, cd, contextService) {
14714
14852
  this.popupService = popupService;
14715
14853
  this.hint = hint;
14716
14854
  this.cue = cue;
@@ -14720,6 +14858,7 @@ class HeaderComponent {
14720
14858
  this.localization = localization;
14721
14859
  this.columnInfoService = columnInfoService;
14722
14860
  this.cd = cd;
14861
+ this.contextService = contextService;
14723
14862
  this.columns = [];
14724
14863
  this.groups = [];
14725
14864
  this.sort = new Array();
@@ -14776,12 +14915,50 @@ class HeaderComponent {
14776
14915
  args.stopImmediatePropagation();
14777
14916
  const filterMenu = this.filterMenus.find(fm => fm.column === column);
14778
14917
  filterMenu.toggle(filterMenu.anchor.nativeElement, filterMenu.template);
14918
+ return;
14779
14919
  }
14780
14920
  if (args.keyCode === Keys.ArrowDown && args.altKey && this.showColumnMenu(column)) {
14781
14921
  args.preventDefault();
14782
14922
  args.stopImmediatePropagation();
14783
14923
  const columnMenu = this.columnMenus.find(cm => cm.column === column);
14784
14924
  columnMenu.toggle(null, columnMenu.anchor.nativeElement, columnMenu.template);
14925
+ return;
14926
+ }
14927
+ const isCtrlOrMeta = args.ctrlKey || args.metaKey;
14928
+ const isGroupingKeyShortcut = (args.keyCode === Keys.Enter || args.keyCode === Keys.Space) && isCtrlOrMeta;
14929
+ if (isGroupingKeyShortcut && this.isGroupable(column)) {
14930
+ args.preventDefault();
14931
+ args.stopImmediatePropagation();
14932
+ const isGroupedByField = this.groups.some(gr => gr.field === column.field);
14933
+ if (isGroupedByField) {
14934
+ this.groups = this.groups.filter(gr => gr.field !== column.field);
14935
+ }
14936
+ else {
14937
+ this.groups.push({
14938
+ field: column.field
14939
+ });
14940
+ }
14941
+ this.contextService.grid.groupChange.emit(this.groups);
14942
+ return;
14943
+ }
14944
+ const isLeftOrRightArrow = args.keyCode === Keys.ArrowLeft || args.keyCode === Keys.ArrowRight;
14945
+ const isReorderingKeyShortcut = isLeftOrRightArrow && isCtrlOrMeta;
14946
+ if (isReorderingKeyShortcut && this.isReorderable(column)) {
14947
+ args.preventDefault();
14948
+ const columnsCount = this.columnInfoService.leafNamedColumns.length;
14949
+ const reorderDirection = args.keyCode === Keys.ArrowLeft ? -1 : 1;
14950
+ const rtlMultiplier = this.localization.rtl ? -1 : 1;
14951
+ const reorderDirectionOffset = reorderDirection * rtlMultiplier;
14952
+ const newIndex = column.leafIndex + reorderDirectionOffset;
14953
+ const normalizedNewIndex = Math.min(Math.max(0, newIndex), columnsCount - 1);
14954
+ const gridInstance = this.contextService.grid;
14955
+ gridInstance.reorderColumn(column, normalizedNewIndex, { before: reorderDirectionOffset < 0 });
14956
+ gridInstance.columnReorder.emit(new ColumnReorderEvent({
14957
+ column,
14958
+ newIndex: normalizedNewIndex,
14959
+ oldIndex: column.leafIndex
14960
+ }));
14961
+ return;
14785
14962
  }
14786
14963
  if (!this.sortable || args.defaultPrevented || column.sortable === false) {
14787
14964
  return;
@@ -14921,11 +15098,11 @@ class HeaderComponent {
14921
15098
  return this.reorderable && rules({ draggable, target });
14922
15099
  }
14923
15100
  shouldActivate(column) {
14924
- const canReorder = this.reorderable && column.reorderable;
15101
+ const canReorder = this.isReorderable(column);
14925
15102
  if (!canReorder && !isColumnComponent(column)) {
14926
15103
  return false;
14927
15104
  }
14928
- const groupable = this.groupable && isColumnComponent(column) && column.groupable !== false;
15105
+ const groupable = this.isGroupable(column);
14929
15106
  return groupable || canReorder;
14930
15107
  }
14931
15108
  isSortable(column) {
@@ -14970,6 +15147,12 @@ class HeaderComponent {
14970
15147
  get leafColumns() {
14971
15148
  return this._leafColumns;
14972
15149
  }
15150
+ isReorderable(column) {
15151
+ return this.reorderable && column.reorderable;
15152
+ }
15153
+ isGroupable(column) {
15154
+ return this.groupable && isColumnComponent(column) && column.groupable !== false;
15155
+ }
14973
15156
  attachTargets() {
14974
15157
  if (this.targetSubscription) {
14975
15158
  this.targetSubscription.unsubscribe();
@@ -15051,7 +15234,7 @@ class HeaderComponent {
15051
15234
  });
15052
15235
  }
15053
15236
  }
15054
- HeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HeaderComponent, deps: [{ token: SinglePopupService }, { token: DragHintService }, { token: DropCueService }, { token: ColumnReorderService }, { token: IdService }, { token: SortService }, { token: i1.LocalizationService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
15237
+ HeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HeaderComponent, deps: [{ token: SinglePopupService }, { token: DragHintService }, { token: DropCueService }, { token: ColumnReorderService }, { token: IdService }, { token: SortService }, { token: i1.LocalizationService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }, { token: ContextService }], target: i0.ɵɵFactoryTarget.Component });
15055
15238
  HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: HeaderComponent, selector: "[kendoGridHeader]", inputs: { totalColumnLevels: "totalColumnLevels", columns: "columns", groups: "groups", detailTemplate: "detailTemplate", scrollable: "scrollable", filterable: "filterable", sort: "sort", filter: "filter", sortable: "sortable", groupable: "groupable", lockedColumnsCount: "lockedColumnsCount", resizable: "resizable", reorderable: "reorderable", columnMenu: "columnMenu", columnMenuTemplate: "columnMenuTemplate", totalColumnsCount: "totalColumnsCount", tabIndex: "tabIndex", size: "size" }, host: { properties: { "class.k-grid-header": "this.headerClass", "class.k-table-thead": "this.hostClass" } }, viewQueries: [{ propertyName: "dropTargets", predicate: DropTargetDirective, descendants: true }, { propertyName: "filterMenus", predicate: FilterMenuComponent, descendants: true }, { propertyName: "columnMenus", predicate: ColumnMenuComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
15056
15239
  <ng-container>
15057
15240
  <tr *ngFor="let i of columnLevels; let levelIndex = index"
@@ -15105,7 +15288,8 @@ HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
15105
15288
  [ngClass]="column.headerClass"
15106
15289
  [ngStyle]="column.sticky ? addStickyStyles(column) : column.headerStyle"
15107
15290
  [attr.rowspan]="column.rowspan(totalColumnLevels)"
15108
- [attr.colspan]="column.colspan">
15291
+ [attr.colspan]="column.colspan"
15292
+ [attr.aria-haspopup]="(showFilterMenu || showColumnMenu(column)) ? 'dialog' : undefined">
15109
15293
 
15110
15294
  <ng-container *ngIf="!isSortable(getColumnComponent(column))">
15111
15295
  <span class="k-cell-inner">
@@ -15334,7 +15518,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
15334
15518
  [ngClass]="column.headerClass"
15335
15519
  [ngStyle]="column.sticky ? addStickyStyles(column) : column.headerStyle"
15336
15520
  [attr.rowspan]="column.rowspan(totalColumnLevels)"
15337
- [attr.colspan]="column.colspan">
15521
+ [attr.colspan]="column.colspan"
15522
+ [attr.aria-haspopup]="(showFilterMenu || showColumnMenu(column)) ? 'dialog' : undefined">
15338
15523
 
15339
15524
  <ng-container *ngIf="!isSortable(getColumnComponent(column))">
15340
15525
  <span class="k-cell-inner">
@@ -15507,7 +15692,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
15507
15692
  </ng-container>
15508
15693
  `
15509
15694
  }]
15510
- }], ctorParameters: function () { return [{ type: SinglePopupService }, { type: DragHintService }, { type: DropCueService }, { type: ColumnReorderService }, { type: IdService }, { type: SortService }, { type: i1.LocalizationService }, { type: ColumnInfoService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { totalColumnLevels: [{
15695
+ }], ctorParameters: function () { return [{ type: SinglePopupService }, { type: DragHintService }, { type: DropCueService }, { type: ColumnReorderService }, { type: IdService }, { type: SortService }, { type: i1.LocalizationService }, { type: ColumnInfoService }, { type: i0.ChangeDetectorRef }, { type: ContextService }]; }, propDecorators: { totalColumnLevels: [{
15511
15696
  type: Input
15512
15697
  }], columns: [{
15513
15698
  type: Input
@@ -16193,7 +16378,7 @@ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
16193
16378
  </ng-container>
16194
16379
  </ng-container>
16195
16380
  </ng-container>
16196
- `, isInline: true, components: [{ type: i3.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }, { type: i5$1.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }], directives: [{ type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }, { type: SelectionCheckboxDirective, selector: "[kendoGridSelectionCheckbox]", inputs: ["kendoGridSelectionCheckbox"] }, { type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4$2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i4$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }], pipes: { "valueOf": FieldAccessorPipe } });
16381
+ `, isInline: true, components: [{ type: i3.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }, { type: i5$1.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }], directives: [{ type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }, { type: SelectionCheckboxDirective, selector: "[kendoGridSelectionCheckbox]", inputs: ["kendoGridSelectionCheckbox"] }, { type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4$2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i4$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }], pipes: { "valueOf": FieldAccessorPipe } });
16197
16382
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CellComponent, decorators: [{
16198
16383
  type: Component,
16199
16384
  args: [{
@@ -16926,7 +17111,7 @@ TableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
16926
17111
  </td>
16927
17112
  </tr>
16928
17113
  </ng-container>
16929
- <tr *ngIf="data?.length === 0 || data === null" class="k-grid-norecords">
17114
+ <tr *ngIf="data?.length === 0 || data === null" class="k-grid-norecords" role="row">
16930
17115
  <td [attr.colspan]="colSpan" class="k-table-td">
16931
17116
  <ng-template
16932
17117
  *ngIf="noRecordsTemplate?.templateRef"
@@ -16972,6 +17157,7 @@ TableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
16972
17157
  [ngClass]="rowClass({ dataItem: item.data, index: $any(item).index })"
16973
17158
  [class.k-master-row]="true"
16974
17159
  [class.k-grid-edit-row]="isEditingRow($any(item).index)"
17160
+ [attr.aria-selected]="isSelectable() && isRowSelected(item)"
16975
17161
  [attr.data-kendo-grid-item-index]="$any(item).index"
16976
17162
  [class.k-selected]="isSelectable() && isRowSelected(item)">
16977
17163
  <ng-container *ngIf="!skipGroupDecoration">
@@ -17151,7 +17337,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17151
17337
  </td>
17152
17338
  </tr>
17153
17339
  </ng-container>
17154
- <tr *ngIf="data?.length === 0 || data === null" class="k-grid-norecords">
17340
+ <tr *ngIf="data?.length === 0 || data === null" class="k-grid-norecords" role="row">
17155
17341
  <td [attr.colspan]="colSpan" class="k-table-td">
17156
17342
  <ng-template
17157
17343
  *ngIf="noRecordsTemplate?.templateRef"
@@ -17197,6 +17383,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17197
17383
  [ngClass]="rowClass({ dataItem: item.data, index: $any(item).index })"
17198
17384
  [class.k-master-row]="true"
17199
17385
  [class.k-grid-edit-row]="isEditingRow($any(item).index)"
17386
+ [attr.aria-selected]="isSelectable() && isRowSelected(item)"
17200
17387
  [attr.data-kendo-grid-item-index]="$any(item).index"
17201
17388
  [class.k-selected]="isSelectable() && isRowSelected(item)">
17202
17389
  <ng-container *ngIf="!skipGroupDecoration">
@@ -17672,6 +17859,8 @@ class ListComponent {
17672
17859
  this.changeDetector = changeDetector;
17673
17860
  this.pdfService = pdfService;
17674
17861
  this.columnInfo = columnInfo;
17862
+ this.hostClass = true;
17863
+ this.hostRole = 'presentation';
17675
17864
  this.groups = [];
17676
17865
  this.skip = 0;
17677
17866
  this.columns = new ColumnsContainer(() => []);
@@ -17693,12 +17882,6 @@ class ListComponent {
17693
17882
  this.subscriptions = detailsService.changes.subscribe(x => this.detailExpand(x));
17694
17883
  this.subscriptions.add(scrollRequestService.requests.subscribe(x => this.scrollTo(x)));
17695
17884
  }
17696
- get hostClass() {
17697
- return true;
17698
- }
17699
- get hostRole() {
17700
- return 'presentation';
17701
- }
17702
17885
  get showFooter() {
17703
17886
  return this.groupable && this.groupable.showFooter;
17704
17887
  }
@@ -17762,7 +17945,7 @@ class ListComponent {
17762
17945
  this.skipScroll = true;
17763
17946
  this.container.nativeElement.scrollTop = this.rowHeightService.offset(this.skip);
17764
17947
  }
17765
- if (anyChanged(["total", "take"], changes)) {
17948
+ if (anyChanged(['total', 'take'], changes)) {
17766
17949
  this.init();
17767
17950
  }
17768
17951
  this.rebind = false;
@@ -17870,7 +18053,7 @@ class ListComponent {
17870
18053
  });
17871
18054
  })).subscribe(this.dispatcher));
17872
18055
  });
17873
- this.scrollSyncService.registerEmitter(this.container.nativeElement, "body");
18056
+ this.scrollSyncService.registerEmitter(this.container.nativeElement, 'body');
17874
18057
  }
17875
18058
  createScroller() {
17876
18059
  this.cleanupScroller();
@@ -18223,7 +18406,7 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
18223
18406
  [sort]="sort">
18224
18407
  </colgroup>
18225
18408
  <tbody kendoGridTableBody
18226
- role="presentation"
18409
+ role="rowgroup"
18227
18410
  [skipGroupDecoration]="isLocked"
18228
18411
  [data]="data"
18229
18412
  [groups]="groups"
@@ -18342,7 +18525,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18342
18525
  [sort]="sort">
18343
18526
  </colgroup>
18344
18527
  <tbody kendoGridTableBody
18345
- role="presentation"
18528
+ role="rowgroup"
18346
18529
  [skipGroupDecoration]="isLocked"
18347
18530
  [data]="data"
18348
18531
  [groups]="groups"
@@ -18384,10 +18567,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18384
18567
  }] }, { type: DetailsService }, { type: ChangeNotificationService }, { type: SuspendService }, { type: GroupsService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: ScrollSyncService }, { type: ResizeService }, { type: EditService }, { type: BrowserSupportService }, { type: NavigationService }, { type: ScrollRequestService }, { type: i1.LocalizationService }, { type: ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: PDFService }, { type: ColumnInfoService }];
18385
18568
  }, propDecorators: { hostClass: [{
18386
18569
  type: HostBinding,
18387
- args: ["class.k-grid-container"]
18570
+ args: ['class.k-grid-container']
18388
18571
  }], hostRole: [{
18389
18572
  type: HostBinding,
18390
- args: ["attr.role"]
18573
+ args: ['attr.role']
18391
18574
  }], data: [{
18392
18575
  type: Input
18393
18576
  }], groups: [{
@@ -18470,6 +18653,7 @@ class FooterComponent {
18470
18653
  this.lockedColumnsCount = 0;
18471
18654
  this.logicalRowIndex = 0;
18472
18655
  this.hostClass = true;
18656
+ this.hostRole = 'rowgroup';
18473
18657
  }
18474
18658
  get footerClass() {
18475
18659
  return !this.scrollable;
@@ -18490,7 +18674,7 @@ class FooterComponent {
18490
18674
  }
18491
18675
  }
18492
18676
  FooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FooterComponent, deps: [{ token: ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });
18493
- FooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: FooterComponent, selector: "[kendoGridFooter]", inputs: { columns: "columns", groups: "groups", detailTemplate: "detailTemplate", scrollable: "scrollable", lockedColumnsCount: "lockedColumnsCount", logicalRowIndex: "logicalRowIndex" }, host: { properties: { "class.k-grid-footer": "this.footerClass", "class.k-table-tfoot": "this.hostClass" } }, ngImport: i0, template: `
18677
+ FooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: FooterComponent, selector: "[kendoGridFooter]", inputs: { columns: "columns", groups: "groups", detailTemplate: "detailTemplate", scrollable: "scrollable", lockedColumnsCount: "lockedColumnsCount", logicalRowIndex: "logicalRowIndex" }, host: { properties: { "class.k-grid-footer": "this.footerClass", "class.k-table-tfoot": "this.hostClass", "attr.role": "this.hostRole" } }, ngImport: i0, template: `
18494
18678
  <ng-container>
18495
18679
  <tr
18496
18680
  [class.k-footer-template]="true"
@@ -18516,7 +18700,7 @@ FooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
18516
18700
  class="k-table-td"
18517
18701
  [logicalRowIndex]="logicalRowIndex"
18518
18702
  [logicalColIndex]="logicalColumnIndex(column)"
18519
- role="columnfooter"
18703
+ role="gridcell"
18520
18704
  aria-selected="false"
18521
18705
  [class.k-grid-footer-sticky]="column.sticky"
18522
18706
  [ngClass]="column.footerClass"
@@ -18563,7 +18747,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18563
18747
  class="k-table-td"
18564
18748
  [logicalRowIndex]="logicalRowIndex"
18565
18749
  [logicalColIndex]="logicalColumnIndex(column)"
18566
- role="columnfooter"
18750
+ role="gridcell"
18567
18751
  aria-selected="false"
18568
18752
  [class.k-grid-footer-sticky]="column.sticky"
18569
18753
  [ngClass]="column.footerClass"
@@ -18599,6 +18783,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18599
18783
  }], hostClass: [{
18600
18784
  type: HostBinding,
18601
18785
  args: ['class.k-table-tfoot']
18786
+ }], hostRole: [{
18787
+ type: HostBinding,
18788
+ args: ['attr.role']
18602
18789
  }] } });
18603
18790
 
18604
18791
  /**
@@ -18650,7 +18837,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18650
18837
  class GridMessages extends ComponentMessages {
18651
18838
  }
18652
18839
  GridMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
18653
- GridMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.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", selectPage: "selectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", 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", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand" }, usesInheritance: true, ngImport: i0 });
18840
+ GridMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.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", selectPage: "selectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", 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", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", 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", groupPanelLabel: "groupPanelLabel" }, usesInheritance: true, ngImport: i0 });
18654
18841
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, decorators: [{
18655
18842
  type: Directive,
18656
18843
  args: [{
@@ -18801,6 +18988,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18801
18988
  type: Input
18802
18989
  }], groupExpand: [{
18803
18990
  type: Input
18991
+ }], topToolbarLabel: [{
18992
+ type: Input
18993
+ }], bottomToolbarLabel: [{
18994
+ type: Input
18995
+ }], groupPanelLabel: [{
18996
+ type: Input
18804
18997
  }] } });
18805
18998
 
18806
18999
  /**
@@ -19166,6 +19359,7 @@ class GridComponent {
19166
19359
  this.hostClass = true;
19167
19360
  this.footer = new QueryList();
19168
19361
  this.selectionDirective = false;
19362
+ this.ariaRootId = `k-${guid()}`;
19169
19363
  this.columnsContainer = new ColumnsContainer(() => this.columnList.filterHierarchy(column => {
19170
19364
  if (!isUniversal()) {
19171
19365
  column.matchesMedia = this.matchesMedia(column);
@@ -19335,7 +19529,7 @@ class GridComponent {
19335
19529
  */
19336
19530
  set navigable(value) {
19337
19531
  if (typeof value === 'boolean') {
19338
- this._navigable = value ? ['table', 'pager'] : [];
19532
+ this._navigable = value ? ['table', 'pager', 'toolbar'] : [];
19339
19533
  return;
19340
19534
  }
19341
19535
  this._navigable = value;
@@ -19898,6 +20092,12 @@ class GridComponent {
19898
20092
  get ariaLabel() {
19899
20093
  return this.localization.get('gridLabel');
19900
20094
  }
20095
+ /**
20096
+ * @hidden
20097
+ */
20098
+ messageFor(token) {
20099
+ return this.localization.get(token);
20100
+ }
19901
20101
  /**
19902
20102
  * Switches the specified table row in the edit mode ([see example]({% slug inline_editing_grid %}#toc-editing-records-1)).
19903
20103
  *
@@ -21129,12 +21329,24 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21129
21329
 
21130
21330
  i18n-selectPage="kendo.grid.selectPage|The text of the title and aria-label attributes applied to the page chooser in the Grid Pager"
21131
21331
  selectPage="Select page"
21332
+
21333
+ i18n-topToolbarLabel="kendo.grid.topToolbarLabel|The label for the Grid top toolbar"
21334
+ topToolbarLabel="Top toolbar"
21335
+
21336
+ i18n-bottomToolbarLabel="kendo.grid.bottomToolbarLabel|The label for the Grid bottom toolbar"
21337
+ bottomToolbarLabel="Bottom toolbar"
21338
+
21339
+ i18n-groupPanelLabel="kendo.grid.groupPanelLabel|The label for the Grid group panel toolbar"
21340
+ groupPanelLabel="Group panel"
21132
21341
  >
21133
21342
  </ng-container>
21134
21343
  <kendo-grid-toolbar
21135
21344
  class="k-toolbar k-grid-toolbar"
21136
21345
  *ngIf="showTopToolbar"
21137
21346
  [size]="size"
21347
+ [attr.aria-label]="messageFor('topToolbarLabel')"
21348
+ [navigable]="navigation.toolbarEnabled"
21349
+ [attr.aria-controls]="ariaRootId"
21138
21350
  position="top"></kendo-grid-toolbar>
21139
21351
  <kendo-pager
21140
21352
  *ngIf="showTopPager"
@@ -21151,13 +21363,18 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21151
21363
  </kendo-pager>
21152
21364
  <kendo-grid-group-panel
21153
21365
  *ngIf="showGroupPanel"
21366
+ [navigable]="navigation.toolbarEnabled"
21154
21367
  [text]="groupableEmptyText"
21155
21368
  [groups]="group"
21369
+ role="toolbar"
21370
+ [attr.aria-label]="messageFor('groupPanelLabel')"
21371
+ [attr.aria-controls]="ariaRootId"
21156
21372
  (change)="groupChange.emit($event)">
21157
21373
  </kendo-grid-group-panel>
21158
21374
  <div #ariaRoot
21159
21375
  class="k-grid-aria-root"
21160
21376
  role="grid"
21377
+ [id]="ariaRootId"
21161
21378
  [attr.aria-label]="ariaLabel"
21162
21379
  [attr.aria-rowcount]="ariaRowCount"
21163
21380
  [attr.aria-colcount]="ariaColCount">
@@ -21185,6 +21402,7 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21185
21402
  [detailTemplate]="detailTemplate">
21186
21403
  </colgroup>
21187
21404
  <thead kendoGridHeader
21405
+ role="rowgroup"
21188
21406
  [resizable]="resizable"
21189
21407
  [scrollable]="true"
21190
21408
  [columns]="$any(lockedColumns)"
@@ -21222,7 +21440,7 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21222
21440
  </colgroup>
21223
21441
  <thead kendoGridHeader
21224
21442
  [resizable]="resizable"
21225
- role="presentation"
21443
+ role="rowgroup"
21226
21444
  [scrollable]="true"
21227
21445
  [columns]="headerColumns"
21228
21446
  [totalColumnLevels]="totalColumnLevels"
@@ -21409,8 +21627,11 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21409
21627
  class="k-toolbar k-grid-toolbar k-grid-toolbar-bottom"
21410
21628
  *ngIf="showBottomToolbar"
21411
21629
  [size]="size"
21630
+ [navigable]="navigation.toolbarEnabled"
21631
+ [attr.aria-label]="messageFor('bottomToolbarLabel')"
21632
+ [attr.aria-controls]="ariaRootId"
21412
21633
  position="bottom"></kendo-grid-toolbar>
21413
- `, isInline: true, components: [{ type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size"] }, { type: PagerComponent, selector: "kendo-pager", inputs: ["total", "skip", "pageSize", "options", "size", "template"], outputs: ["pageChange"] }, { type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "groups"], outputs: ["change"] }, { type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "tabIndex", "size"] }, { type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "stickyRowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort", "size"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex"] }, { type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "rowClass"] }, { type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TableDirective, selector: "table", inputs: ["locked", "virtualColumns"] }, { type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { type: i1$1.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }], encapsulation: i0.ViewEncapsulation.None });
21634
+ `, isInline: true, components: [{ type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { type: PagerComponent, selector: "kendo-pager", inputs: ["total", "skip", "pageSize", "options", "size", "template"], outputs: ["pageChange"] }, { type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "tabIndex", "size"] }, { type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "stickyRowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort", "size"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex"] }, { type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "rowClass"] }, { type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TableDirective, selector: "table", inputs: ["locked", "virtualColumns"] }, { type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { type: i1$1.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }], encapsulation: i0.ViewEncapsulation.None });
21414
21635
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridComponent, decorators: [{
21415
21636
  type: Component,
21416
21637
  args: [{
@@ -21677,12 +21898,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21677
21898
 
21678
21899
  i18n-selectPage="kendo.grid.selectPage|The text of the title and aria-label attributes applied to the page chooser in the Grid Pager"
21679
21900
  selectPage="Select page"
21901
+
21902
+ i18n-topToolbarLabel="kendo.grid.topToolbarLabel|The label for the Grid top toolbar"
21903
+ topToolbarLabel="Top toolbar"
21904
+
21905
+ i18n-bottomToolbarLabel="kendo.grid.bottomToolbarLabel|The label for the Grid bottom toolbar"
21906
+ bottomToolbarLabel="Bottom toolbar"
21907
+
21908
+ i18n-groupPanelLabel="kendo.grid.groupPanelLabel|The label for the Grid group panel toolbar"
21909
+ groupPanelLabel="Group panel"
21680
21910
  >
21681
21911
  </ng-container>
21682
21912
  <kendo-grid-toolbar
21683
21913
  class="k-toolbar k-grid-toolbar"
21684
21914
  *ngIf="showTopToolbar"
21685
21915
  [size]="size"
21916
+ [attr.aria-label]="messageFor('topToolbarLabel')"
21917
+ [navigable]="navigation.toolbarEnabled"
21918
+ [attr.aria-controls]="ariaRootId"
21686
21919
  position="top"></kendo-grid-toolbar>
21687
21920
  <kendo-pager
21688
21921
  *ngIf="showTopPager"
@@ -21699,13 +21932,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21699
21932
  </kendo-pager>
21700
21933
  <kendo-grid-group-panel
21701
21934
  *ngIf="showGroupPanel"
21935
+ [navigable]="navigation.toolbarEnabled"
21702
21936
  [text]="groupableEmptyText"
21703
21937
  [groups]="group"
21938
+ role="toolbar"
21939
+ [attr.aria-label]="messageFor('groupPanelLabel')"
21940
+ [attr.aria-controls]="ariaRootId"
21704
21941
  (change)="groupChange.emit($event)">
21705
21942
  </kendo-grid-group-panel>
21706
21943
  <div #ariaRoot
21707
21944
  class="k-grid-aria-root"
21708
21945
  role="grid"
21946
+ [id]="ariaRootId"
21709
21947
  [attr.aria-label]="ariaLabel"
21710
21948
  [attr.aria-rowcount]="ariaRowCount"
21711
21949
  [attr.aria-colcount]="ariaColCount">
@@ -21733,6 +21971,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21733
21971
  [detailTemplate]="detailTemplate">
21734
21972
  </colgroup>
21735
21973
  <thead kendoGridHeader
21974
+ role="rowgroup"
21736
21975
  [resizable]="resizable"
21737
21976
  [scrollable]="true"
21738
21977
  [columns]="$any(lockedColumns)"
@@ -21770,7 +22009,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21770
22009
  </colgroup>
21771
22010
  <thead kendoGridHeader
21772
22011
  [resizable]="resizable"
21773
- role="presentation"
22012
+ role="rowgroup"
21774
22013
  [scrollable]="true"
21775
22014
  [columns]="headerColumns"
21776
22015
  [totalColumnLevels]="totalColumnLevels"
@@ -21957,6 +22196,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21957
22196
  class="k-toolbar k-grid-toolbar k-grid-toolbar-bottom"
21958
22197
  *ngIf="showBottomToolbar"
21959
22198
  [size]="size"
22199
+ [navigable]="navigation.toolbarEnabled"
22200
+ [attr.aria-label]="messageFor('bottomToolbarLabel')"
22201
+ [attr.aria-controls]="ariaRootId"
21960
22202
  position="bottom"></kendo-grid-toolbar>
21961
22203
  `
21962
22204
  }]
@@ -23373,7 +23615,7 @@ const importedModules$4 = [
23373
23615
  DatePickerModule,
23374
23616
  PopupModule,
23375
23617
  SharedModule,
23376
- ButtonModule
23618
+ ButtonModule,
23377
23619
  ];
23378
23620
  const COMPONENTS$1 = [
23379
23621
  FilterInputDirective
@@ -25404,6 +25646,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
25404
25646
  type: Input
25405
25647
  }] } });
25406
25648
 
25649
+ /**
25650
+ * A directive applied to all toolbar elements that need to be a part of the Grid
25651
+ * keyboard navigation.
25652
+ */
25653
+ class GridToolbarFocusableDirective {
25654
+ constructor(host, ctx) {
25655
+ this.host = host;
25656
+ this.ctx = ctx;
25657
+ }
25658
+ /**
25659
+ * @hidden
25660
+ */
25661
+ get element() {
25662
+ return this.host.nativeElement;
25663
+ }
25664
+ /**
25665
+ * @hidden
25666
+ */
25667
+ get toolbarPosition() {
25668
+ var _a;
25669
+ return isDocumentAvailable() && ((_a = this.host.nativeElement.closest('.k-toolbar')) === null || _a === void 0 ? void 0 : _a.getAttribute('position'));
25670
+ }
25671
+ ngAfterViewInit() {
25672
+ var _a, _b;
25673
+ if (!isDocumentAvailable() || !this.toolbarPosition) {
25674
+ return;
25675
+ }
25676
+ (_a = this.ctx[`${this.toolbarPosition}ToolbarNavigation`]) === null || _a === void 0 ? void 0 : _a.navigableElements.push(this.element);
25677
+ (_b = this.ctx[`${this.toolbarPosition}ToolbarNavigation`]) === null || _b === void 0 ? void 0 : _b.notify();
25678
+ }
25679
+ ngOnDestroy() {
25680
+ if (!isDocumentAvailable() || !this.toolbarPosition) {
25681
+ return;
25682
+ }
25683
+ const elements = this.ctx[`${this.toolbarPosition}ToolbarNavigation`].navigableElements;
25684
+ this.ctx[`${this.toolbarPosition}ToolbarNavigation`].navigableElements = elements.filter(el => el !== this.element);
25685
+ this.ctx[`${this.toolbarPosition}ToolbarNavigation`].notify();
25686
+ }
25687
+ }
25688
+ GridToolbarFocusableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridToolbarFocusableDirective, deps: [{ token: i0.ElementRef }, { token: ContextService }], target: i0.ɵɵFactoryTarget.Directive });
25689
+ GridToolbarFocusableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: GridToolbarFocusableDirective, selector: "\n [kendoGridToolbarFocusable],\n [kendoGridAddCommand],\n [kendoGridCancelCommand],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridExcelCommand],\n [kendoGridPDFCommand]\n ", ngImport: i0 });
25690
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridToolbarFocusableDirective, decorators: [{
25691
+ type: Directive,
25692
+ args: [{
25693
+ selector: `
25694
+ [kendoGridToolbarFocusable],
25695
+ [kendoGridAddCommand],
25696
+ [kendoGridCancelCommand],
25697
+ [kendoGridEditCommand],
25698
+ [kendoGridRemoveCommand],
25699
+ [kendoGridSaveCommand],
25700
+ [kendoGridExcelCommand],
25701
+ [kendoGridPDFCommand]
25702
+ `
25703
+ }]
25704
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ContextService }]; } });
25705
+
25407
25706
  const exportedModules$1 = [
25408
25707
  GridComponent,
25409
25708
  ToolbarTemplateDirective,
@@ -25418,6 +25717,7 @@ const exportedModules$1 = [
25418
25717
  InCellEditingDirective,
25419
25718
  ExpandDetailsDirective,
25420
25719
  ExpandGroupDirective,
25720
+ GridToolbarFocusableDirective,
25421
25721
  ...GroupModule.exports(),
25422
25722
  ...SharedModule.exports(),
25423
25723
  ...BodyModule.exports(),
@@ -25444,7 +25744,8 @@ const declarations$2 = [
25444
25744
  ExpandGroupDirective,
25445
25745
  GroupBindingDirective,
25446
25746
  GridMarqueeDirective,
25447
- GridSpacerComponent
25747
+ GridSpacerComponent,
25748
+ GridToolbarFocusableDirective
25448
25749
  ];
25449
25750
  /**
25450
25751
  * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
@@ -25495,7 +25796,8 @@ GridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
25495
25796
  ExpandGroupDirective,
25496
25797
  GroupBindingDirective,
25497
25798
  GridMarqueeDirective,
25498
- GridSpacerComponent], imports: [CommonModule,
25799
+ GridSpacerComponent,
25800
+ GridToolbarFocusableDirective], imports: [CommonModule,
25499
25801
  GroupModule,
25500
25802
  SharedModule,
25501
25803
  BodyModule,
@@ -25517,7 +25819,8 @@ GridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
25517
25819
  ReactiveEditingDirective,
25518
25820
  InCellEditingDirective,
25519
25821
  ExpandDetailsDirective,
25520
- ExpandGroupDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, ColumnComponent, SpanColumnComponent, ColumnGroupComponent, FooterTemplateDirective, DetailTemplateDirective, FocusableDirective, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, NoRecordsTemplateDirective, EditTemplateDirective, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, HeaderTemplateDirective, SelectAllCheckboxDirective, PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, PagerDropDownListDirective, PagerInputDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, FilterCellOperatorsComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, ColumnChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent] });
25822
+ ExpandGroupDirective,
25823
+ GridToolbarFocusableDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, ColumnComponent, SpanColumnComponent, ColumnGroupComponent, FooterTemplateDirective, DetailTemplateDirective, FocusableDirective, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, NoRecordsTemplateDirective, EditTemplateDirective, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, HeaderTemplateDirective, SelectAllCheckboxDirective, PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, PagerDropDownListDirective, PagerInputDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, FilterCellOperatorsComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, ColumnChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent] });
25521
25824
  GridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridModule, imports: [[
25522
25825
  CommonModule,
25523
25826
  GroupModule,
@@ -26441,5 +26744,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
26441
26744
  * Generated bundle index. Do not edit.
26442
26745
  */
26443
26746
 
26444
- export { AddCommandDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BodyModule, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, BrowserSupportService, CELL_CONTEXT, CancelCommandDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditService, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuModule, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterModule, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridComponent, GridModule, GridSpacerComponent, GridTableDirective, GroupBindingDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupModule, GroupPanelComponent, GroupsService, HeaderComponent, HeaderModule, HeaderTemplateDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PagerComponent, PagerContextService, PagerDropDownListDirective, PagerInfoComponent, PagerInputComponent, PagerInputDirective, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowEditingDirectiveBase, RowFilterModule, SaveCommandDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectionCheckboxDirective, SelectionDirective, SelectionService, SharedFilterModule, SharedModule, SinglePopupService, SizingOptionsService, Skip, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateContextDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable, slice };
26747
+ export { AddCommandDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BodyModule, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, BrowserSupportService, CELL_CONTEXT, CancelCommandDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditService, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuModule, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterModule, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridComponent, GridModule, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupBindingDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupModule, GroupPanelComponent, GroupsService, HeaderComponent, HeaderModule, HeaderTemplateDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PagerComponent, PagerContextService, PagerDropDownListDirective, PagerInfoComponent, PagerInputComponent, PagerInputDirective, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowEditingDirectiveBase, RowFilterModule, SaveCommandDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectionCheckboxDirective, SelectionDirective, SelectionService, SharedFilterModule, SharedModule, SinglePopupService, SizingOptionsService, Skip, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateContextDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable, slice };
26445
26748