@progress/kendo-angular-grid 14.1.0-develop.9 → 14.1.1-develop.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) 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/esm2020/pager/pager.component.mjs +4 -0
  24. package/fesm2015/progress-kendo-angular-grid.mjs +302 -50
  25. package/fesm2020/progress-kendo-angular-grid.mjs +298 -50
  26. package/grouping/group-panel.component.d.ts +25 -4
  27. package/grouping/group.module.d.ts +2 -1
  28. package/localization/messages.d.ts +11 -7
  29. package/package.json +16 -16
  30. 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: 1699865049,
4446
+ version: '14.1.1-develop.1',
4447
4447
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
4448
4448
  };
4449
4449
 
@@ -7984,21 +7984,25 @@ class PagerComponent {
7984
7984
  }
7985
7985
  }
7986
7986
  navigateToPreviousPage(e) {
7987
+ e.preventDefault();
7987
7988
  if (this.shouldTriggerPageChange(e.target, this.currentPage > 1)) {
7988
7989
  this.pagerContext.prevPage();
7989
7990
  }
7990
7991
  }
7991
7992
  navigateToNextPage(e) {
7993
+ e.preventDefault();
7992
7994
  if (this.shouldTriggerPageChange(e.target, this.currentPage < this.totalPages)) {
7993
7995
  this.pagerContext.nextPage();
7994
7996
  }
7995
7997
  }
7996
7998
  navigateToFirstPage(e) {
7999
+ e.preventDefault();
7997
8000
  if (this.shouldTriggerPageChange(e.target, this.currentPage > 1)) {
7998
8001
  this.pagerContext.changePage(0);
7999
8002
  }
8000
8003
  }
