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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) 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/databinding.directive.d.ts +1 -1
  6. package/dragdrop/context-types.d.ts +1 -0
  7. package/esm2020/column-menu/column-menu-autosize-all.component.mjs +1 -1
  8. package/esm2020/column-menu/column-menu-autosize.component.mjs +1 -1
  9. package/esm2020/column-menu/column-menu-chooser.component.mjs +1 -1
  10. package/esm2020/column-menu/column-menu-container.component.mjs +18 -7
  11. package/esm2020/column-menu/column-menu-filter.component.mjs +1 -1
  12. package/esm2020/column-menu/column-menu-item.component.mjs +4 -1
  13. package/esm2020/column-menu/column-menu-item.directive.mjs +13 -3
  14. package/esm2020/column-menu/column-menu-lock.component.mjs +1 -1
  15. package/esm2020/column-menu/column-menu-position.component.mjs +1 -1
  16. package/esm2020/column-menu/column-menu-sort.component.mjs +1 -1
  17. package/esm2020/column-menu/column-menu-stick.component.mjs +1 -1
  18. package/esm2020/column-menu/column-menu.component.mjs +16 -8
  19. package/esm2020/databinding.directive.mjs +1 -1
  20. package/esm2020/filtering/numeric-filter.component.mjs +3 -7
  21. package/esm2020/grid.component.mjs +24 -0
  22. package/esm2020/grouping/group-panel.component.mjs +213 -23
  23. package/esm2020/grouping/group.module.mjs +6 -5
  24. package/esm2020/localization/messages.mjs +5 -1
  25. package/esm2020/package-metadata.mjs +2 -2
  26. package/esm2020/rendering/cell.component.mjs +2 -2
  27. package/fesm2015/progress-kendo-angular-grid.mjs +304 -60
  28. package/fesm2020/progress-kendo-angular-grid.mjs +300 -60
  29. package/filtering/numeric-filter.component.d.ts +1 -5
  30. package/grouping/group-panel.component.d.ts +25 -4
  31. package/grouping/group.module.d.ts +2 -1
  32. package/localization/messages.d.ts +11 -7
  33. package/package.json +16 -16
  34. 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: 1698853403,
4446
- version: '14.1.0-develop.1',
4445
+ publishDate: 1699450724,
4446
+ version: '14.1.0-develop.11',
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
  /**
@@ -9855,16 +10040,12 @@ class NumericFilterComponent extends BaseFilterCellComponent {
9855
10040
  * Specifies the number format used when the component is not focused.
9856
10041
  * By default, the `column.format` value is used (if set).
9857
10042
  */
9858
- set format(value) {
9859
- this._format = value;
9860
- }
9861
- /**
9862
- * @readonly
9863
- * @type {string}
9864
- */
9865
10043
  get format() {
9866
10044
  return !isNullOrEmptyString(this._format) ? this._format : this.columnFormat;
9867
10045
  }
