@progress/kendo-angular-grid 14.1.0-develop.9 → 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, Optional, Inject, Directive, SkipSelf, QueryList, isDevMode, ContentChildren, ContentChild, forwardRef, Host, Output, SecurityContext, HostListener, ChangeDetectionStrategy, ElementRef, ViewChild, 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, 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';
@@ -21,7 +21,7 @@ import { PopupModule } from '@progress/kendo-angular-popup';
21
21
  import * as i1$3 from '@angular/platform-browser';
22
22
  import * as i3 from '@progress/kendo-angular-icons';
23
23
  import { IconsModule } from '@progress/kendo-angular-icons';
24
- 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';
24
+ 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';
25
25
  import * as i42 from '@progress/kendo-angular-utils';
26
26
  import { DragTargetContainerDirective, DropTargetContainerDirective, DragAndDropModule as DragAndDropModule$1 } from '@progress/kendo-angular-utils';
27
27
  import * as i1$4 from '@progress/kendo-angular-dropdowns';
@@ -4442,8 +4442,8 @@ const packageMetadata = {
4442
4442
  name: '@progress/kendo-angular-grid',
4443
4443
  productName: 'Kendo UI for Angular',
4444
4444
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
4445
- publishDate: 1699436265,
4446
- version: '14.1.0-develop.9',
4445
+ publishDate: 1699452742,
4446
+ version: '14.1.0',
4447
4447
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
4448
4448
  };
4449
4449
 
@@ -8473,17 +8473,53 @@ const indicatorRules = or(overSameTarget, and(overLastTarget, isLastGroup));
8473
8473
  * @hidden
8474
8474
  */