8001
8004
  navigateToLastPage(e) {
8005
+ e.preventDefault();
8002
8006
  if (this.shouldTriggerPageChange(e.target, this.currentPage < this.totalPages)) {
8003
8007
  this.pagerContext.changePage(this.totalPages - 1);
8004
8008
  }
@@ -8473,17 +8477,53 @@ const indicatorRules = or(overSameTarget, and(overLastTarget, isLastGroup));
8473
8477
  * @hidden
8474
8478
  */
8475
8479
  class GroupPanelComponent {
8476
- constructor(hint, cue, groupInfoService, ctx, cd) {
8480
+ constructor(hint, cue, groupInfoService, ctx, cd, popupService, ngZone, renderer) {
8477
8481
  this.hint = hint;
8478
8482
  this.cue = cue;
8479
8483
  this.groupInfoService = groupInfoService;
8480
8484
  this.ctx = ctx;
8481
8485
  this.cd = cd;
8486
+ this.popupService = popupService;
8487
+ this.ngZone = ngZone;
8488
+ this.renderer = renderer;
8482
8489
  this.change = new EventEmitter();
8483
8490
  this.groups = [];
8484
8491
  this.dropTargets = new QueryList();
8485
8492
  this.groupTitles = [];
8486
- this.subscription = new Subscription();
8493
+ this.isChipMenuOpen = false;
8494
+ this.rtl = false;
8495
+ this.arrowLeftIcon = arrowLeftIcon;
8496
+ this.arrowRightIcon = arrowRightIcon;
8497
+ this.handleKeyDown = (e) => {
8498
+ if (e.keyCode === Keys.ArrowDown || e.keyCode === Keys.ArrowUp) {
8499
+ e.preventDefault();
8500
+ const relatedItemType = e.target.matches(':first-child') ? 'next' : 'previous';
8501
+ this.activateMenuItem(e.target, relatedItemType);
8502
+ }
8503
+ else if (e.keyCode === Keys.Escape) {
8504
+ this.destroyMenu(true);
8505
+ }
8506
+ else if (e.keyCode === Keys.Tab) {
8507
+ this.destroyMenu(true);
8508
+ }
8509
+ else if (e.keyCode === Keys.Space || e.keyCode === Keys.Enter) {
8510
+ this.handleMenuClick(e);
8511
+ }
8512
+ };
8513
+ this.handleClick = (e) => {
8514
+ e.preventDefault();
8515
+ const menuItemEl = e.target.closest('.k-menu-item');
8516
+ if (!menuItemEl.matches('[aria-disabled="true"]')) {
8517
+ this.handleMenuClick(e);
8518
+ return;
8519
+ }
8520
+ if (menuItemEl.getAttribute('tabindex') === '0') {
8521
+ return;
8522
+ }
8523
+ const activeMenuItem = menuItemEl.closest('.k-menu-group').querySelector('[tabindex="0"]');
8524
+ const relatedItemType = activeMenuItem.matches(':first-child') ? 'next' : 'previous';
8525
+ this.activateMenuItem(activeMenuItem, relatedItemType);
8526
+ };
8487
8527
  }
8488
8528
  get groupHeaderClass() {
8489
8529
  return true;
@@ -8494,13 +8534,17 @@ class GroupPanelComponent {
8494
8534
  get text() {
8495
8535
  return this.emptyText ? this.emptyText : this.ctx.localization.get('groupPanelEmpty');
8496
8536
  }
8537
+ get gridId() {
8538
+ return this.ctx.grid?.ariaRootId;
8539
+ }
8497
8540
  ngAfterViewInit() {
8541
+ this.subscription = this.ctx.localization.changes.subscribe(({ rtl }) => {
8542
+ this.rtl = rtl;
8543
+ this.cd.markForCheck();
8544
+ });
8498
8545
  this.subscription.add(observe(this.dropTargets)
8499
8546
  .subscribe(this.attachTargets.bind(this)));
8500
8547
  }
8501
- ngOnInit() {
8502
- this.subscription.add(this.ctx.localization.changes.subscribe(() => this.cd.markForCheck()));
8503
- }
8504
8548
  ngDoCheck() {
8505
8549
  const currentTitles = this.groups.map(group => this.groupInfoService.groupTitle(group));
8506
8550
  if (currentTitles.length !== this.groupTitles.length || currentTitles.some((current, idx) => current !== this.groupTitles[idx])) {
@@ -8515,6 +8559,7 @@ class GroupPanelComponent {
8515
8559
  if (this.targetSubscription) {
8516
8560
  this.targetSubscription.unsubscribe();
8517
8561
  }
8562
+ this.destroyMenu();
8518
8563
  }
8519
8564
  messageFor(token) {
8520
8565
  return this.ctx.localization.get(token);
@@ -8544,6 +8589,42 @@ class GroupPanelComponent {
8544
8589
  remove(group) {
8545
8590
  this.change.emit(this.groups.filter(x => x.field !== group.field));
8546
8591
  }
8592
+ toggleMenu(chip, first, last, field) {
8593
+ const anchor = chip.element.nativeElement.querySelector('.k-chip-action');
8594
+ if (this.popupRef) {
8595
+ const popupAnchor = this.popupRef.popup.instance.anchor;
8596
+ this.destroyMenu();
8597
+ if (anchor === popupAnchor) {
8598
+ return;
8599
+ }
8600
+ }
8601
+ this.first = first;
8602
+ this.last = last;
8603
+ const direction = this.ctx.localization.rtl ? 'right' : 'left';
8604
+ this.popupRef = this.popupService.open({
8605
+ anchor: anchor,
8606
+ content: this.defaultTemplate,
8607
+ anchorAlign: { vertical: 'bottom', horizontal: direction },
8608
+ popupAlign: { vertical: 'top', horizontal: direction },
8609
+ positionMode: 'absolute'
8610
+ });
8611
+ this.activeItem = this.dropTargets.find(dt => dt.context.field === field);
8612
+ this.renderer.setAttribute(this.popupRef.popupElement, 'dir', this.ctx.localization.rtl ? 'rtl' : 'ltr');
8613
+ const menuItems = Array.from(this.popupRef.popupElement.querySelectorAll('.k-menu-item'));
8614
+ this.activateMenuItem(menuItems[1], 'previous');
8615
+ this.popupSubs = this.popupRef.popupAnchorViewportLeave.subscribe(() => {
8616
+ this.destroyMenu(true);
8617
+ });
8618
+ if (isUniversal()) {
8619
+ return;
8620
+ }
8621
+ this.ngZone.runOutsideAngular(() => {
8622
+ this.popupSubs.add(fromEvent(document, 'click')
8623
+ .pipe(filter((event) => !closest(event.target, (node) => node === this.popupRef.popupElement || (node.matches && node.matches('.k-chip-action'))))).subscribe(() => {
8624
+ this.destroyMenu();
8625
+ }));
8626
+ });
8627
+ }
8547
8628
  canDrop(draggable, target) {
8548
8629
  const isIndicator = draggable.type === 'groupIndicator';
8549
8630
  const rules = isIndicator
@@ -8566,7 +8647,10 @@ class GroupPanelComponent {
8566
8647
  .reduce((acc, target) => merge(acc, target.leave), from([]));
8567
8648
  const dropStream = this.dropTargets
8568
8649
  .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)));
8650
+ this.targetSubscription.add(enterStream.pipe(tap(_ => {
8651
+ this.hint.removeLock();
8652
+ this.destroyMenu();
8653
+ }), 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
8654
  }
8571
8655
  enter({ draggable, target }) {
8572
8656
  this.hint.enable();
@@ -8585,9 +8669,47 @@ class GroupPanelComponent {
8585
8669
  const index = this.dropTargets.toArray().indexOf(target);
8586
8670
  this.insert(field, index);
8587
8671
  }
8672
+ destroyMenu(focusAnchor) {
8673
+ if (this.popupRef) {
8674
+ this.popupRef.close();
8675
+ this.popupRef = null;
8676
+ this.popupSubs && this.popupSubs.unsubscribe();
8677
+ focusAnchor && this.activeItem.context.target.focus();
8678
+ }
8679
+ }
8680
+ activateMenuItem(item, relatedItemType) {
8681
+ this.renderer.setAttribute(item, 'tabindex', '-1');
8682
+ this.renderer.removeClass(item, 'k-focus');
8683
+ const relatedItem = item[`${relatedItemType}ElementSibling`];
8684
+ this.renderer.setAttribute(relatedItem, 'tabindex', '0');
8685
+ this.renderer.addClass(relatedItem, 'k-focus');
8686
+ this.ngZone.runOutsideAngular(() => setTimeout(() => relatedItem.focus()));
8687
+ }
8688
+ handleMenuClick(e) {
8689
+ e.preventDefault();
8690
+ if (e.target.getAttribute('aria-disabled') !== 'true') {
8691
+ const chips = this.dropTargets.toArray().slice(0, this.dropTargets.length - 1);
8692
+ let groupChip, groupChipIndex;
8693
+ for (let i = 0; i < chips.length; i++) {
8694
+ if (chips[i].element.nativeElement === this.popupRef.popup.instance.anchor.closest('.k-chip')) {
8695
+ groupChip = chips[i];
8696
+ groupChipIndex = i;
8697
+ break;
8698
+ }
8699
+ }
8700
+ const isPrev = e.target.closest('.k-menu-item').matches(':first-child');
8701
+ if (isPrev && groupChipIndex > 0) {
8702
+ this.insert(groupChip.context.field, groupChipIndex - 1);
8703
+ }
8704
+ else if (!isPrev && groupChipIndex < chips.length - 1) {
8705
+ this.insert(groupChip.context.field, groupChipIndex + 1);
8706
+ }
8707
+ this.destroyMenu(true);
8708
+ }
8709
+ }
8588
8710
  }
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: `
8711
+ 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 });
8712
+ 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
8713
  <div
8592
8714
  *ngIf="groups.length === 0"
8593
8715
  class="k-grouping-drop-container"
@@ -8604,7 +8726,8 @@ GroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
8604
8726
  [navigable]="navigable"
8605
8727
  role="none">
8606
8728
  <kendo-chip
8607
- *ngFor="let group of groups; let index = index;"
8729
+ *ngFor="let group of groups; let index = index; let first = first; let last = last;"
8730
+ #chip
8608
8731
  kendoDropTarget
8609
8732
  kendoDraggableColumn
8610
8733
  kendoDraggable
@@ -8613,14 +8736,21 @@ GroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
8613
8736
  [context]="{
8614
8737
  field: group.field,
8615
8738
  type: 'groupIndicator',
8616
- hint: groupTitles[index]
8739
+ hint: groupTitles[index],
8740
+ target: chip
8617
8741
  }"
8618
8742
  [label]="groupTitles[index]"
8619
8743
  [removable]="true"
8744
+ [hasMenu]="true"
8620
8745
  [icon]="getDirectionIcon(group)"
8621
8746
  [svgIcon]="getDirectionSvgIcon(group)"
8747
+ [attr.aria-haspopup]="'menu'"
8748
+ [attr.aria-expanded]="isChipMenuOpen"
8749
+ [attr.aria-controls]="gridId"
8622
8750
  (contentClick)="directionChange(group)"
8623
8751
  (remove)="remove(group)"
8752
+ (menuToggle)="toggleMenu(chip, first, last, group.field)"
8753
+ (keydown.alt.arrowdown)="$event.preventDefault(); toggleMenu(chip, first, last, group.field)"
8624
8754
  >
8625
8755
  </kendo-chip>
8626
8756
  </kendo-chiplist>
@@ -8633,7 +8763,31 @@ GroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
8633
8763
  }"
8634
8764
  kendoDropTarget
8635
8765
  >&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 });
8766
+
8767
+ <ng-template #defaultTemplate>
8768
+ <ul unselectable="on" role="menu" class="k-group k-menu-group k-reset k-menu-group-md" [kendoEventsOutsideAngular]="{
8769
+ keydown: handleKeyDown,
8770
+ click: handleClick
8771
+ }">
8772
+ <li role="menuitem" unselectable="on" class="k-item k-menu-item" [attr.aria-disabled]="first">
8773
+ <span class="k-link k-menu-link" [class.k-disabled]="first">
8774
+ <kendo-icon-wrapper
8775
+ [name]="rtl ? 'arrow-right' : 'arrow-left'"
8776
+ [svgIcon]="rtl ? arrowRightIcon : arrowLeftIcon"></kendo-icon-wrapper>
8777
+ <span class="k-menu-link-text">{{messageFor('groupChipMenuPrevious')}}</span>
8778
+ </span>
8779
+ </li>
8780
+ <li role="menuitem" unselectable="on" class="k-item k-menu-item" [attr.aria-disabled]="last">
8781
+ <span class="k-link k-menu-link" [class.k-disabled]="last">
8782
+ <kendo-icon-wrapper
8783
+ [name]="rtl ? 'arrow-left' : 'arrow-right'"
8784
+ [svgIcon]="rtl ? arrowLeftIcon : arrowRightIcon"></kendo-icon-wrapper>
8785
+ <span class="k-menu-link-text">{{messageFor('groupChipMenuNext')}}</span>
8786
+ </span>
8787
+ </li>
8788
+ </ul>
8789
+ </ng-template>
8790
+ `, 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
8791
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupPanelComponent, decorators: [{
8638
8792
  type: Component,
8639
8793
  args: [{
@@ -8656,7 +8810,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8656
8810
  [navigable]="navigable"
8657
8811
  role="none">
8658
8812
  <kendo-chip
8659
- *ngFor="let group of groups; let index = index;"
8813
+ *ngFor="let group of groups; let index = index; let first = first; let last = last;"
8814
+ #chip
8660
8815
  kendoDropTarget
8661
8816
  kendoDraggableColumn
8662
8817
  kendoDraggable
@@ -8665,14 +8820,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8665
8820
  [context]="{
8666
8821
  field: group.field,
8667
8822
  type: 'groupIndicator',
8668
- hint: groupTitles[index]
8823
+ hint: groupTitles[index],
8824
+ target: chip
8669
8825
  }"
8670
8826
  [label]="groupTitles[index]"
8671
8827
  [removable]="true"
8828
+ [hasMenu]="true"
8672
8829
  [icon]="getDirectionIcon(group)"
8673
8830
  [svgIcon]="getDirectionSvgIcon(group)"
8831
+ [attr.aria-haspopup]="'menu'"
8832
+ [attr.aria-expanded]="isChipMenuOpen"
8833
+ [attr.aria-controls]="gridId"
8674
8834
  (contentClick)="directionChange(group)"
8675
8835
  (remove)="remove(group)"
8836
+ (menuToggle)="toggleMenu(chip, first, last, group.field)"
8837
+ (keydown.alt.arrowdown)="$event.preventDefault(); toggleMenu(chip, first, last, group.field)"
8676
8838
  >
8677
8839
  </kendo-chip>
8678
8840
  </kendo-chiplist>
@@ -8685,9 +8847,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8685
8847
  }"
8686
8848
  kendoDropTarget
8687
8849
  >&nbsp;</div>
8850
+
8851
+ <ng-template #defaultTemplate>
8852
+ <ul unselectable="on" role="menu" class="k-group k-menu-group k-reset k-menu-group-md" [kendoEventsOutsideAngular]="{
8853
+ keydown: handleKeyDown,
8854
+ click: handleClick
8855
+ }">
8856
+ <li role="menuitem" unselectable="on" class="k-item k-menu-item" [attr.aria-disabled]="first">
8857
+ <span class="k-link k-menu-link" [class.k-disabled]="first">
8858
+ <kendo-icon-wrapper
8859
+ [name]="rtl ? 'arrow-right' : 'arrow-left'"
8860
+ [svgIcon]="rtl ? arrowRightIcon : arrowLeftIcon"></kendo-icon-wrapper>
8861
+ <span class="k-menu-link-text">{{messageFor('groupChipMenuPrevious')}}</span>
8862
+ </span>
8863
+ </li>
8864
+ <li role="menuitem" unselectable="on" class="k-item k-menu-item" [attr.aria-disabled]="last">
8865
+ <span class="k-link k-menu-link" [class.k-disabled]="last">
8866
+ <kendo-icon-wrapper
8867
+ [name]="rtl ? 'arrow-left' : 'arrow-right'"
8868
+ [svgIcon]="rtl ? arrowLeftIcon : arrowRightIcon"></kendo-icon-wrapper>
8869
+ <span class="k-menu-link-text">{{messageFor('groupChipMenuNext')}}</span>
8870
+ </span>
8871
+ </li>
8872
+ </ul>
8873
+ </ng-template>
8688
8874
  `
8689
8875
  }]
8690
- }], ctorParameters: function () { return [{ type: DragHintService }, { type: DropCueService }, { type: GroupInfoService }, { type: ContextService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { change: [{
8876
+ }], 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
8877
  type: Output
8692
8878
  }], groupHeaderClass: [{
8693
8879
  type: HostBinding,
@@ -8701,6 +8887,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8701
8887
  }], dropTargets: [{
8702
8888
  type: ViewChildren,
8703
8889
  args: [DropTargetDirective]
8890
+ }], defaultTemplate: [{
8891
+ type: ViewChild,
8892
+ args: ['defaultTemplate', { static: true, read: TemplateRef }]
8704
8893
  }] } });
8705
8894
 
8706
8895
  /**
@@ -11551,7 +11740,7 @@ class ColumnMenuItemComponent {
11551
11740
  }
11552
11741
  }
11553
11742
  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: `
11743
+ 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
11744
  <div
11556
11745
  class="k-columnmenu-item"
11557
11746
  (click)="onClick($event)"
@@ -11659,6 +11848,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
11659
11848
  type: Input
11660
11849
  }], expanded: [{
11661
11850
  type: Input
11851
+ }], service: [{
11852
+ type: Input
11662
11853
  }], contentTemplate: [{
11663
11854
  type: ContentChild,
11664
11855
  args: [ColumnMenuItemContentTemplateDirective]
@@ -11740,7 +11931,7 @@ ColumnMenuLockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
11740
11931
  (itemClick)="toggleColumn()"
11741
11932
  [disabled]="disabled">
11742
11933
  </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"] }] });
11934
+ `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
11744
11935
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuLockComponent, decorators: [{
11745
11936
  type: Component,
11746
11937
  args: [{
@@ -11835,7 +12026,7 @@ ColumnMenuStickComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
11835
12026
  (itemClick)="toggleColumn()"
11836
12027
  [disabled]="disabled">
11837
12028
  </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"] }] });
12029
+ `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
11839
12030
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuStickComponent, decorators: [{
11840
12031
  type: Component,
11841
12032
  args: [{
@@ -11968,7 +12159,7 @@ ColumnMenuPositionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.
11968
12159
  </kendo-grid-columnmenu-stick>
11969
12160
  </ng-template>
11970
12161
  </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"] }] });
12162
+ `, 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
12163
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuPositionComponent, decorators: [{
11973
12164
  type: Component,
11974
12165
  args: [{
@@ -12486,7 +12677,7 @@ ColumnMenuChooserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
12486
12677
  </kendo-grid-columnlist>
12487
12678
  </ng-template>
12488
12679
  </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]" }] });
12680
+ `, 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
12681
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuChooserComponent, decorators: [{
12491
12682
  type: Component,
12492
12683
  args: [{
@@ -12612,7 +12803,7 @@ ColumnMenuFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
12612
12803
  </kendo-grid-filter-menu-container>
12613
12804
  </ng-template>
12614
12805
  </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]" }] });
12806
+ `, 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
12807
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuFilterComponent, decorators: [{
12617
12808
  type: Component,
12618
12809
  args: [{
@@ -12650,9 +12841,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12650
12841
  type: Input
12651
12842
  }] } });
12652
12843
 
12653
- /**
12654
- * @hidden
12655
- */
12656
12844
  class ColumnMenuItemDirective {
12657
12845
  constructor(hostElement, renderer, ngZone) {
12658
12846
  this.hostElement = hostElement;
@@ -12679,6 +12867,9 @@ class ColumnMenuItemDirective {
12679
12867
  }
12680
12868
  };
12681
12869
  }
12870
+ /**
12871
+ * @hidden
12872
+ */
12682
12873
  set isFirst(value) {
12683
12874
  if (value) {
12684
12875
  const focusableElement = this.columnMenuItems[0];
@@ -12690,9 +12881,15 @@ class ColumnMenuItemDirective {
12690
12881
  }
12691
12882
  this._isFirst = value;
12692
12883
  }
12884
+ /**
12885
+ * @hidden
12886
+ */
12693
12887
  get isFirst() {
12694
12888
  return this._isFirst;
12695
12889
  }
12890
+ /**
12891
+ * @hidden
12892
+ */
12696
12893
  set isLast(value) {
12697
12894
  if (!this.columnMenuItems) {
12698
12895
  return;
@@ -12710,6 +12907,9 @@ class ColumnMenuItemDirective {
12710
12907
  }
12711
12908
  this._isLast = value;
12712
12909
  }
12910
+ /**
12911
+ * @hidden
12912
+ */
12713
12913
  get isLast() {
12714
12914
  return this._isLast;
12715
12915
  }
@@ -12719,6 +12919,7 @@ class ColumnMenuItemDirective {
12719
12919
  if (this.menuItemComponent instanceof ColumnMenuFilterComponent) {
12720
12920
  this.menuItemComponent.service.menuTabbingService.isColumnMenu = true;
12721
12921
  }
12922
+ this.menuItemComponent.service?.columnMenuContainer.templateMenuItems.push(this);
12722
12923
  }
12723
12924
  ngOnDestroy() {
12724
12925
  if (this.subs) {
@@ -12751,17 +12952,25 @@ class ColumnMenuContainerComponent {
12751
12952
  constructor(service, ngZone) {
12752
12953
  this.service = service;
12753
12954
  this.ngZone = ngZone;
12955
+ this.templateMenuItems = [];
12956
+ service.columnMenuContainer = this;
12754
12957
  }
12755
- ngAfterContentInit() {
12756
- if (!this.columnMenuItems.length) {
12958
+ ngAfterViewInit() {
12959
+ if (this.columnMenuItems.length) {
12960
+ this.columnMenuItems.first.isFirst = true;
12961
+ this.columnMenuItems.last.isLast = true;
12962
+ }
12963
+ else if (this.templateMenuItems.length) {
12964
+ this.templateMenuItems[0].isFirst = true;
12965
+ this.templateMenuItems[this.templateMenuItems.length - 1].isLast = true;
12966
+ }
12967
+ else {
12757
12968
  return;
12758
12969
  }
12759
- this.columnMenuItems.first.isFirst = true;
12760
- this.columnMenuItems.last.isLast = true;
12761
12970
  this.ngZone.onStable.pipe(take(1)).subscribe(() => this.service.menuTabbingService.firstFocusable.focus());
12762
12971
  }
12763
12972
  }
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 });
12973
+ 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
12974
  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
12975
  <ng-content></ng-content>
12767
12976
  `, isInline: true });
@@ -12773,7 +12982,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12773
12982
  <ng-content></ng-content>
12774
12983
  `
12775
12984
  }]
12776
- }], ctorParameters: function () { return [{ type: ColumnMenuService }, { type: i0.NgZone }]; }, propDecorators: { columnMenuItems: [{
12985
+ }], ctorParameters: function () { return [{ type: ColumnMenuService }, { type: i0.NgZone, decorators: [{
12986
+ type: Inject,
12987
+ args: [NgZone]
12988
+ }] }]; }, propDecorators: { columnMenuItems: [{
12777
12989
  type: ContentChildren,
12778
12990
  args: [ColumnMenuItemDirective, { descendants: true }]
12779
12991
  }] } });
@@ -12855,7 +13067,7 @@ ColumnMenuSortComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
12855
13067
  (itemClick)="toggleSort('desc')"
12856
13068
  [selected]="sortedDesc">
12857
13069
  </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"] }] });
13070
+ `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
12859
13071
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuSortComponent, decorators: [{
12860
13072
  type: Component,
12861
13073
  args: [{
@@ -12927,7 +13139,7 @@ ColumnMenuAutoSizeColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion
12927
13139
  [svgIcon]="maxWidthIcon"
12928
13140
  (itemClick)="autoSizeColumn()"
12929
13141
  ></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"] }] });
13142
+ `, 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
13143
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuAutoSizeColumnComponent, decorators: [{
12932
13144
  type: Component,
12933
13145
  args: [{
@@ -12993,7 +13205,7 @@ ColumnMenuAutoSizeAllColumnsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVer
12993
13205
  [svgIcon]="displayInlineFlexIcon"
12994
13206
  (itemClick)="autoSizeAllColumns()"
12995
13207
  ></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"] }] });
13208
+ `, 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
13209
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuAutoSizeAllColumnsComponent, decorators: [{
12998
13210
  type: Component,
12999
13211
  args: [{
@@ -13287,10 +13499,14 @@ ColumnMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
13287
13499
  [svgIcon]="moreVerticalIcon"></kendo-icon-wrapper>
13288
13500
  </a>
13289
13501
  <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>
13502
+ <kendo-grid-columnmenu-container
13503
+ (keydown.escape)="close(true)"
13504
+ (keydown.enter)="$event.stopImmediatePropagation()">
13505
+ <ng-container
13506
+ [ngTemplateOutlet]="this.column.columnMenuTemplateRef || this.columnMenuTemplate || (this.settings.view === 'tabbed' ? this.tabbedInterfaceTemplate : this.defaultTemplate)"
13507
+ [ngTemplateOutletContext]="{ service: service, column: column }">
13508
+ </ng-container>
13509
+ </kendo-grid-columnmenu-container>
13294
13510
  </ng-template>
13295
13511
  <ng-template #defaultTemplate>
13296
13512
  <kendo-grid-columnmenu-container
@@ -13458,10 +13674,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13458
13674
  [svgIcon]="moreVerticalIcon"></kendo-icon-wrapper>
13459
13675
  </a>
13460
13676
  <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>
13677
+ <kendo-grid-columnmenu-container
13678
+ (keydown.escape)="close(true)"
13679
+ (keydown.enter)="$event.stopImmediatePropagation()">
13680
+ <ng-container
13681
+ [ngTemplateOutlet]="this.column.columnMenuTemplateRef || this.columnMenuTemplate || (this.settings.view === 'tabbed' ? this.tabbedInterfaceTemplate : this.defaultTemplate)"
13682
+ [ngTemplateOutletContext]="{ service: service, column: column }">
13683
+ </ng-container>
13684
+ </kendo-grid-columnmenu-container>
13465
13685
  </ng-template>
13466
13686
  <ng-template #defaultTemplate>
13467
13687
  <kendo-grid-columnmenu-container
@@ -19258,7 +19478,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
19258
19478
  class GridMessages extends ComponentMessages {
19259
19479
  }
19260
19480
  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 });
19481
+ 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
19482
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, decorators: [{
19263
19483
  type: Directive,
19264
19484
  args: [{
@@ -19427,6 +19647,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
19427
19647
  type: Input
19428
19648
  }], columnMenuColumnsTabTitle: [{
19429
19649
  type: Input
19650
+ }], groupChipMenuPrevious: [{
19651
+ type: Input
19652
+ }], groupChipMenuNext: [{
19653
+ type: Input
19430
19654
  }] } });
19431
19655
 
19432
19656
  /**
@@ -21551,6 +21775,12 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21551
21775
  i18n-sortedDefault="kendo.grid.sortedDefault|The status announcement when a column is no longer sorted"
21552
21776
  sortedDefault="Not Sorted"
21553
21777
 
21778
+ i18n-sortedAscending="kendo.grid.sortedAscending|The title of the Group Chip indicating the ascending sorting order of the groups"
21779
+ sortedAscending="Sorted Ascending"
21780
+
21781
+ i18n-sortedDescending="kendo.grid.sortedDescending|The title of the Group Chip indicating the descending sorting order of the groups"
21782
+ sortedDescending="Sorted Descending"
21783
+
21554
21784
  i18n-columnsApply="kendo.grid.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
21555
21785
  columnsApply="Apply"
21556
21786
 
@@ -21610,6 +21840,12 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21610
21840
 
21611
21841
  i18n-columnMenuColumnsTabTitle="kendo.grid.columnMenuColumnsTabTitle|The title for the column menu Columns tab"
21612
21842
  columnMenuColumnsTabTitle="Columns"
21843
+
21844
+ i18n-groupChipMenuPrevious="kendo.grid.groupChipMenuPrevious|The text for the Group pane Chip Menu Move as previous item"
21845
+ groupChipMenuPrevious="Move as previous"
21846
+
21847
+ i18n-groupChipMenuNext="kendo.grid.groupChipMenuNext|The text for the Group pane Chip Menu Move as next item"
21848
+ groupChipMenuNext="Move as next"
21613
21849
  >
21614
21850
  </ng-container>
21615
21851
  <kendo-grid-toolbar
@@ -22169,6 +22405,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22169
22405
  i18n-sortedDefault="kendo.grid.sortedDefault|The status announcement when a column is no longer sorted"
22170
22406
  sortedDefault="Not Sorted"
22171
22407
 
22408
+ i18n-sortedAscending="kendo.grid.sortedAscending|The title of the Group Chip indicating the ascending sorting order of the groups"
22409
+ sortedAscending="Sorted Ascending"
22410
+
22411
+ i18n-sortedDescending="kendo.grid.sortedDescending|The title of the Group Chip indicating the descending sorting order of the groups"
22412
+ sortedDescending="Sorted Descending"
22413
+
22172
22414
  i18n-columnsApply="kendo.grid.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
22173
22415
  columnsApply="Apply"
22174
22416
 
@@ -22228,6 +22470,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22228
22470
 
22229
22471
  i18n-columnMenuColumnsTabTitle="kendo.grid.columnMenuColumnsTabTitle|The title for the column menu Columns tab"
22230
22472
  columnMenuColumnsTabTitle="Columns"
22473
+
22474
+ i18n-groupChipMenuPrevious="kendo.grid.groupChipMenuPrevious|The text for the Group pane Chip Menu Move as previous item"
22475
+ groupChipMenuPrevious="Move as previous"
22476
+
22477
+ i18n-groupChipMenuNext="kendo.grid.groupChipMenuNext|The text for the Group pane Chip Menu Move as next item"
22478
+ groupChipMenuNext="Move as next"
22231
22479
  >
22232
22480
  </ng-container>
22233
22481
  <kendo-grid-toolbar
@@ -24235,7 +24483,7 @@ const exportedModules$4 = [
24235
24483
  GroupHeaderColumnTemplateDirective,
24236
24484
  GroupFooterTemplateDirective,
24237
24485
  GroupHeaderComponent,
24238
- GroupPanelComponent
24486
+ GroupPanelComponent,
24239
24487
  ];
24240
24488
  /**
24241
24489
  * @hidden
@@ -24254,18 +24502,18 @@ GroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "1
24254
24502
  GroupHeaderColumnTemplateDirective,
24255
24503
  GroupFooterTemplateDirective,
24256
24504
  GroupHeaderComponent,
24257
- GroupPanelComponent], imports: [CommonModule, SharedModule, DragAndDropModule, ChipModule], exports: [GroupHeaderTemplateDirective,
24505
+ GroupPanelComponent], imports: [CommonModule, SharedModule, DragAndDropModule, ChipModule, PopupModule], exports: [GroupHeaderTemplateDirective,
24258
24506
  GroupHeaderColumnTemplateDirective,
24259
24507
  GroupFooterTemplateDirective,
24260
24508
  GroupHeaderComponent,
24261
24509
  GroupPanelComponent] });
24262
- GroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupModule, imports: [[CommonModule, SharedModule, DragAndDropModule, ChipModule]] });
24510
+ GroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupModule, imports: [[CommonModule, SharedModule, DragAndDropModule, ChipModule, PopupModule]] });
24263
24511
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupModule, decorators: [{
24264
24512
  type: NgModule,
24265
24513
  args: [{
24266
- declarations: [exportedModules$4],
24514
+ declarations: [...exportedModules$4],
24267
24515
  exports: [exportedModules$4],
24268
- imports: [CommonModule, SharedModule, DragAndDropModule, ChipModule]
24516
+ imports: [CommonModule, SharedModule, DragAndDropModule, ChipModule, PopupModule]
24269
24517
  }]
24270
24518
  }] });
24271
24519