10046
+ set format(value) {
10047
+ this._format = value;
10048
+ }
9868
10049
  /**
9869
10050
  * The current filter for the associated column field.
9870
10051
  * @readonly
@@ -11555,7 +11736,7 @@ class ColumnMenuItemComponent {
11555
11736
  }
11556
11737
  }
11557
11738
  ColumnMenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11558
- 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: `
11559
11740
  <div
11560
11741
  class="k-columnmenu-item"
11561
11742
  (click)="onClick($event)"
@@ -11663,6 +11844,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
11663
11844
  type: Input
11664
11845
  }], expanded: [{
11665
11846
  type: Input
11847
+ }], service: [{
11848
+ type: Input
11666
11849
  }], contentTemplate: [{
11667
11850
  type: ContentChild,
11668
11851
  args: [ColumnMenuItemContentTemplateDirective]
@@ -11744,7 +11927,7 @@ ColumnMenuLockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
11744
11927
  (itemClick)="toggleColumn()"
11745
11928
  [disabled]="disabled">
11746
11929
  </kendo-grid-columnmenu-item>
11747
- `, 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"] }] });
11748
11931
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuLockComponent, decorators: [{
11749
11932
  type: Component,
11750
11933
  args: [{
@@ -11839,7 +12022,7 @@ ColumnMenuStickComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
11839
12022
  (itemClick)="toggleColumn()"
11840
12023
  [disabled]="disabled">
11841
12024
  </kendo-grid-columnmenu-item>
11842
- `, 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"] }] });
11843
12026
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuStickComponent, decorators: [{
11844
12027
  type: Component,
11845
12028
  args: [{
@@ -11972,7 +12155,7 @@ ColumnMenuPositionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.
11972
12155
  </kendo-grid-columnmenu-stick>
11973
12156
  </ng-template>
11974
12157
  </kendo-grid-columnmenu-item>
11975
- `, 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"] }] });
11976
12159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuPositionComponent, decorators: [{
11977
12160
  type: Component,
11978
12161
  args: [{
@@ -12490,7 +12673,7 @@ ColumnMenuChooserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
12490
12673
  </kendo-grid-columnlist>
12491
12674
  </ng-template>
12492
12675
  </kendo-grid-columnmenu-item>
12493
- `, 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]" }] });
12494
12677
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuChooserComponent, decorators: [{
12495
12678
  type: Component,
12496
12679
  args: [{
@@ -12616,7 +12799,7 @@ ColumnMenuFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
12616
12799
  </kendo-grid-filter-menu-container>
12617
12800
  </ng-template>
12618
12801
  </kendo-grid-columnmenu-item>
12619
- `, 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]" }] });
12620
12803
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuFilterComponent, decorators: [{
12621
12804
  type: Component,
12622
12805
  args: [{
@@ -12654,9 +12837,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12654
12837
  type: Input
12655
12838
  }] } });
12656
12839
 
12657
- /**
12658
- * @hidden
12659
- */
12660
12840
  class ColumnMenuItemDirective {
12661
12841
  constructor(hostElement, renderer, ngZone) {
12662
12842
  this.hostElement = hostElement;
@@ -12683,6 +12863,9 @@ class ColumnMenuItemDirective {
12683
12863
  }
12684
12864
  };
12685
12865
  }
12866
+ /**
12867
+ * @hidden
12868
+ */
12686
12869
  set isFirst(value) {
12687
12870
  if (value) {
12688
12871
  const focusableElement = this.columnMenuItems[0];
@@ -12694,9 +12877,15 @@ class ColumnMenuItemDirective {
12694
12877
  }
12695
12878
  this._isFirst = value;
12696
12879
  }
12880
+ /**
12881
+ * @hidden
12882
+ */
12697
12883
  get isFirst() {
12698
12884
  return this._isFirst;
12699
12885
  }
12886
+ /**
12887
+ * @hidden
12888
+ */
12700
12889
  set isLast(value) {
12701
12890
  if (!this.columnMenuItems) {
12702
12891
  return;
@@ -12714,6 +12903,9 @@ class ColumnMenuItemDirective {
12714
12903
  }
12715
12904
  this._isLast = value;
12716
12905
  }
12906
+ /**
12907
+ * @hidden
12908
+ */
12717
12909
  get isLast() {
12718
12910
  return this._isLast;
12719
12911
  }
@@ -12723,6 +12915,7 @@ class ColumnMenuItemDirective {
12723
12915
  if (this.menuItemComponent instanceof ColumnMenuFilterComponent) {
12724
12916
  this.menuItemComponent.service.menuTabbingService.isColumnMenu = true;
12725
12917
  }
12918
+ this.menuItemComponent.service?.columnMenuContainer.templateMenuItems.push(this);
12726
12919
  }
12727
12920
  ngOnDestroy() {
12728
12921
  if (this.subs) {
@@ -12755,17 +12948,25 @@ class ColumnMenuContainerComponent {
12755
12948
  constructor(service, ngZone) {
12756
12949
  this.service = service;
12757
12950
  this.ngZone = ngZone;
12951
+ this.templateMenuItems = [];
12952
+ service.columnMenuContainer = this;
12758
12953
  }
12759
- ngAfterContentInit() {
12760
- 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 {
12761
12964
  return;
12762
12965
  }
12763
- this.columnMenuItems.first.isFirst = true;
12764
- this.columnMenuItems.last.isLast = true;
12765
12966
  this.ngZone.onStable.pipe(take(1)).subscribe(() => this.service.menuTabbingService.firstFocusable.focus());
12766
12967
  }
12767
12968
  }
12768
- 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 });
12769
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: `
12770
12971
  <ng-content></ng-content>
12771
12972
  `, isInline: true });