8475
8475
  class GroupPanelComponent {
8476
- constructor(hint, cue, groupInfoService, ctx, cd) {
8476
+ constructor(hint, cue, groupInfoService, ctx, cd, popupService, ngZone, renderer) {
8477
8477
  this.hint = hint;
8478
8478
  this.cue = cue;
8479
8479
  this.groupInfoService = groupInfoService;
8480
8480
  this.ctx = ctx;
8481
8481
  this.cd = cd;
8482
+ this.popupService = popupService;
8483
+ this.ngZone = ngZone;
8484
+ this.renderer = renderer;
8482
8485
  this.change = new EventEmitter();
8483
8486
  this.groups = [];
8484
8487
  this.dropTargets = new QueryList();
8485
8488
  this.groupTitles = [];
8486
- this.subscription = new Subscription();
8489
+ this.isChipMenuOpen = false;
8490
+ this.rtl = false;
8491
+ this.arrowLeftIcon = arrowLeftIcon;
8492
+ this.arrowRightIcon = arrowRightIcon;
8493
+ this.handleKeyDown = (e) => {
8494
+ if (e.keyCode === Keys.ArrowDown || e.keyCode === Keys.ArrowUp) {
8495
+ e.preventDefault();
8496
+ const relatedItemType = e.target.matches(':first-child') ? 'next' : 'previous';
8497
+ this.activateMenuItem(e.target, relatedItemType);
8498
+ }
8499
+ else if (e.keyCode === Keys.Escape) {
8500
+ this.destroyMenu(true);
8501
+ }
8502
+ else if (e.keyCode === Keys.Tab) {
8503
+ this.destroyMenu(true);
8504
+ }
8505
+ else if (e.keyCode === Keys.Space || e.keyCode === Keys.Enter) {
8506
+ this.handleMenuClick(e);
8507
+ }
8508
+ };
8509
+ this.handleClick = (e) => {
8510
+ e.preventDefault();
8511
+ const menuItemEl = e.target.closest('.k-menu-item');
8512
+ if (!menuItemEl.matches('[aria-disabled="true"]')) {
8513
+ this.handleMenuClick(e);
8514
+ return;
8515
+ }
8516
+ if (menuItemEl.getAttribute('tabindex') === '0') {
8517
+ return;
8518
+ }
8519
+ const activeMenuItem = menuItemEl.closest('.k-menu-group').querySelector('[tabindex="0"]');
8520
+ const relatedItemType = activeMenuItem.matches(':first-child') ? 'next' : 'previous';
8521
+ this.activateMenuItem(activeMenuItem, relatedItemType);
8522
+ };
8487
8523
  }
8488
8524
  get groupHeaderClass() {
8489
8525
  return true;
@@ -8494,13 +8530,17 @@ class GroupPanelComponent {
8494
8530
  get text() {
8495
8531
  return this.emptyText ? this.emptyText : this.ctx.localization.get('groupPanelEmpty');
8496
8532
  }
8533
+ get gridId() {
8534
+ return this.ctx.grid?.ariaRootId;
8535
+ }
8497
8536
  ngAfterViewInit() {
8537
+ this.subscription = this.ctx.localization.changes.subscribe(({ rtl }) => {
8538
+ this.rtl = rtl;
8539
+ this.cd.markForCheck();
8540
+ });
8498
8541
  this.subscription.add(observe(this.dropTargets)
8499
8542
  .subscribe(this.attachTargets.bind(this)));
8500
8543
  }
8501
- ngOnInit() {
8502
- this.subscription.add(this.ctx.localization.changes.subscribe(() => this.cd.markForCheck()));
8503
- }
8504
8544
  ngDoCheck() {
8505
8545
  const currentTitles = this.groups.map(group => this.groupInfoService.groupTitle(group));
8506
8546
  if (currentTitles.length !== this.groupTitles.length || currentTitles.some((current, idx) => current !== this.groupTitles[idx])) {
@@ -8515,6 +8555,7 @@ class GroupPanelComponent {
8515
8555
  if (this.targetSubscription) {
8516
8556
  this.targetSubscription.unsubscribe();
8517
8557
  }
8558
+ this.destroyMenu();
8518
8559
  }
8519
8560
  messageFor(token) {
8520
8561
  return this.ctx.localization.get(token);
@@ -8544,6 +8585,42 @@ class GroupPanelComponent {
8544
8585
  remove(group) {
8545
8586
  this.change.emit(this.groups.filter(x => x.field !== group.field));
8546
8587
  }
8588
+ toggleMenu(chip, first, last, field) {
8589
+ const anchor = chip.element.nativeElement.querySelector('.k-chip-action');
8590
+ if (this.popupRef) {
8591
+ const popupAnchor = this.popupRef.popup.instance.anchor;
8592
+ this.destroyMenu();
8593
+ if (anchor === popupAnchor) {
8594
+ return;
8595
+ }
8596
+ }
8597
+ this.first = first;
8598
+ this.last = last;
8599
+ const direction = this.ctx.localization.rtl ? 'right' : 'left';
8600
+ this.popupRef = this.popupService.open({
8601
+ anchor: anchor,
8602
+ content: this.defaultTemplate,
8603
+ anchorAlign: { vertical: 'bottom', horizontal: direction },
8604
+ popupAlign: { vertical: 'top', horizontal: direction },
8605
+ positionMode: 'absolute'
8606
+ });
8607
+ this.activeItem = this.dropTargets.find(dt => dt.context.field === field);
8608
+ this.renderer.setAttribute(this.popupRef.popupElement, 'dir', this.ctx.localization.rtl ? 'rtl' : 'ltr');
8609
+ const menuItems = Array.from(this.popupRef.popupElement.querySelectorAll('.k-menu-item'));
8610
+ this.activateMenuItem(menuItems[1], 'previous');
8611
+ this.popupSubs = this.popupRef.popupAnchorViewportLeave.subscribe(() => {
8612
+ this.destroyMenu(true);
8613
+ });
8614
+ if (isUniversal()) {
8615
+ return;
8616
+ }
8617
+ this.ngZone.runOutsideAngular(() => {
8618
+ this.popupSubs.add(fromEvent(document, 'click')
8619
+ .pipe(filter((event) => !closest(event.target, (node) => node === this.popupRef.popupElement || (node.matches && node.matches('.k-chip-action'))))).subscribe(() => {
8620
+ this.destroyMenu();
8621
+ }));
8622
+ });
8623
+ }
8547
8624
  canDrop(draggable, target) {
8548
8625
  const isIndicator = draggable.type === 'groupIndicator';
8549
8626
  const rules = isIndicator
@@ -8566,7 +8643,10 @@ class GroupPanelComponent {
8566
8643
  .reduce((acc, target) => merge(acc, target.leave), from([]));
8567
8644
  const dropStream = this.dropTargets
8568
8645
  .reduce((acc, target) => merge(acc, target.drop), from([]));
8569
- 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)));
8646
+ this.targetSubscription.add(enterStream.pipe(tap(_ => {
8647
+ this.hint.removeLock();
8648
+ this.destroyMenu();
8649
+ }), 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)));
8570
8650
  }
8571
8651
  enter({ draggable, target }) {
8572
8652
  this.hint.enable();
@@ -8585,9 +8665,47 @@ class GroupPanelComponent {
8585
8665
  const index = this.dropTargets.toArray().indexOf(target);
8586
8666
  this.insert(field, index);
8587
8667
  }
8668
+ destroyMenu(focusAnchor) {
8669
+ if (this.popupRef) {
8670
+ this.popupRef.close();
8671
+ this.popupRef = null;
8672
+ this.popupSubs && this.popupSubs.unsubscribe();
8673
+ focusAnchor && this.activeItem.context.target.focus();
8674
+ }
8675
+ }
8676
+ activateMenuItem(item, relatedItemType) {
8677
+ this.renderer.setAttribute(item, 'tabindex', '-1');
8678
+ this.renderer.removeClass(item, 'k-focus');
8679
+ const relatedItem = item[`${relatedItemType}ElementSibling`];
8680
+ this.renderer.setAttribute(relatedItem, 'tabindex', '0');
8681
+ this.renderer.addClass(relatedItem, 'k-focus');
8682
+ this.ngZone.runOutsideAngular(() => setTimeout(() => relatedItem.focus()));
8683
+ }
8684
+ handleMenuClick(e) {
8685
+ e.preventDefault();
8686
+ if (e.target.getAttribute('aria-disabled') !== 'true') {
8687
+ const chips = this.dropTargets.toArray().slice(0, this.dropTargets.length - 1);
8688
+ let groupChip, groupChipIndex;
8689
+ for (let i = 0; i < chips.length; i++) {
8690
+ if (chips[i].element.nativeElement === this.popupRef.popup.instance.anchor.closest('.k-chip')) {
8691
+ groupChip = chips[i];
8692
+ groupChipIndex = i;
8693
+ break;
8694
+ }
8695
+ }
8696
+ const isPrev = e.target.closest('.k-menu-item').matches(':first-child');
8697
+ if (isPrev && groupChipIndex > 0) {
8698
+ this.insert(groupChip.context.field, groupChipIndex - 1);
8699
+ }
8700
+ else if (!isPrev && groupChipIndex < chips.length - 1) {
8701
+ this.insert(groupChip.context.field, groupChipIndex + 1);
8702
+ }
8703
+ this.destroyMenu(true);
8704
+ }
8705
+ }
8588
8706
  }
8589
- 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 });
8590
- 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: `
8707
+ 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 });
8708
+ 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: `
8591
8709
  <div
8592
8710
  *ngIf="groups.length === 0"
8593
8711
  class="k-grouping-drop-container"
@@ -8604,7 +8722,8 @@ GroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
8604
8722
  [navigable]="navigable"
8605
8723
  role="none">
8606
8724
  <kendo-chip
8607
- *ngFor="let group of groups; let index = index;"
8725
+ *ngFor="let group of groups; let index = index; let first = first; let last = last;"
8726
+ #chip
8608
8727
  kendoDropTarget
8609
8728
  kendoDraggableColumn
8610
8729
  kendoDraggable
@@ -8613,14 +8732,21 @@ GroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
8613
8732
  [context]="{
8614
8733
  field: group.field,
8615
8734
  type: 'groupIndicator',
8616
- hint: groupTitles[index]
8735
+ hint: groupTitles[index],
8736
+ target: chip
8617
8737
  }"
8618
8738
  [label]="groupTitles[index]"
8619
8739
  [removable]="true"
8740
+ [hasMenu]="true"
8620
8741
  [icon]="getDirectionIcon(group)"
8621
8742
  [svgIcon]="getDirectionSvgIcon(group)"
8743
+ [attr.aria-haspopup]="'menu'"
8744
+ [attr.aria-expanded]="isChipMenuOpen"
8745
+ [attr.aria-controls]="gridId"
8622
8746
  (contentClick)="directionChange(group)"
8623
8747
  (remove)="remove(group)"
8748
+ (menuToggle)="toggleMenu(chip, first, last, group.field)"
8749
+ (keydown.alt.arrowdown)="$event.preventDefault(); toggleMenu(chip, first, last, group.field)"
8624
8750
  >
8625
8751
  </kendo-chip>
8626
8752
  </kendo-chiplist>
@@ -8633,7 +8759,31 @@ GroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
8633
8759
  }"
8634
8760
  kendoDropTarget
8635
8761
  >&nbsp;</div>
8636
- `, 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 });
8762
+
8763
+ <ng-template #defaultTemplate>
8764
+ <ul unselectable="on" role="menu" class="k-group k-menu-group k-reset k-menu-group-md" [kendoEventsOutsideAngular]="{
8765
+ keydown: handleKeyDown,
8766
+ click: handleClick
8767
+ }">
8768
+ <li role="menuitem" unselectable="on" class="k-item k-menu-item" [attr.aria-disabled]="first">
8769
+ <span class="k-link k-menu-link" [class.k-disabled]="first">
8770
+ <kendo-icon-wrapper
8771
+ [name]="rtl ? 'arrow-right' : 'arrow-left'"
8772
+ [svgIcon]="rtl ? arrowRightIcon : arrowLeftIcon"></kendo-icon-wrapper>
8773
+ <span class="k-menu-link-text">{{messageFor('groupChipMenuPrevious')}}</span>
8774
+ </span>
8775
+ </li>
8776
+ <li role="menuitem" unselectable="on" class="k-item k-menu-item" [attr.aria-disabled]="last">
8777
+ <span class="k-link k-menu-link" [class.k-disabled]="last">
8778
+ <kendo-icon-wrapper
8779
+ [name]="rtl ? 'arrow-left' : 'arrow-right'"
8780
+ [svgIcon]="rtl ? arrowLeftIcon : arrowRightIcon"></kendo-icon-wrapper>
8781
+ <span class="k-menu-link-text">{{messageFor('groupChipMenuNext')}}</span>
8782
+ </span>
8783
+ </li>
8784
+ </ul>
8785
+ </ng-template>
8786
+ `, 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 });
8637
8787
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupPanelComponent, decorators: [{
8638
8788
  type: Component,
8639
8789
  args: [{
@@ -8656,7 +8806,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8656
8806
  [navigable]="navigable"
8657
8807
  role="none">
8658
8808
  <kendo-chip
8659
- *ngFor="let group of groups; let index = index;"
8809
+ *ngFor="let group of groups; let index = index; let first = first; let last = last;"
8810
+ #chip
8660
8811
  kendoDropTarget
8661
8812
  kendoDraggableColumn
8662
8813
  kendoDraggable
@@ -8665,14 +8816,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8665
8816
  [context]="{
8666
8817
  field: group.field,
8667
8818
  type: 'groupIndicator',
8668
- hint: groupTitles[index]
8819
+ hint: groupTitles[index],
8820
+ target: chip
8669
8821
  }"
8670
8822
  [label]="groupTitles[index]"
8671
8823
  [removable]="true"
8824
+ [hasMenu]="true"
8672
8825
  [icon]="getDirectionIcon(group)"
8673
8826
  [svgIcon]="getDirectionSvgIcon(group)"
8827
+ [attr.aria-haspopup]="'menu'"
8828
+ [attr.aria-expanded]="isChipMenuOpen"
8829
+ [attr.aria-controls]="gridId"
8674
8830
  (contentClick)="directionChange(group)"
8675
8831
  (remove)="remove(group)"
8832
+ (menuToggle)="toggleMenu(chip, first, last, group.field)"
8833
+ (keydown.alt.arrowdown)="$event.preventDefault(); toggleMenu(chip, first, last, group.field)"
8676
8834
  >
8677
8835
  </kendo-chip>
8678
8836
  </kendo-chiplist>
@@ -8685,9 +8843,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8685
8843
  }"
8686
8844
  kendoDropTarget
8687
8845
  >&nbsp;</div>
8846
+
8847
+ <ng-template #defaultTemplate>
8848
+ <ul unselectable="on" role="menu" class="k-group k-menu-group k-reset k-menu-group-md" [kendoEventsOutsideAngular]="{
8849
+ keydown: handleKeyDown,
8850
+ click: handleClick
8851
+ }">
8852
+ <li role="menuitem" unselectable="on" class="k-item k-menu-item" [attr.aria-disabled]="first">
8853
+ <span class="k-link k-menu-link" [class.k-disabled]="first">
8854
+ <kendo-icon-wrapper
8855
+ [name]="rtl ? 'arrow-right' : 'arrow-left'"
8856
+ [svgIcon]="rtl ? arrowRightIcon : arrowLeftIcon"></kendo-icon-wrapper>
8857
+ <span class="k-menu-link-text">{{messageFor('groupChipMenuPrevious')}}</span>
8858
+ </span>
8859
+ </li>
8860
+ <li role="menuitem" unselectable="on" class="k-item k-menu-item" [attr.aria-disabled]="last">
8861
+ <span class="k-link k-menu-link" [class.k-disabled]="last">
8862
+ <kendo-icon-wrapper
8863
+ [name]="rtl ? 'arrow-left' : 'arrow-right'"
8864
+ [svgIcon]="rtl ? arrowLeftIcon : arrowRightIcon"></kendo-icon-wrapper>
8865
+ <span class="k-menu-link-text">{{messageFor('groupChipMenuNext')}}</span>
8866
+ </span>
8867
+ </li>
8868
+ </ul>
8869
+ </ng-template>
8688
8870
  `
8689
8871
  }]
8690
- }], ctorParameters: function () { return [{ type: DragHintService }, { type: DropCueService }, { type: GroupInfoService }, { type: ContextService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { change: [{
8872
+ }], 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: [{
8691
8873
  type: Output
8692
8874
  }], groupHeaderClass: [{
8693
8875
  type: HostBinding,
@@ -8701,6 +8883,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8701
8883
  }], dropTargets: [{
8702
8884
  type: ViewChildren,
8703
8885
  args: [DropTargetDirective]
8886
+ }], defaultTemplate: [{
8887
+ type: ViewChild,
8888
+ args: ['defaultTemplate', { static: true, read: TemplateRef }]
8704
8889
  }] } });
8705
8890
 
8706
8891
  /**
@@ -11551,7 +11736,7 @@ class ColumnMenuItemComponent {
11551
11736
  }
11552
11737
  }
11553
11738
  ColumnMenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11554
- 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: `
11739
+ 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: `
11555
11740
  <div
11556
11741
  class="k-columnmenu-item"
11557
11742
  (click)="onClick($event)"
@@ -11659,6 +11844,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
11659
11844
  type: Input
11660
11845
  }], expanded: [{
11661
11846
  type: Input
11847
+ }], service: [{
11848
+ type: Input
11662
11849
  }], contentTemplate: [{
11663
11850
  type: ContentChild,
11664
11851
  args: [ColumnMenuItemContentTemplateDirective]
@@ -11740,7 +11927,7 @@ ColumnMenuLockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
11740
11927
  (itemClick)="toggleColumn()"
11741
11928
  [disabled]="disabled">
11742
11929
  </kendo-grid-columnmenu-item>
11743
- `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded"], outputs: ["itemClick", "expand", "collapse"] }] });
11930
+ `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
11744
11931
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuLockComponent, decorators: [{
11745
11932
  type: Component,
11746
11933
  args: [{
@@ -11835,7 +12022,7 @@ ColumnMenuStickComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
11835
12022
  (itemClick)="toggleColumn()"
11836
12023
  [disabled]="disabled">
11837
12024
  </kendo-grid-columnmenu-item>
11838
- `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded"], outputs: ["itemClick", "expand", "collapse"] }] });
12025
+ `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
11839
12026
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuStickComponent, decorators: [{
11840
12027
  type: Component,
11841
12028
  args: [{
@@ -11968,7 +12155,7 @@ ColumnMenuPositionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.
11968
12155
  </kendo-grid-columnmenu-stick>
11969
12156
  </ng-template>
11970
12157
  </kendo-grid-columnmenu-item>
11971
- `, 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"] }] });
12158
+ `, 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"] }] });
11972
12159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuPositionComponent, decorators: [{
11973
12160
  type: Component,
11974
12161
  args: [{
@@ -12486,7 +12673,7 @@ ColumnMenuChooserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
12486
12673
  </kendo-grid-columnlist>
12487
12674
  </ng-template>
12488
12675
  </kendo-grid-columnmenu-item>
12489
- `, 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]" }] });
12676
+ `, 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]" }] });
12490
12677
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuChooserComponent, decorators: [{
12491
12678
  type: Component,
12492
12679
  args: [{
@@ -12612,7 +12799,7 @@ ColumnMenuFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
12612
12799
  </kendo-grid-filter-menu-container>
12613
12800
  </ng-template>
12614
12801
  </kendo-grid-columnmenu-item>
12615
- `, 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]" }] });
12802
+ `, 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]" }] });
12616
12803
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuFilterComponent, decorators: [{
12617
12804
  type: Component,
12618
12805
  args: [{
@@ -12650,9 +12837,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12650
12837
  type: Input
12651
12838
  }] } });
12652
12839
 
12653
- /**
12654
- * @hidden
12655
- */
12656
12840
  class ColumnMenuItemDirective {
12657
12841
  constructor(hostElement, renderer, ngZone) {
12658
12842
  this.hostElement = hostElement;
@@ -12679,6 +12863,9 @@ class ColumnMenuItemDirective {
12679
12863
  }
12680
12864
  };
12681
12865
  }
12866
+ /**
12867
+ * @hidden
12868
+ */
12682
12869
  set isFirst(value) {
12683
12870
  if (value) {
12684
12871
  const focusableElement = this.columnMenuItems[0];
@@ -12690,9 +12877,15 @@ class ColumnMenuItemDirective {
12690
12877
  }
12691
12878
  this._isFirst = value;
12692
12879
  }
12880
+ /**
12881
+ * @hidden
12882
+ */
12693
12883
  get isFirst() {
12694
12884
  return this._isFirst;
12695
12885
  }
12886
+ /**
12887
+ * @hidden
12888
+ */
12696
12889
  set isLast(value) {
12697
12890
  if (!this.columnMenuItems) {
12698
12891
  return;
@@ -12710,6 +12903,9 @@ class ColumnMenuItemDirective {
12710
12903
  }
12711
12904
  this._isLast = value;
12712
12905
  }
12906
+ /**
12907
+ * @hidden
12908
+ */
12713
12909
  get isLast() {
12714
12910
  return this._isLast;
12715
12911
  }
@@ -12719,6 +12915,7 @@ class ColumnMenuItemDirective {
12719
12915
  if (this.menuItemComponent instanceof ColumnMenuFilterComponent) {
12720
12916
  this.menuItemComponent.service.menuTabbingService.isColumnMenu = true;
12721
12917
  }
12918
+ this.menuItemComponent.service?.columnMenuContainer.templateMenuItems.push(this);
12722
12919
  }
12723
12920
  ngOnDestroy() {
12724
12921
  if (this.subs) {
@@ -12751,17 +12948,25 @@ class ColumnMenuContainerComponent {
12751
12948
  constructor(service, ngZone) {
12752
12949
  this.service = service;
12753
12950
  this.ngZone = ngZone;
12951
+ this.templateMenuItems = [];
12952
+ service.columnMenuContainer = this;
12754
12953
  }
12755
- ngAfterContentInit() {
12756
- if (!this.columnMenuItems.length) {
12954
+ ngAfterViewInit() {
12955
+ if (this.columnMenuItems.length) {
12956
+ this.columnMenuItems.first.isFirst = true;
12957
+ this.columnMenuItems.last.isLast = true;
12958
+ }
12959
+ else if (this.templateMenuItems.length) {
12960
+ this.templateMenuItems[0].isFirst = true;
12961
+ this.templateMenuItems[this.templateMenuItems.length - 1].isLast = true;
12962
+ }
12963
+ else {
12757
12964
  return;
12758
12965
  }
12759
- this.columnMenuItems.first.isFirst = true;
12760
- this.columnMenuItems.last.isLast = true;
12761
12966
  this.ngZone.onStable.pipe(take(1)).subscribe(() => this.service.menuTabbingService.firstFocusable.focus());
12762
12967
  }
12763
12968
  }
12764
- 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 });
12969
+ 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 });
12765
12970
  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: `
