@progress/kendo-angular-grid 14.1.0-develop.8 → 14.1.0

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 (29) hide show
  1. package/column-menu/column-menu-container.component.d.ts +4 -3
  2. package/column-menu/column-menu-item.component.d.ts +7 -1
  3. package/column-menu/column-menu-item.directive.d.ts +15 -3
  4. package/column-menu/column-menu.service.d.ts +5 -0
  5. package/dragdrop/context-types.d.ts +1 -0
  6. package/esm2020/column-menu/column-menu-autosize-all.component.mjs +1 -1
  7. package/esm2020/column-menu/column-menu-autosize.component.mjs +1 -1
  8. package/esm2020/column-menu/column-menu-chooser.component.mjs +1 -1
  9. package/esm2020/column-menu/column-menu-container.component.mjs +18 -7
  10. package/esm2020/column-menu/column-menu-filter.component.mjs +1 -1
  11. package/esm2020/column-menu/column-menu-item.component.mjs +4 -1
  12. package/esm2020/column-menu/column-menu-item.directive.mjs +13 -3
  13. package/esm2020/column-menu/column-menu-lock.component.mjs +1 -1
  14. package/esm2020/column-menu/column-menu-position.component.mjs +1 -1
  15. package/esm2020/column-menu/column-menu-sort.component.mjs +1 -1
  16. package/esm2020/column-menu/column-menu-stick.component.mjs +1 -1
  17. package/esm2020/column-menu/column-menu.component.mjs +16 -8
  18. package/esm2020/grid.component.mjs +24 -0
  19. package/esm2020/grouping/group-panel.component.mjs +213 -23
  20. package/esm2020/grouping/group.module.mjs +6 -5
  21. package/esm2020/localization/messages.mjs +5 -1
  22. package/esm2020/package-metadata.mjs +2 -2
  23. package/fesm2015/progress-kendo-angular-grid.mjs +298 -50
  24. package/fesm2020/progress-kendo-angular-grid.mjs +294 -50
  25. package/grouping/group-panel.component.d.ts +25 -4
  26. package/grouping/group.module.d.ts +2 -1
  27. package/localization/messages.d.ts +11 -7
  28. package/package.json +16 -16
  29. package/schematics/ngAdd/index.js +3 -3
@@ -3,7 +3,7 @@
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, Directive, Optional, QueryList, isDevMode, ContentChildren, ContentChild, forwardRef, SkipSelf, Host, Inject, Output, SecurityContext, HostListener, ChangeDetectionStrategy, ElementRef, ViewChild, ViewChildren, Self, TemplateRef, Pipe, ViewEncapsulation, NgModule } from '@angular/core';
6
+ import { InjectionToken, Component, HostBinding, Input, EventEmitter, Injectable, Directive, Optional, QueryList, isDevMode, ContentChildren, ContentChild, forwardRef, SkipSelf, Host, Inject, Output, SecurityContext, HostListener, ChangeDetectionStrategy, ElementRef, ViewChild, TemplateRef, ViewChildren, Self, NgZone, Pipe, ViewEncapsulation, NgModule } from '@angular/core';
7
7
  import * as i1$1 from '@progress/kendo-angular-common';
8
8
  import { isDocumentAvailable, Keys, isPresent as isPresent$1, closest as closest$1, isFocusable as isFocusable$1, anyChanged, isChanged as isChanged$1, KendoInput, guid, hasObservers, ResizeSensorComponent, shouldShowValidationUI, DraggableModule, EventsModule, ResizeSensorModule, WatermarkModule } from '@progress/kendo-angular-common';
9
9
  import { merge, of, Subject, from, Subscription, interval, fromEvent, zip as zip$1, BehaviorSubject, Observable } from 'rxjs';