@@ -12777,7 +12978,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12777
12978
  <ng-content></ng-content>
12778
12979
  `
12779
12980
  }]
12780
- }], 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: [{
12781
12985
  type: ContentChildren,
12782
12986
  args: [ColumnMenuItemDirective, { descendants: true }]
12783
12987
  }] } });
@@ -12859,7 +13063,7 @@ ColumnMenuSortComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
12859
13063
  (itemClick)="toggleSort('desc')"
12860
13064
  [selected]="sortedDesc">
12861
13065
  </kendo-grid-columnmenu-item>
12862
- `, 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"] }] });
12863
13067
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuSortComponent, decorators: [{
12864
13068
  type: Component,
12865
13069
  args: [{
@@ -12931,7 +13135,7 @@ ColumnMenuAutoSizeColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion
12931
13135
  [svgIcon]="maxWidthIcon"
12932
13136
  (itemClick)="autoSizeColumn()"
12933
13137
  ></kendo-grid-columnmenu-item>
12934
- `, 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"] }] });
12935
13139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuAutoSizeColumnComponent, decorators: [{
12936
13140
  type: Component,
12937
13141
  args: [{
@@ -12997,7 +13201,7 @@ ColumnMenuAutoSizeAllColumnsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVer
12997
13201
  [svgIcon]="displayInlineFlexIcon"
12998
13202
  (itemClick)="autoSizeAllColumns()"
12999
13203
  ></kendo-grid-columnmenu-item>
13000
- `, 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"] }] });
13001
13205
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColumnMenuAutoSizeAllColumnsComponent, decorators: [{
13002
13206
  type: Component,
13003
13207
  args: [{
@@ -13291,10 +13495,14 @@ ColumnMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
13291
13495
  [svgIcon]="moreVerticalIcon"></kendo-icon-wrapper>
13292
13496
  </a>
13293
13497
  <ng-template #template>
13294
- <ng-container
13295
- [ngTemplateOutlet]="this.column.columnMenuTemplateRef || this.columnMenuTemplate || (this.settings.view === 'tabbed' ? this.tabbedInterfaceTemplate : this.defaultTemplate)"
13296
- [ngTemplateOutletContext]="{ service: service, column: column }">
13297
- </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>
13298
13506
  </ng-template>
13299
13507
  <ng-template #defaultTemplate>
13300
13508
  <kendo-grid-columnmenu-container
@@ -13462,10 +13670,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13462
13670
  [svgIcon]="moreVerticalIcon"></kendo-icon-wrapper>
13463
13671
  </a>
13464
13672
  <ng-template #template>
13465
- <ng-container
13466
- [ngTemplateOutlet]="this.column.columnMenuTemplateRef || this.columnMenuTemplate || (this.settings.view === 'tabbed' ? this.tabbedInterfaceTemplate : this.defaultTemplate)"
13467
- [ngTemplateOutletContext]="{ service: service, column: column }">
13468
- </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>
13469
13681
  </ng-template>
13470
13682
  <ng-template #defaultTemplate>
13471
13683
  <kendo-grid-columnmenu-container
@@ -16692,7 +16904,7 @@ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
16692
16904
  <input
16693
16905
  *ngSwitchDefault
16694
16906
  type="text"
16695
- class="k-textbox k-input k-input-solid k-rounded-md"
16907
+ class="k-textbox k-input k-input-md k-input-solid k-rounded-md"
16696
16908
  [formControl]="$any(formGroup.get(column.field))"
16697
16909
  kendoGridFocusable
16698
16910
  />
@@ -16773,7 +16985,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16773
16985
  <input
16774
16986
  *ngSwitchDefault
16775
16987
  type="text"
16776
- class="k-textbox k-input k-input-solid k-rounded-md"
16988
+ class="k-textbox k-input k-input-md k-input-solid k-rounded-md"
16777
16989
  [formControl]="$any(formGroup.get(column.field))"
16778
16990
  kendoGridFocusable
16779
16991
  />
@@ -19262,7 +19474,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
19262
19474
  class GridMessages extends ComponentMessages {
19263
19475
  }
19264
19476
  GridMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
19265
- 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 });
19266
19478
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, decorators: [{
19267
19479
  type: Directive,
19268
19480
  args: [{
@@ -19431,6 +19643,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
19431
19643
  type: Input
19432
19644
  }], columnMenuColumnsTabTitle: [{
19433
19645
  type: Input
19646
+ }], groupChipMenuPrevious: [{
19647
+ type: Input
19648
+ }], groupChipMenuNext: [{
19649
+ type: Input
19434
19650
  }] } });
19435
19651
 
19436
19652
  /**
@@ -21555,6 +21771,12 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21555
21771
  i18n-sortedDefault="kendo.grid.sortedDefault|The status announcement when a column is no longer sorted"
21556
21772
  sortedDefault="Not Sorted"
21557
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
+
21558
21780
  i18n-columnsApply="kendo.grid.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
21559
21781
  columnsApply="Apply"
21560
21782
 
@@ -21614,6 +21836,12 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21614
21836
 
21615
21837
  i18n-columnMenuColumnsTabTitle="kendo.grid.columnMenuColumnsTabTitle|The title for the column menu Columns tab"
21616
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"
21617
21845
  >
21618
21846
  </ng-container>
21619
21847
  <kendo-grid-toolbar
@@ -22173,6 +22401,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22173
22401
  i18n-sortedDefault="kendo.grid.sortedDefault|The status announcement when a column is no longer sorted"
22174
22402
  sortedDefault="Not Sorted"
22175
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
+
22176
22410
  i18n-columnsApply="kendo.grid.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
22177
22411
  columnsApply="Apply"
22178
22412
 
@@ -22232,6 +22466,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22232
22466
 
22233
22467
  i18n-columnMenuColumnsTabTitle="kendo.grid.columnMenuColumnsTabTitle|The title for the column menu Columns tab"
22234
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"
22235
22475
  >
22236
22476
  </ng-container>
22237
22477
  <kendo-grid-toolbar
@@ -22755,7 +22995,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22755
22995
  * [sorting]({% slug sorting_grid %}), and [grouping]({% slug grouping_grid %})
22756
22996
  * ([more information and examples]({% slug local_data_grid %}#toc-using-the-data-binding-directive)).
22757
22997
  *
22758
- * @example
22998
+ * @example
22759
22999
  * ```html
22760
23000
  * <kendo-grid [kendoGridBinding]="gridData" ...></kendo-grid>
22761
23001
  * ```
@@ -24239,7 +24479,7 @@ const exportedModules$4 = [
24239
24479
  GroupHeaderColumnTemplateDirective,
24240
24480
  GroupFooterTemplateDirective,
24241
24481
  GroupHeaderComponent,
24242
- GroupPanelComponent
24482
+ GroupPanelComponent,
24243
24483
  ];
24244
24484
  /**
24245
24485
  * @hidden
@@ -24258,18 +24498,18 @@ GroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "1
24258
24498
  GroupHeaderColumnTemplateDirective,
24259
24499
  GroupFooterTemplateDirective,
24260
24500
  GroupHeaderComponent,
24261
- GroupPanelComponent], imports: [CommonModule, SharedModule, DragAndDropModule, ChipModule], exports: [GroupHeaderTemplateDirective,
24501
+ GroupPanelComponent], imports: [CommonModule, SharedModule, DragAndDropModule, ChipModule, PopupModule], exports: [GroupHeaderTemplateDirective,
24262
24502
  GroupHeaderColumnTemplateDirective,
24263
24503
  GroupFooterTemplateDirective,
24264
24504
  GroupHeaderComponent,
24265
24505
  GroupPanelComponent] });
24266
- 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]] });
24267
24507
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GroupModule, decorators: [{
24268
24508
  type: NgModule,
24269
24509
  args: [{
24270
- declarations: [exportedModules$4],
24510
+ declarations: [...exportedModules$4],
24271
24511
  exports: [exportedModules$4],
24272
- imports: [CommonModule, SharedModule, DragAndDropModule, ChipModule]
24512
+ imports: [CommonModule, SharedModule, DragAndDropModule, ChipModule, PopupModule]
24273
24513
  }]
24274
24514
  }] });
24275
24515