12766
12971
  <ng-content></ng-content>
12767
12972
  `, isInline: true });
@@ -12773,7 +12978,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12773
12978
  <ng-content></ng-content>
12774
12979
  `
12775
12980
  }]
12776
- }], ctorParameters: function () { return [{ type: ColumnMenuService }, { type: i0.NgZone }]; }, propDecorators: { columnMenuItems: [{
12981
+ }], ctorParameters: function () { return [{ type: ColumnMenuService }, { type: i0.NgZone, decorators: [{
12982
+ type: Inject,
12983
+ args: [NgZone]
12984
+ }] }]; }, propDecorators: { columnMenuItems: [{
12777
12985
  type: ContentChildren,
12778
12986
  args: [ColumnMenuItemDirective, { descendants: true }]
12779
12987
  }] } });
@@ -12855,7 +13063,7 @@ ColumnMenuSortComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
12855
13063
  (itemClick)="toggleSort('desc')"
12856
13064
  [selected]="sortedDesc">
12857
13065
  </kendo-grid-columnmenu-item>
12858
- `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded"], outputs: ["itemClick", "expand", "collapse"] }] });
13066
+ `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
12859
13067
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuSortComponent, decorators: [{
12860
13068
  type: Component,
12861
13069
  args: [{
@@ -12927,7 +13135,7 @@ ColumnMenuAutoSizeColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion
12927
13135
  [svgIcon]="maxWidthIcon"
12928
13136
  (itemClick)="autoSizeColumn()"
12929
13137
  ></kendo-grid-columnmenu-item>
12930
- `, 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"] }] });
13138
+ `, 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"] }] });
12931
13139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuAutoSizeColumnComponent, decorators: [{
12932
13140
  type: Component,
12933
13141
  args: [{
@@ -12993,7 +13201,7 @@ ColumnMenuAutoSizeAllColumnsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVer
12993
13201
  [svgIcon]="displayInlineFlexIcon"
12994
13202
  (itemClick)="autoSizeAllColumns()"
12995
13203
  ></kendo-grid-columnmenu-item>
12996
- `, 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"] }] });
13204
+ `, 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"] }] });
12997
13205
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuAutoSizeAllColumnsComponent, decorators: [{
12998
13206
  type: Component,
12999
13207
  args: [{
@@ -13287,10 +13495,14 @@ ColumnMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
13287
13495
  [svgIcon]="moreVerticalIcon"></kendo-icon-wrapper>
13288
13496
  </a>
13289
13497
  <ng-template #template>
13290
- <ng-container
13291
- [ngTemplateOutlet]="this.column.columnMenuTemplateRef || this.columnMenuTemplate || (this.settings.view === 'tabbed' ? this.tabbedInterfaceTemplate : this.defaultTemplate)"
13292
- [ngTemplateOutletContext]="{ service: service, column: column }">
13293
- </ng-container>
13498
+ <kendo-grid-columnmenu-container
13499
+ (keydown.escape)="close(true)"
13500
+ (keydown.enter)="$event.stopImmediatePropagation()">
13501
+ <ng-container
13502
+ [ngTemplateOutlet]="this.column.columnMenuTemplateRef || this.columnMenuTemplate || (this.settings.view === 'tabbed' ? this.tabbedInterfaceTemplate : this.defaultTemplate)"
13503
+ [ngTemplateOutletContext]="{ service: service, column: column }">
13504
+ </ng-container>
13505
+ </kendo-grid-columnmenu-container>
13294
13506
  </ng-template>
13295
13507
  <ng-template #defaultTemplate>
13296
13508
  <kendo-grid-columnmenu-container
@@ -13458,10 +13670,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13458
13670
  [svgIcon]="moreVerticalIcon"></kendo-icon-wrapper>
13459
13671
  </a>
13460
13672
  <ng-template #template>
13461
- <ng-container
13462
- [ngTemplateOutlet]="this.column.columnMenuTemplateRef || this.columnMenuTemplate || (this.settings.view === 'tabbed' ? this.tabbedInterfaceTemplate : this.defaultTemplate)"
13463
- [ngTemplateOutletContext]="{ service: service, column: column }">
13464
- </ng-container>
13673
+ <kendo-grid-columnmenu-container
13674
+ (keydown.escape)="close(true)"
13675
+ (keydown.enter)="$event.stopImmediatePropagation()">
13676
+ <ng-container
13677
+ [ngTemplateOutlet]="this.column.columnMenuTemplateRef || this.columnMenuTemplate || (this.settings.view === 'tabbed' ? this.tabbedInterfaceTemplate : this.defaultTemplate)"
13678
+ [ngTemplateOutletContext]="{ service: service, column: column }">
13679
+ </ng-container>
13680
+ </kendo-grid-columnmenu-container>
13465
13681
  </ng-template>
13466
13682
  <ng-template #defaultTemplate>
13467
13683
  <kendo-grid-columnmenu-container
@@ -19258,7 +19474,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
19258
19474
  class GridMessages extends ComponentMessages {
19259
19475
  }
19260
19476
  GridMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
19261
- 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 });
19477
+ 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 });
19262
19478
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, decorators: [{
19263
19479
  type: Directive,
19264
19480
  args: [{
@@ -19427,6 +19643,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
19427
19643
  type: Input
19428
19644
  }], columnMenuColumnsTabTitle: [{
19429
19645
  type: Input
19646
+ }], groupChipMenuPrevious: [{
19647
+ type: Input
19648
+ }], groupChipMenuNext: [{
19649
+ type: Input
19430
19650
  }] } });
19431
19651
 
19432
19652
  /**
@@ -21551,6 +21771,12 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21551
21771
  i18n-sortedDefault="kendo.grid.sortedDefault|The status announcement when a column is no longer sorted"
21552
21772
  sortedDefault="Not Sorted"
21553
21773
 
21774
+ i18n-sortedAscending="kendo.grid.sortedAscending|The title of the Group Chip indicating the ascending sorting order of the groups"
21775
+ sortedAscending="Sorted Ascending"
21776
+
21777
+ i18n-sortedDescending="kendo.grid.sortedDescending|The title of the Group Chip indicating the descending sorting order of the groups"
21778
+ sortedDescending="Sorted Descending"
21779
+
21554
21780
  i18n-columnsApply="kendo.grid.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
21555
21781
  columnsApply="Apply"
21556
21782
 
@@ -21610,6 +21836,12 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21610
21836
 
21611
21837
  i18n-columnMenuColumnsTabTitle="kendo.grid.columnMenuColumnsTabTitle|The title for the column menu Columns tab"
21612
21838
  columnMenuColumnsTabTitle="Columns"
21839
+
21840
+ i18n-groupChipMenuPrevious="kendo.grid.groupChipMenuPrevious|The text for the Group pane Chip Menu Move as previous item"
21841
+ groupChipMenuPrevious="Move as previous"
21842
+
21843
+ i18n-groupChipMenuNext="kendo.grid.groupChipMenuNext|The text for the Group pane Chip Menu Move as next item"
21844
+ groupChipMenuNext="Move as next"
21613
21845
  >
21614
21846
  </ng-container>
21615
21847
  <kendo-grid-toolbar
@@ -22169,6 +22401,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22169
22401
  i18n-sortedDefault="kendo.grid.sortedDefault|The status announcement when a column is no longer sorted"
22170
22402
  sortedDefault="Not Sorted"
22171
22403
 
22404
+ i18n-sortedAscending="kendo.grid.sortedAscending|The title of the Group Chip indicating the ascending sorting order of the groups"
22405
+ sortedAscending="Sorted Ascending"
22406
+
22407
+ i18n-sortedDescending="kendo.grid.sortedDescending|The title of the Group Chip indicating the descending sorting order of the groups"
22408
+ sortedDescending="Sorted Descending"
22409
+
22172
22410
  i18n-columnsApply="kendo.grid.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
22173
22411
  columnsApply="Apply"
22174
22412
 
@@ -22228,6 +22466,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22228
22466
 
22229
22467
  i18n-columnMenuColumnsTabTitle="kendo.grid.columnMenuColumnsTabTitle|The title for the column menu Columns tab"
22230
22468
  columnMenuColumnsTabTitle="Columns"
22469
+
22470
+ i18n-groupChipMenuPrevious="kendo.grid.groupChipMenuPrevious|The text for the Group pane Chip Menu Move as previous item"
22471
+ groupChipMenuPrevious="Move as previous"
22472
+
22473
+ i18n-groupChipMenuNext="kendo.grid.groupChipMenuNext|The text for the Group pane Chip Menu Move as next item"
22474
+ groupChipMenuNext="Move as next"
22231
22475
  >
22232
22476
  </ng-container>
22233
22477
  <kendo-grid-toolbar
@@ -24235,7 +24479,7 @@ const exportedModules$4 = [
24235
24479
  GroupHeaderColumnTemplateDirective,
24236
24480
  GroupFooterTemplateDirective,
24237
24481
  GroupHeaderComponent,
24238
- GroupPanelComponent
24482
+ GroupPanelComponent,
24239
24483
  ];
24240
24484
  /**
24241
24485
  * @hidden
@@ -24254,18 +24498,18 @@ GroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "1
24254
24498
  GroupHeaderColumnTemplateDirective,
24255
24499
  GroupFooterTemplateDirective,
24256
24500
  GroupHeaderComponent,
24257
- GroupPanelComponent], imports: [CommonModule, SharedModule, DragAndDropModule, ChipModule], exports: [GroupHeaderTemplateDirective,
24501
+ GroupPanelComponent], imports: [CommonModule, SharedModule, DragAndDropModule, ChipModule, PopupModule], exports: [GroupHeaderTemplateDirective,
24258
24502
  GroupHeaderColumnTemplateDirective,
24259
24503
  GroupFooterTemplateDirective,
24260
24504
  GroupHeaderComponent,
24261
24505
  GroupPanelComponent] });
24262
- GroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupModule, imports: [[CommonModule, SharedModule, DragAndDropModule, ChipModule]] });
24506
+ GroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupModule, imports: [[CommonModule, SharedModule, DragAndDropModule, ChipModule, PopupModule]] });
24263
24507
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupModule, decorators: [{
24264
24508
  type: NgModule,
24265
24509
  args: [{
24266
- declarations: [exportedModules$4],
24510
+ declarations: [...exportedModules$4],
24267
24511
  exports: [exportedModules$4],
24268
- imports: [CommonModule, SharedModule, DragAndDropModule, ChipModule]
24512
+ imports: [CommonModule, SharedModule, DragAndDropModule, ChipModule, PopupModule]
24269
24513
  }]
24270
24514
  }] });
24271
24515