@@ -18,7 +18,7 @@ import { NG_VALUE_ACCESSOR, FormControl, FormGroup, ReactiveFormsModule, FormsMo
18
18
  import { validatePackage } from '@progress/kendo-licensing';
19
19
  import * as i1$2 from '@progress/kendo-angular-popup';
20
20
  import { PopupModule } from '@progress/kendo-angular-popup';
21
- import { plusIcon, cancelIcon, lockIcon, unlockIcon, insertMiddleIcon, caretAltLeftIcon, caretAltToLeftIcon, caretAltRightIcon, caretAltToRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterIcon, stickIcon, unstickIcon, setColumnPositionIcon, columnsIcon, maxWidthIcon, displayInlineFlexIcon, slidersIcon, moreVerticalIcon, filterClearIcon, reorderIcon, caretAltDownIcon, minusIcon } from '@progress/kendo-svg-icons';
21
+ import { plusIcon, cancelIcon, lockIcon, unlockIcon, insertMiddleIcon, caretAltLeftIcon, caretAltToLeftIcon, caretAltRightIcon, caretAltToRightIcon, arrowLeftIcon, arrowRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterIcon, stickIcon, unstickIcon, setColumnPositionIcon, columnsIcon, maxWidthIcon, displayInlineFlexIcon, slidersIcon, moreVerticalIcon, filterClearIcon, reorderIcon, caretAltDownIcon, minusIcon } from '@progress/kendo-svg-icons';
22
22
  import * as i1$3 from '@angular/platform-browser';
23
23
  import * as i3 from '@progress/kendo-angular-icons';
24
24
  import { IconsModule } from '@progress/kendo-angular-icons';
@@ -4474,8 +4474,8 @@ const packageMetadata = {
4474
4474
  name: '@progress/kendo-angular-grid',
4475
4475
  productName: 'Kendo UI for Angular',
4476
4476
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
4477
- publishDate: 1699372630,
4478
- version: '14.1.0-develop.8',
4477
+ publishDate: 1699452742,
4478
+ version: '14.1.0',
4479
4479
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
4480
4480
  };
4481
4481
 
@@ -8523,17 +8523,53 @@ const indicatorRules = or(overSameTarget, and(overLastTarget, isLastGroup));
8523
8523
  * @hidden
8524
8524
  */
8525
8525
  class GroupPanelComponent {
8526
- constructor(hint, cue, groupInfoService, ctx, cd) {
8526
+ constructor(hint, cue, groupInfoService, ctx, cd, popupService, ngZone, renderer) {
8527
8527
  this.hint = hint;
8528
8528
  this.cue = cue;
8529
8529
  this.groupInfoService = groupInfoService;
8530
8530
  this.ctx = ctx;
8531
8531
  this.cd = cd;
8532
+ this.popupService = popupService;
8533
+ this.ngZone = ngZone;
8534
+ this.renderer = renderer;
8532
8535
  this.change = new EventEmitter();
8533
8536
  this.groups = [];
8534
8537
  this.dropTargets = new QueryList();
8535
8538
  this.groupTitles = [];
8536
- this.subscription = new Subscription();
8539
+ this.isChipMenuOpen = false;
8540
+ this.rtl = false;
8541
+ this.arrowLeftIcon = arrowLeftIcon;
8542
+ this.arrowRightIcon = arrowRightIcon;
8543
+ this.handleKeyDown = (e) => {
8544
+ if (e.keyCode === Keys.ArrowDown || e.keyCode === Keys.ArrowUp) {
8545
+ e.preventDefault();
8546
+ const relatedItemType = e.target.matches(':first-child') ? 'next' : 'previous';
8547
+ this.activateMenuItem(e.target, relatedItemType);
8548
+ }
8549
+ else if (e.keyCode === Keys.Escape) {
8550
+ this.destroyMenu(true);
8551
+ }
8552
+ else if (e.keyCode === Keys.Tab) {
8553
+ this.destroyMenu(true);
8554
+ }
8555
+ else if (e.keyCode === Keys.Space || e.keyCode === Keys.Enter) {
8556
+ this.handleMenuClick(e);
8557
+ }
8558
+ };
8559
+ this.handleClick = (e) => {
8560
+ e.preventDefault();
8561
+ const menuItemEl = e.target.closest('.k-menu-item');
8562
+ if (!menuItemEl.matches('[aria-disabled="true"]')) {
8563
+ this.handleMenuClick(e);
8564
+ return;
8565
+ }
8566
+ if (menuItemEl.getAttribute('tabindex') === '0') {
8567
+ return;
8568
+ }
8569
+ const activeMenuItem = menuItemEl.closest('.k-menu-group').querySelector('[tabindex="0"]');
8570
+ const relatedItemType = activeMenuItem.matches(':first-child') ? 'next' : 'previous';
8571
+ this.activateMenuItem(activeMenuItem, relatedItemType);
8572
+ };
8537
8573
  }
8538
8574
  get groupHeaderClass() {
8539
8575
  return true;
@@ -8544,13 +8580,18 @@ class GroupPanelComponent {
8544
8580
  get text() {
8545
8581
  return this.emptyText ? this.emptyText : this.ctx.localization.get('groupPanelEmpty');
8546
8582
  }
8583
+ get gridId() {
8584
+ var _a;
8585
+ return (_a = this.ctx.grid) === null || _a === void 0 ? void 0 : _a.ariaRootId;
8586
+ }
8547
8587
  ngAfterViewInit() {
8588
+ this.subscription = this.ctx.localization.changes.subscribe(({ rtl }) => {
8589
+ this.rtl = rtl;
8590
+ this.cd.markForCheck();
8591
+ });
8548
8592
  this.subscription.add(observe(this.dropTargets)
8549
8593
  .subscribe(this.attachTargets.bind(this)));
8550
8594
  }
8551
- ngOnInit() {
8552
- this.subscription.add(this.ctx.localization.changes.subscribe(() => this.cd.markForCheck()));
8553
- }
8554
8595
  ngDoCheck() {
8555
8596
  const currentTitles = this.groups.map(group => this.groupInfoService.groupTitle(group));
8556
8597
  if (currentTitles.length !== this.groupTitles.length || currentTitles.some((current, idx) => current !== this.groupTitles[idx])) {
@@ -8565,6 +8606,7 @@ class GroupPanelComponent {
8565
8606
  if (this.targetSubscription) {
8566
8607
  this.targetSubscription.unsubscribe();
8567
8608
  }
8609
+ this.destroyMenu();
8568
8610
  }
8569
8611
  messageFor(token) {
8570
8612
  return this.ctx.localization.get(token);
@@ -8594,6 +8636,42 @@ class GroupPanelComponent {
8594
8636
  remove(group) {
8595
8637
  this.change.emit(this.groups.filter(x => x.field !== group.field));
8596
8638
  }
8639
+ toggleMenu(chip, first, last, field) {
8640
+ const anchor = chip.element.nativeElement.querySelector('.k-chip-action');
8641
+ if (this.popupRef) {
8642
+ const popupAnchor = this.popupRef.popup.instance.anchor;
8643
+ this.destroyMenu();
8644
+ if (anchor === popupAnchor) {
8645
+ return;
8646
+ }
8647
+ }
8648
+ this.first = first;
8649
+ this.last = last;
8650
+ const direction = this.ctx.localization.rtl ? 'right' : 'left';
8651
+ this.popupRef = this.popupService.open({
8652
+ anchor: anchor,
8653
+ content: this.defaultTemplate,
8654
+ anchorAlign: { vertical: 'bottom', horizontal: direction },
8655
+ popupAlign: { vertical: 'top', horizontal: direction },
8656
+ positionMode: 'absolute'
8657
+ });
8658
+ this.activeItem = this.dropTargets.find(dt => dt.context.field === field);
8659
+ this.renderer.setAttribute(this.popupRef.popupElement, 'dir', this.ctx.localization.rtl ? 'rtl' : 'ltr');
8660
+ const menuItems = Array.from(this.popupRef.popupElement.querySelectorAll('.k-menu-item'));
8661
+ this.activateMenuItem(menuItems[1], 'previous');
8662
+ this.popupSubs = this.popupRef.popupAnchorViewportLeave.subscribe(() => {
8663
+ this.destroyMenu(true);
8664
+ });
8665
+ if (isUniversal()) {
8666
+ return;
8667
+ }
8668
+ this.ngZone.runOutsideAngular(() => {
8669
+ this.popupSubs.add(fromEvent(document, 'click')
8670
+ .pipe(filter((event) => !closest(event.target, (node) => node === this.popupRef.popupElement || (node.matches && node.matches('.k-chip-action'))))).subscribe(() => {
8671
+ this.destroyMenu();
8672
+ }));
8673
+ });
8674
+ }
8597
8675
  canDrop(draggable, target) {
8598
8676
  const isIndicator = draggable.type === 'groupIndicator';
8599
8677
  const rules = isIndicator
@@ -8616,7 +8694,10 @@ class GroupPanelComponent {
8616
8694
  .reduce((acc, target) => merge(acc, target.leave), from([]));
8617
8695
  const dropStream = this.dropTargets
8618
8696
  .reduce((acc, target) => merge(acc, target.drop), from([]));
8619
- this.targetSubscription.add(enterStream.pipe(tap(_ => this.hint.removeLock()), filter(({ draggable, target }) => this.canDrop(draggable.context, target.context)), tap(this.enter.bind(this)), switchMapTo(dropStream.pipe(takeUntil(leaveStream.pipe(tap(this.leave.bind(this))))))).subscribe(this.drop.bind(this)));
8697
+ this.targetSubscription.add(enterStream.pipe(tap(_ => {
8698
+ this.hint.removeLock();
8699
+ this.destroyMenu();
8700
+ }), filter(({ draggable, target }) => this.canDrop(draggable.context, target.context)), tap(this.enter.bind(this)), switchMapTo(dropStream.pipe(takeUntil(leaveStream.pipe(tap(this.leave.bind(this))))))).subscribe(this.drop.bind(this)));
8620
8701
  }
8621
8702
  enter({ draggable, target }) {
8622
8703
  this.hint.enable();
@@ -8635,9 +8716,47 @@ class GroupPanelComponent {
8635
8716
  const index = this.dropTargets.toArray().indexOf(target);
8636
8717
  this.insert(field, index);
8637
8718
  }
8719
+ destroyMenu(focusAnchor) {
8720
+ if (this.popupRef) {
8721
+ this.popupRef.close();
8722
+ this.popupRef = null;
8723
+ this.popupSubs && this.popupSubs.unsubscribe();
8724
+ focusAnchor && this.activeItem.context.target.focus();
8725
+ }
8726
+ }
8727
+ activateMenuItem(item, relatedItemType) {
8728
+ this.renderer.setAttribute(item, 'tabindex', '-1');
8729
+ this.renderer.removeClass(item, 'k-focus');
8730
+ const relatedItem = item[`${relatedItemType}ElementSibling`];
8731
+ this.renderer.setAttribute(relatedItem, 'tabindex', '0');
8732
+ this.renderer.addClass(relatedItem, 'k-focus');
8733
+ this.ngZone.runOutsideAngular(() => setTimeout(() => relatedItem.focus()));
8734
+ }
8735
+ handleMenuClick(e) {
8736
+ e.preventDefault();
8737
+ if (e.target.getAttribute('aria-disabled') !== 'true') {
8738
+ const chips = this.dropTargets.toArray().slice(0, this.dropTargets.length - 1);
8739
+ let groupChip, groupChipIndex;
8740
+ for (let i = 0; i < chips.length; i++) {
8741
+ if (chips[i].element.nativeElement === this.popupRef.popup.instance.anchor.closest('.k-chip')) {
8742
+ groupChip = chips[i];
8743
+ groupChipIndex = i;
8744
+ break;
8745
+ }
8746
+ }
8747
+ const isPrev = e.target.closest('.k-menu-item').matches(':first-child');
8748
+ if (isPrev && groupChipIndex > 0) {
8749
+ this.insert(groupChip.context.field, groupChipIndex - 1);
8750
+ }
8751
+ else if (!isPrev && groupChipIndex < chips.length - 1) {
8752
+ this.insert(groupChip.context.field, groupChipIndex + 1);
8753
+ }
8754
+ this.destroyMenu(true);
8755
+ }
8756
+ }
8638
8757
  }
8639
- GroupPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupPanelComponent, deps: [{ token: DragHintService }, { token: DropCueService }, { token: GroupInfoService }, { token: ContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
8640
- 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: `
8758
+ GroupPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupPanelComponent, deps: [{ token: DragHintService }, { token: DropCueService }, { token: GroupInfoService }, { token: ContextService }, { token: i0.ChangeDetectorRef }, { token: i1$2.PopupService }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
8759
+ 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: "defaultTemplate", first: true, predicate: ["defaultTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "dropTargets", predicate: DropTargetDirective, descendants: true }], ngImport: i0, template: `
8641
8760
  <div
8642
8761
  *ngIf="groups.length === 0"
8643
8762
  class="k-grouping-drop-container"
@@ -8654,7 +8773,8 @@ GroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
8654
8773
  [navigable]="navigable"
8655
8774
  role="none">
8656
8775
  <kendo-chip
8657
- *ngFor="let group of groups; let index = index;"
8776
+ *ngFor="let group of groups; let index = index; let first = first; let last = last;"
8777
+ #chip
8658
8778
  kendoDropTarget
8659
8779
  kendoDraggableColumn
8660
8780
  kendoDraggable
@@ -8663,14 +8783,21 @@ GroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
8663
8783
  [context]="{
8664
8784
  field: group.field,
8665
8785
  type: 'groupIndicator',
8666
- hint: groupTitles[index]
8786
+ hint: groupTitles[index],
8787
+ target: chip
8667
8788
  }"
8668
8789
  [label]="groupTitles[index]"
8669
8790
  [removable]="true"
8791
+ [hasMenu]="true"
8670
8792
  [icon]="getDirectionIcon(group)"
8671
8793
  [svgIcon]="getDirectionSvgIcon(group)"
8794
+ [attr.aria-haspopup]="'menu'"
8795
+ [attr.aria-expanded]="isChipMenuOpen"
8796
+ [attr.aria-controls]="gridId"
8672
8797
  (contentClick)="directionChange(group)"
8673
8798
  (remove)="remove(group)"
8799
+ (menuToggle)="toggleMenu(chip, first, last, group.field)"
8800
+ (keydown.alt.arrowdown)="$event.preventDefault(); toggleMenu(chip, first, last, group.field)"
8674
8801
  >
8675
8802
  </kendo-chip>
8676
8803
  </kendo-chiplist>
@@ -8683,7 +8810,31 @@ GroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
8683
8810
  }"
8684
8811
  kendoDropTarget
8685
8812
  >&nbsp;</div>
8686
- `, 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 });
8813
+
8814
+ <ng-template #defaultTemplate>
8815
+ <ul unselectable="on" role="menu" class="k-group k-menu-group k-reset k-menu-group-md" [kendoEventsOutsideAngular]="{
8816
+ keydown: handleKeyDown,
8817
+ click: handleClick
8818
+ }">
8819
+ <li role="menuitem" unselectable="on" class="k-item k-menu-item" [attr.aria-disabled]="first">
8820
+ <span class="k-link k-menu-link" [class.k-disabled]="first">
8821
+ <kendo-icon-wrapper
8822
+ [name]="rtl ? 'arrow-right' : 'arrow-left'"
8823
+ [svgIcon]="rtl ? arrowRightIcon : arrowLeftIcon"></kendo-icon-wrapper>
8824
+ <span class="k-menu-link-text">{{messageFor('groupChipMenuPrevious')}}</span>
8825
+ </span>
8826
+ </li>
8827
+ <li role="menuitem" unselectable="on" class="k-item k-menu-item" [attr.aria-disabled]="last">
8828
+ <span class="k-link k-menu-link" [class.k-disabled]="last">
8829
+ <kendo-icon-wrapper
8830
+ [name]="rtl ? 'arrow-left' : 'arrow-right'"
8831
+ [svgIcon]="rtl ? arrowLeftIcon : arrowRightIcon"></kendo-icon-wrapper>
8832
+ <span class="k-menu-link-text">{{messageFor('groupChipMenuNext')}}</span>
8833
+ </span>
8834
+ </li>
8835
+ </ul>
8836
+ </ng-template>
8837
+ `, 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", "hasMenu", "menuIcon", "menuSvgIcon", "disabled", "size", "rounded", "fillMode", "themeColor"], outputs: ["remove", "menuToggle", "contentClick"] }, { type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], 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"] }, { type: i1$1.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8687
8838
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupPanelComponent, decorators: [{
8688
8839
  type: Component,
8689
8840
  args: [{
@@ -8706,7 +8857,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8706
8857
  [navigable]="navigable"
8707
8858
  role="none">
8708
8859
  <kendo-chip
8709
- *ngFor="let group of groups; let index = index;"
8860
+ *ngFor="let group of groups; let index = index; let first = first; let last = last;"
8861
+ #chip
8710
8862
  kendoDropTarget
8711
8863
  kendoDraggableColumn
8712
8864
  kendoDraggable
@@ -8715,14 +8867,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8715
8867
  [context]="{
8716
8868
  field: group.field,
8717
8869
  type: 'groupIndicator',
8718
- hint: groupTitles[index]
8870
+ hint: groupTitles[index],
8871
+ target: chip
8719
8872
  }"
8720
8873
  [label]="groupTitles[index]"
8721
8874
  [removable]="true"
8875
+ [hasMenu]="true"
8722
8876
  [icon]="getDirectionIcon(group)"
8723
8877
  [svgIcon]="getDirectionSvgIcon(group)"
8878
+ [attr.aria-haspopup]="'menu'"
8879
+ [attr.aria-expanded]="isChipMenuOpen"
8880
+ [attr.aria-controls]="gridId"
8724
8881
  (contentClick)="directionChange(group)"
8725
8882
  (remove)="remove(group)"
8883
+ (menuToggle)="toggleMenu(chip, first, last, group.field)"
8884
+ (keydown.alt.arrowdown)="$event.preventDefault(); toggleMenu(chip, first, last, group.field)"
8726
8885
  >
8727
8886
  </kendo-chip>
8728
8887
  </kendo-chiplist>
@@ -8735,9 +8894,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8735
8894
  }"
8736
8895
  kendoDropTarget
8737
8896
  >&nbsp;</div>
8897
+
8898
+ <ng-template #defaultTemplate>
8899
+ <ul unselectable="on" role="menu" class="k-group k-menu-group k-reset k-menu-group-md" [kendoEventsOutsideAngular]="{
8900
+ keydown: handleKeyDown,
8901
+ click: handleClick
8902
+ }">
8903
+ <li role="menuitem" unselectable="on" class="k-item k-menu-item" [attr.aria-disabled]="first">
8904
+ <span class="k-link k-menu-link" [class.k-disabled]="first">
8905
+ <kendo-icon-wrapper
8906
+ [name]="rtl ? 'arrow-right' : 'arrow-left'"
8907
+ [svgIcon]="rtl ? arrowRightIcon : arrowLeftIcon"></kendo-icon-wrapper>
8908
+ <span class="k-menu-link-text">{{messageFor('groupChipMenuPrevious')}}</span>
8909
+ </span>
8910
+ </li>
8911
+ <li role="menuitem" unselectable="on" class="k-item k-menu-item" [attr.aria-disabled]="last">
8912
+ <span class="k-link k-menu-link" [class.k-disabled]="last">
8913
+ <kendo-icon-wrapper
8914
+ [name]="rtl ? 'arrow-left' : 'arrow-right'"
8915
+ [svgIcon]="rtl ? arrowLeftIcon : arrowRightIcon"></kendo-icon-wrapper>
8916
+ <span class="k-menu-link-text">{{messageFor('groupChipMenuNext')}}</span>
8917
+ </span>
8918
+ </li>
8919
+ </ul>
8920
+ </ng-template>
8738
8921
  `
8739
8922
  }]
8740
- }], ctorParameters: function () { return [{ type: DragHintService }, { type: DropCueService }, { type: GroupInfoService }, { type: ContextService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { change: [{
8923
+ }], ctorParameters: function () { return [{ type: DragHintService }, { type: DropCueService }, { type: GroupInfoService }, { type: ContextService }, { type: i0.ChangeDetectorRef }, { type: i1$2.PopupService }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { change: [{
8741
8924
  type: Output
8742
8925
  }], groupHeaderClass: [{
8743
8926
  type: HostBinding,
@@ -8751,6 +8934,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8751
8934
  }], dropTargets: [{
8752
8935
  type: ViewChildren,
8753
8936
  args: [DropTargetDirective]
8937
+ }], defaultTemplate: [{
8938
+ type: ViewChild,
8939
+ args: ['defaultTemplate', { static: true, read: TemplateRef }]
8754
8940
  }] } });
8755
8941
 
8756
8942
  /**
@@ -11615,7 +11801,7 @@ class ColumnMenuItemComponent {
11615
11801
  }
11616
11802
  }
11617
11803
  ColumnMenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11618
- ColumnMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: { icon: "icon", svgIcon: "svgIcon", text: "text", selected: "selected", disabled: "disabled", expanded: "expanded" }, outputs: { itemClick: "itemClick", expand: "expand", collapse: "collapse" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: ColumnMenuItemContentTemplateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
11804
+ ColumnMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: { icon: "icon", svgIcon: "svgIcon", text: "text", selected: "selected", disabled: "disabled", expanded: "expanded", service: "service" }, outputs: { itemClick: "itemClick", expand: "expand", collapse: "collapse" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: ColumnMenuItemContentTemplateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
11619
11805
  <div
11620
11806
  class="k-columnmenu-item"
11621
11807
  (click)="onClick($event)"
@@ -11723,6 +11909,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
11723
11909
  type: Input
11724
11910
  }], expanded: [{
11725
11911
  type: Input
11912
+ }], service: [{
11913
+ type: Input
11726
11914
  }], contentTemplate: [{
11727
11915
  type: ContentChild,
11728
11916
  args: [ColumnMenuItemContentTemplateDirective]
@@ -11804,7 +11992,7 @@ ColumnMenuLockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
11804
11992
  (itemClick)="toggleColumn()"
11805
11993
  [disabled]="disabled">
11806
11994
  </kendo-grid-columnmenu-item>
11807
- `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded"], outputs: ["itemClick", "expand", "collapse"] }] });
11995
+ `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
11808
11996
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuLockComponent, decorators: [{
11809
11997
  type: Component,
11810
11998
  args: [{
@@ -11899,7 +12087,7 @@ ColumnMenuStickComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
11899
12087
  (itemClick)="toggleColumn()"
11900
12088
  [disabled]="disabled">
11901
12089
  </kendo-grid-columnmenu-item>
11902
- `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded"], outputs: ["itemClick", "expand", "collapse"] }] });
12090
+ `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
11903
12091
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuStickComponent, decorators: [{
11904
12092
  type: Component,
11905
12093
  args: [{
@@ -12032,7 +12220,7 @@ ColumnMenuPositionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.
12032
12220
  </kendo-grid-columnmenu-stick>
12033
12221
  </ng-template>
12034
12222
  </kendo-grid-columnmenu-item>
12035
- `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded"], outputs: ["itemClick", "expand", "collapse"] }, { type: ColumnMenuLockComponent, selector: "kendo-grid-columnmenu-lock" }, { type: ColumnMenuStickComponent, selector: "kendo-grid-columnmenu-stick" }], directives: [{ type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
12223
+ `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }, { type: ColumnMenuLockComponent, selector: "kendo-grid-columnmenu-lock" }, { type: ColumnMenuStickComponent, selector: "kendo-grid-columnmenu-stick" }], directives: [{ type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
12036
12224
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuPositionComponent, decorators: [{
12037
12225
  type: Component,
12038
12226
  args: [{
@@ -12551,7 +12739,7 @@ ColumnMenuChooserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
12551
12739
  </kendo-grid-columnlist>
12552
12740
  </ng-template>
12553
12741
  </kendo-grid-columnmenu-item>
12554
- `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded"], outputs: ["itemClick", "expand", "collapse"] }, { type: ColumnListComponent, selector: "kendo-grid-columnlist", inputs: ["columns", "autoSync", "ariaLabel", "allowHideAll", "applyText", "resetText", "actionsClass", "isLast", "isExpanded", "service"], outputs: ["reset", "apply", "columnChange"] }], directives: [{ type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }] });
12742
+ `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }, { type: ColumnListComponent, selector: "kendo-grid-columnlist", inputs: ["columns", "autoSync", "ariaLabel", "allowHideAll", "applyText", "resetText", "actionsClass", "isLast", "isExpanded", "service"], outputs: ["reset", "apply", "columnChange"] }], directives: [{ type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }] });
12555
12743
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuChooserComponent, decorators: [{
12556
12744
  type: Component,
12557
12745
  args: [{
@@ -12677,7 +12865,7 @@ ColumnMenuFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
12677
12865
  </kendo-grid-filter-menu-container>
12678
12866
  </ng-template>
12679
12867
  </kendo-grid-columnmenu-item>
12680
- `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded"], outputs: ["itemClick", "expand", "collapse"] }, { type: FilterMenuContainerComponent, selector: "kendo-grid-filter-menu-container", inputs: ["column", "isLast", "isExpanded", "menuTabbingService", "filter", "actionsClass"], outputs: ["close"] }], directives: [{ type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }] });
12868
+ `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }, { type: FilterMenuContainerComponent, selector: "kendo-grid-filter-menu-container", inputs: ["column", "isLast", "isExpanded", "menuTabbingService", "filter", "actionsClass"], outputs: ["close"] }], directives: [{ type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }] });
12681
12869
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuFilterComponent, decorators: [{
12682
12870
  type: Component,
12683
12871
  args: [{
@@ -12715,9 +12903,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12715
12903
  type: Input
12716
12904
  }] } });
12717
12905
 
12718
- /**
12719
- * @hidden
12720
- */
12721
12906
  class ColumnMenuItemDirective {
12722
12907
  constructor(hostElement, renderer, ngZone) {
12723
12908
  this.hostElement = hostElement;
@@ -12744,6 +12929,9 @@ class ColumnMenuItemDirective {
12744
12929
  }
12745
12930
  };
12746
12931
  }
12932
+ /**
12933
+ * @hidden
12934
+ */
12747
12935
  set isFirst(value) {
12748
12936
  if (value) {
12749
12937
  const focusableElement = this.columnMenuItems[0];
@@ -12755,9 +12943,15 @@ class ColumnMenuItemDirective {
12755
12943
  }
12756
12944
  this._isFirst = value;
12757
12945
  }
12946
+ /**
12947
+ * @hidden
12948
+ */
12758
12949
  get isFirst() {
12759
12950
  return this._isFirst;
12760
12951
  }
12952
+ /**
12953
+ * @hidden
12954
+ */
12761
12955
  set isLast(value) {
12762
12956
  if (!this.columnMenuItems) {
12763
12957
  return;
@@ -12775,15 +12969,20 @@ class ColumnMenuItemDirective {
12775
12969
  }
12776
12970
  this._isLast = value;
12777
12971
  }
12972
+ /**
12973
+ * @hidden
12974
+ */
12778
12975
  get isLast() {
12779
12976
  return this._isLast;
12780
12977
  }
12781
12978
  ngAfterViewInit() {
12979
+ var _a;
12782
12980
  this.columnMenuItems = this.hostElement.nativeElement.querySelectorAll('.k-columnmenu-item');
12783
12981
  [].slice.apply(this.columnMenuItems).forEach(el => this.renderer.setAttribute(el, 'tabindex', '0'));
12784
12982
  if (this.menuItemComponent instanceof ColumnMenuFilterComponent) {
12785
12983
  this.menuItemComponent.service.menuTabbingService.isColumnMenu = true;
12786
12984
  }
12985
+ (_a = this.menuItemComponent.service) === null || _a === void 0 ? void 0 : _a.columnMenuContainer.templateMenuItems.push(this);
12787
12986
  }
12788
12987
  ngOnDestroy() {
12789
12988
  if (this.subs) {
@@ -12816,17 +13015,25 @@ class ColumnMenuContainerComponent {
12816
13015
  constructor(service, ngZone) {
12817
13016
  this.service = service;
12818
13017
  this.ngZone = ngZone;
13018
+ this.templateMenuItems = [];
13019
+ service.columnMenuContainer = this;
12819
13020
  }
12820
- ngAfterContentInit() {
12821
- if (!this.columnMenuItems.length) {
13021
+ ngAfterViewInit() {
13022
+ if (this.columnMenuItems.length) {
13023
+ this.columnMenuItems.first.isFirst = true;
13024
+ this.columnMenuItems.last.isLast = true;
13025
+ }
13026
+ else if (this.templateMenuItems.length) {
13027
+ this.templateMenuItems[0].isFirst = true;
13028
+ this.templateMenuItems[this.templateMenuItems.length - 1].isLast = true;
13029
+ }
13030
+ else {
12822
13031
  return;
12823
13032
  }
12824
- this.columnMenuItems.first.isFirst = true;
12825
- this.columnMenuItems.last.isLast = true;
12826
13033
  this.ngZone.onStable.pipe(take(1)).subscribe(() => this.service.menuTabbingService.firstFocusable.focus());
12827
13034
  }
12828
13035
  }
12829
- ColumnMenuContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuContainerComponent, deps: [{ token: ColumnMenuService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
13036
+ ColumnMenuContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuContainerComponent, deps: [{ token: ColumnMenuService }, { token: NgZone }], target: i0.ɵɵFactoryTarget.Component });
12830
13037
  ColumnMenuContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ColumnMenuContainerComponent, selector: "kendo-grid-columnmenu-container", queries: [{ propertyName: "columnMenuItems", predicate: ColumnMenuItemDirective, descendants: true }], ngImport: i0, template: `
12831
13038
  <ng-content></ng-content>
12832
13039
  `, isInline: true });
@@ -12838,7 +13045,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12838
13045
  <ng-content></ng-content>
12839
13046
  `
12840
13047
  }]
12841
- }], ctorParameters: function () { return [{ type: ColumnMenuService }, { type: i0.NgZone }]; }, propDecorators: { columnMenuItems: [{
13048
+ }], ctorParameters: function () {
13049
+ return [{ type: ColumnMenuService }, { type: i0.NgZone, decorators: [{
13050
+ type: Inject,
13051
+ args: [NgZone]
13052
+ }] }];
13053
+ }, propDecorators: { columnMenuItems: [{
12842
13054
  type: ContentChildren,
12843
13055
  args: [ColumnMenuItemDirective, { descendants: true }]
12844
13056
  }] } });
@@ -12920,7 +13132,7 @@ ColumnMenuSortComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
12920
13132
  (itemClick)="toggleSort('desc')"
12921
13133
  [selected]="sortedDesc">
12922
13134
  </kendo-grid-columnmenu-item>
12923
- `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded"], outputs: ["itemClick", "expand", "collapse"] }] });
13135
+ `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
12924
13136
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuSortComponent, decorators: [{
12925
13137
  type: Component,
12926
13138
  args: [{
@@ -12992,7 +13204,7 @@ ColumnMenuAutoSizeColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion
12992
13204
  [svgIcon]="maxWidthIcon"
12993
13205
  (itemClick)="autoSizeColumn()"
12994
13206
  ></kendo-grid-columnmenu-item>
12995
- `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded"], outputs: ["itemClick", "expand", "collapse"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
13207
+ `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
12996
13208
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuAutoSizeColumnComponent, decorators: [{
12997
13209
  type: Component,
12998
13210
  args: [{
@@ -13058,7 +13270,7 @@ ColumnMenuAutoSizeAllColumnsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVer
13058
13270
  [svgIcon]="displayInlineFlexIcon"
13059
13271
  (itemClick)="autoSizeAllColumns()"
13060
13272
  ></kendo-grid-columnmenu-item>
13061
- `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded"], outputs: ["itemClick", "expand", "collapse"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
13273
+ `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
13062
13274
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuAutoSizeAllColumnsComponent, decorators: [{
13063
13275
  type: Component,
13064
13276
  args: [{
@@ -13353,10 +13565,14 @@ ColumnMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
13353
13565
  [svgIcon]="moreVerticalIcon"></kendo-icon-wrapper>
13354
13566
  </a>
13355
13567
  <ng-template #template>
13356
- <ng-container
13357
- [ngTemplateOutlet]="this.column.columnMenuTemplateRef || this.columnMenuTemplate || (this.settings.view === 'tabbed' ? this.tabbedInterfaceTemplate : this.defaultTemplate)"
13358
- [ngTemplateOutletContext]="{ service: service, column: column }">
13359
- </ng-container>
13568
+ <kendo-grid-columnmenu-container
13569
+ (keydown.escape)="close(true)"
13570
+ (keydown.enter)="$event.stopImmediatePropagation()">
13571
+ <ng-container
13572
+ [ngTemplateOutlet]="this.column.columnMenuTemplateRef || this.columnMenuTemplate || (this.settings.view === 'tabbed' ? this.tabbedInterfaceTemplate : this.defaultTemplate)"
13573
+ [ngTemplateOutletContext]="{ service: service, column: column }">
13574
+ </ng-container>
13575
+ </kendo-grid-columnmenu-container>
13360
13576
  </ng-template>
13361
13577
  <ng-template #defaultTemplate>
13362
13578
  <kendo-grid-columnmenu-container
@@ -13524,10 +13740,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13524
13740
  [svgIcon]="moreVerticalIcon"></kendo-icon-wrapper>
13525
13741
  </a>
13526
13742
  <ng-template #template>
13527
- <ng-container
13528
- [ngTemplateOutlet]="this.column.columnMenuTemplateRef || this.columnMenuTemplate || (this.settings.view === 'tabbed' ? this.tabbedInterfaceTemplate : this.defaultTemplate)"
13529
- [ngTemplateOutletContext]="{ service: service, column: column }">
13530
- </ng-container>
13743
+ <kendo-grid-columnmenu-container
13744
+ (keydown.escape)="close(true)"
13745
+ (keydown.enter)="$event.stopImmediatePropagation()">
13746
+ <ng-container
13747
+ [ngTemplateOutlet]="this.column.columnMenuTemplateRef || this.columnMenuTemplate || (this.settings.view === 'tabbed' ? this.tabbedInterfaceTemplate : this.defaultTemplate)"
13748
+ [ngTemplateOutletContext]="{ service: service, column: column }">
13749
+ </ng-container>
13750
+ </kendo-grid-columnmenu-container>
13531
13751
  </ng-template>
13532
13752
  <ng-template #defaultTemplate>
13533
13753
  <kendo-grid-columnmenu-container
@@ -19338,7 +19558,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
19338
19558
  class GridMessages extends ComponentMessages {
19339
19559
  }
19340
19560
  GridMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
19341
- 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", filterCellOperatorLabel: "filterCellOperatorLabel", booleanFilterCellLabel: "booleanFilterCellLabel", 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", dragRowHandleLabel: "dragRowHandleLabel", columnMenuFilterTabTitle: "columnMenuFilterTabTitle", columnMenuGeneralTabTitle: "columnMenuGeneralTabTitle", columnMenuColumnsTabTitle: "columnMenuColumnsTabTitle" }, usesInheritance: true, ngImport: i0 });
19561
+ 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", filterCellOperatorLabel: "filterCellOperatorLabel", booleanFilterCellLabel: "booleanFilterCellLabel", 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", dragRowHandleLabel: "dragRowHandleLabel", columnMenuFilterTabTitle: "columnMenuFilterTabTitle", columnMenuGeneralTabTitle: "columnMenuGeneralTabTitle", columnMenuColumnsTabTitle: "columnMenuColumnsTabTitle", groupChipMenuPrevious: "groupChipMenuPrevious", groupChipMenuNext: "groupChipMenuNext" }, usesInheritance: true, ngImport: i0 });
19342
19562
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, decorators: [{
19343
19563
  type: Directive,
19344
19564
  args: [{
@@ -19507,6 +19727,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
19507
19727
  type: Input
19508
19728
  }], columnMenuColumnsTabTitle: [{
19509
19729
  type: Input
19730
+ }], groupChipMenuPrevious: [{
19731
+ type: Input
19732
+ }], groupChipMenuNext: [{
19733
+ type: Input
19510
19734
  }] } });
19511
19735
 
19512
19736
  /**
@@ -21634,6 +21858,12 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21634
21858
  i18n-sortedDefault="kendo.grid.sortedDefault|The status announcement when a column is no longer sorted"
21635
21859
  sortedDefault="Not Sorted"
21636
21860
 
21861
+ i18n-sortedAscending="kendo.grid.sortedAscending|The title of the Group Chip indicating the ascending sorting order of the groups"
21862
+ sortedAscending="Sorted Ascending"
21863
+
21864
+ i18n-sortedDescending="kendo.grid.sortedDescending|The title of the Group Chip indicating the descending sorting order of the groups"
21865
+ sortedDescending="Sorted Descending"
21866
+
21637
21867
  i18n-columnsApply="kendo.grid.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
21638
21868
  columnsApply="Apply"
21639
21869
 
@@ -21693,6 +21923,12 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21693
21923
 
21694
21924
  i18n-columnMenuColumnsTabTitle="kendo.grid.columnMenuColumnsTabTitle|The title for the column menu Columns tab"
21695
21925
  columnMenuColumnsTabTitle="Columns"
21926
+
21927
+ i18n-groupChipMenuPrevious="kendo.grid.groupChipMenuPrevious|The text for the Group pane Chip Menu Move as previous item"
21928
+ groupChipMenuPrevious="Move as previous"
21929
+
21930
+ i18n-groupChipMenuNext="kendo.grid.groupChipMenuNext|The text for the Group pane Chip Menu Move as next item"
21931
+ groupChipMenuNext="Move as next"
21696
21932
  >
21697
21933
  </ng-container>
21698
21934
  <kendo-grid-toolbar
@@ -22252,6 +22488,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22252
22488
  i18n-sortedDefault="kendo.grid.sortedDefault|The status announcement when a column is no longer sorted"
22253
22489
  sortedDefault="Not Sorted"
22254
22490
 
22491
+ i18n-sortedAscending="kendo.grid.sortedAscending|The title of the Group Chip indicating the ascending sorting order of the groups"
22492
+ sortedAscending="Sorted Ascending"
22493
+
22494
+ i18n-sortedDescending="kendo.grid.sortedDescending|The title of the Group Chip indicating the descending sorting order of the groups"
22495
+ sortedDescending="Sorted Descending"
22496
+
22255
22497
  i18n-columnsApply="kendo.grid.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
22256
22498
  columnsApply="Apply"
22257
22499
 
@@ -22311,6 +22553,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22311
22553
 
22312
22554
  i18n-columnMenuColumnsTabTitle="kendo.grid.columnMenuColumnsTabTitle|The title for the column menu Columns tab"
22313
22555
  columnMenuColumnsTabTitle="Columns"
22556
+
22557
+ i18n-groupChipMenuPrevious="kendo.grid.groupChipMenuPrevious|The text for the Group pane Chip Menu Move as previous item"
22558
+ groupChipMenuPrevious="Move as previous"
22559
+
22560
+ i18n-groupChipMenuNext="kendo.grid.groupChipMenuNext|The text for the Group pane Chip Menu Move as next item"
22561
+ groupChipMenuNext="Move as next"
22314
22562
  >
22315
22563
  </ng-container>
22316
22564
  <kendo-grid-toolbar
@@ -24319,7 +24567,7 @@ const exportedModules$4 = [
24319
24567
  GroupHeaderColumnTemplateDirective,
24320
24568
  GroupFooterTemplateDirective,
24321
24569
  GroupHeaderComponent,
24322
- GroupPanelComponent
24570
+ GroupPanelComponent,
24323
24571
  ];
24324
24572
  /**
24325
24573
  * @hidden
@@ -24338,18 +24586,18 @@ GroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "1
24338
24586
  GroupHeaderColumnTemplateDirective,
24339
24587
  GroupFooterTemplateDirective,
24340
24588
  GroupHeaderComponent,
24341
- GroupPanelComponent], imports: [CommonModule, SharedModule, DragAndDropModule, ChipModule], exports: [GroupHeaderTemplateDirective,
24589
+ GroupPanelComponent], imports: [CommonModule, SharedModule, DragAndDropModule, ChipModule, PopupModule], exports: [GroupHeaderTemplateDirective,
24342
24590
  GroupHeaderColumnTemplateDirective,
24343
24591
  GroupFooterTemplateDirective,
24344
24592
  GroupHeaderComponent,
24345
24593
  GroupPanelComponent] });
24346
- GroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupModule, imports: [[CommonModule, SharedModule, DragAndDropModule, ChipModule]] });
24594
+ GroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupModule, imports: [[CommonModule, SharedModule, DragAndDropModule, ChipModule, PopupModule]] });
24347
24595
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupModule, decorators: [{
24348
24596
  type: NgModule,
24349
24597
  args: [{
24350
- declarations: [exportedModules$4],
24598
+ declarations: [...exportedModules$4],
24351
24599
  exports: [exportedModules$4],
24352
- imports: [CommonModule, SharedModule, DragAndDropModule, ChipModule]
24600
+ imports: [CommonModule, SharedModule, DragAndDropModule, ChipModule, PopupModule]
24353
24601
  }]
24354
24602
  }] });
24355
24603