@angular/cdk 20.2.0-next.3 → 20.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/fesm2022/a11y-module.mjs +22 -22
  2. package/fesm2022/a11y-module.mjs.map +1 -1
  3. package/fesm2022/a11y.mjs +9 -9
  4. package/fesm2022/a11y.mjs.map +1 -1
  5. package/fesm2022/accordion.mjs +10 -10
  6. package/fesm2022/accordion.mjs.map +1 -1
  7. package/fesm2022/activedescendant-key-manager.mjs.map +1 -1
  8. package/fesm2022/array.mjs.map +1 -1
  9. package/fesm2022/bidi.mjs +7 -7
  10. package/fesm2022/bidi.mjs.map +1 -1
  11. package/fesm2022/breakpoints-observer.mjs +6 -6
  12. package/fesm2022/breakpoints-observer.mjs.map +1 -1
  13. package/fesm2022/cdk.mjs +1 -1
  14. package/fesm2022/cdk.mjs.map +1 -1
  15. package/fesm2022/clipboard.mjs +10 -10
  16. package/fesm2022/clipboard.mjs.map +1 -1
  17. package/fesm2022/coercion/private.mjs.map +1 -1
  18. package/fesm2022/coercion.mjs.map +1 -1
  19. package/fesm2022/css-pixel-value.mjs.map +1 -1
  20. package/fesm2022/data-source.mjs.map +1 -1
  21. package/fesm2022/dialog.mjs +10 -10
  22. package/fesm2022/dialog.mjs.map +1 -1
  23. package/fesm2022/directionality.mjs +3 -3
  24. package/fesm2022/directionality.mjs.map +1 -1
  25. package/fesm2022/dispose-view-repeater-strategy.mjs.map +1 -1
  26. package/fesm2022/drag-drop.mjs +31 -31
  27. package/fesm2022/drag-drop.mjs.map +1 -1
  28. package/fesm2022/element.mjs.map +1 -1
  29. package/fesm2022/fake-event-detection.mjs.map +1 -1
  30. package/fesm2022/focus-key-manager.mjs.map +1 -1
  31. package/fesm2022/focus-monitor.mjs +9 -9
  32. package/fesm2022/focus-monitor.mjs.map +1 -1
  33. package/fesm2022/id-generator.mjs +3 -3
  34. package/fesm2022/id-generator.mjs.map +1 -1
  35. package/fesm2022/keycodes.mjs.map +1 -1
  36. package/fesm2022/keycodes2.mjs.map +1 -1
  37. package/fesm2022/layout.mjs +4 -4
  38. package/fesm2022/layout.mjs.map +1 -1
  39. package/fesm2022/list-key-manager.mjs.map +1 -1
  40. package/fesm2022/listbox.mjs +10 -10
  41. package/fesm2022/listbox.mjs.map +1 -1
  42. package/fesm2022/menu.mjs +86 -57
  43. package/fesm2022/menu.mjs.map +1 -1
  44. package/fesm2022/observers/private.mjs +3 -3
  45. package/fesm2022/observers/private.mjs.map +1 -1
  46. package/fesm2022/observers.mjs +13 -13
  47. package/fesm2022/observers.mjs.map +1 -1
  48. package/fesm2022/overlay-module.mjs +34 -34
  49. package/fesm2022/overlay-module.mjs.map +1 -1
  50. package/fesm2022/overlay.mjs +3 -3
  51. package/fesm2022/overlay.mjs.map +1 -1
  52. package/fesm2022/passive-listeners.mjs.map +1 -1
  53. package/fesm2022/platform.mjs +4 -4
  54. package/fesm2022/platform.mjs.map +1 -1
  55. package/fesm2022/platform2.mjs +3 -3
  56. package/fesm2022/platform2.mjs.map +1 -1
  57. package/fesm2022/portal.mjs +16 -16
  58. package/fesm2022/portal.mjs.map +1 -1
  59. package/fesm2022/private.mjs +3 -3
  60. package/fesm2022/private.mjs.map +1 -1
  61. package/fesm2022/recycle-view-repeater-strategy.mjs.map +1 -1
  62. package/fesm2022/scrolling.mjs +35 -35
  63. package/fesm2022/scrolling.mjs.map +1 -1
  64. package/fesm2022/scrolling2.mjs.map +1 -1
  65. package/fesm2022/selection-model.mjs.map +1 -1
  66. package/fesm2022/shadow-dom.mjs.map +1 -1
  67. package/fesm2022/stepper.mjs +22 -22
  68. package/fesm2022/stepper.mjs.map +1 -1
  69. package/fesm2022/style-loader.mjs +3 -3
  70. package/fesm2022/style-loader.mjs.map +1 -1
  71. package/fesm2022/table.mjs +73 -73
  72. package/fesm2022/table.mjs.map +1 -1
  73. package/fesm2022/test-environment.mjs.map +1 -1
  74. package/fesm2022/testing/selenium-webdriver.mjs.map +1 -1
  75. package/fesm2022/testing/testbed.mjs.map +1 -1
  76. package/fesm2022/testing.mjs.map +1 -1
  77. package/fesm2022/text-field.mjs +16 -16
  78. package/fesm2022/text-field.mjs.map +1 -1
  79. package/fesm2022/tree-key-manager.mjs.map +1 -1
  80. package/fesm2022/tree.mjs +26 -25
  81. package/fesm2022/tree.mjs.map +1 -1
  82. package/fesm2022/typeahead.mjs.map +1 -1
  83. package/fesm2022/unique-selection-dispatcher.mjs +3 -3
  84. package/fesm2022/unique-selection-dispatcher.mjs.map +1 -1
  85. package/menu/index.d.ts +9 -3
  86. package/package.json +3 -3
  87. package/schematics/ng-add/index.js +1 -1
package/fesm2022/menu.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, InjectionToken, Optional, SkipSelf, Inject, inject, Injectable, Injector, ViewContainerRef, EventEmitter, NgZone, RendererFactory2, ElementRef, ChangeDetectorRef, Renderer2, booleanAttribute, Input, Output, signal, computed, ContentChildren, NgModule } from '@angular/core';
2
+ import { Directive, InjectionToken, Optional, SkipSelf, Inject, inject, Injectable, Injector, ViewContainerRef, EventEmitter, NgZone, RendererFactory2, ElementRef, ChangeDetectorRef, Renderer2, booleanAttribute, Input, Output, QueryList, signal, computed, ContentChildren, NgModule } from '@angular/core';
3
3
  import { startWith, debounceTime, distinctUntilChanged, takeUntil, mergeMap, mapTo, mergeAll, switchMap, skipWhile, skip } from 'rxjs/operators';
4
4
  import { UniqueSelectionDispatcher } from './unique-selection-dispatcher.mjs';
5
5
  import { Subject, merge, partition } from 'rxjs';
@@ -33,10 +33,10 @@ import './typeahead.mjs';
33
33
  * A grouping container for `CdkMenuItemRadio` instances, similar to a `role="radiogroup"` element.
34
34
  */
35
35
  class CdkMenuGroup {
36
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
37
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-next.2", type: CdkMenuGroup, isStandalone: true, selector: "[cdkMenuGroup]", host: { attributes: { "role": "group" }, classAttribute: "cdk-menu-group" }, providers: [{ provide: UniqueSelectionDispatcher, useClass: UniqueSelectionDispatcher }], exportAs: ["cdkMenuGroup"], ngImport: i0 });
36
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
37
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkMenuGroup, isStandalone: true, selector: "[cdkMenuGroup]", host: { attributes: { "role": "group" }, classAttribute: "cdk-menu-group" }, providers: [{ provide: UniqueSelectionDispatcher, useClass: UniqueSelectionDispatcher }], exportAs: ["cdkMenuGroup"], ngImport: i0 });
38
38
  }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuGroup, decorators: [{
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuGroup, decorators: [{
40
40
  type: Directive,
41
41
  args: [{
42
42
  selector: '[cdkMenuGroup]',
@@ -193,10 +193,10 @@ class MenuStack {
193
193
  setHasFocus(hasFocus) {
194
194
  this._hasFocus.next(hasFocus);
195
195
  }
196
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: MenuStack, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
197
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: MenuStack });
196
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: MenuStack, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
197
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: MenuStack });
198
198
  }
199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: MenuStack, decorators: [{
199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: MenuStack, decorators: [{
200
200
  type: Injectable
201
201
  }] });
202
202
 
@@ -224,10 +224,10 @@ class MenuTracker {
224
224
  MenuTracker._openMenuTrigger = trigger;
225
225
  }
226
226
  }
227
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: MenuTracker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
228
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: MenuTracker, providedIn: 'root' });
227
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: MenuTracker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
228
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: MenuTracker, providedIn: 'root' });
229
229
  }
230
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: MenuTracker, decorators: [{
230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: MenuTracker, decorators: [{
231
231
  type: Injectable,
232
232
  args: [{ providedIn: 'root' }]
233
233
  }] });
@@ -326,10 +326,10 @@ class CdkMenuTriggerBase {
326
326
  });
327
327
  return this._childMenuInjector;
328
328
  }
329
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuTriggerBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
330
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-next.2", type: CdkMenuTriggerBase, isStandalone: true, host: { properties: { "attr.aria-controls": "childMenu?.id", "attr.data-cdk-menu-stack-id": "menuStack.id" } }, ngImport: i0 });
329
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuTriggerBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
330
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkMenuTriggerBase, isStandalone: true, host: { properties: { "attr.aria-controls": "childMenu?.id", "attr.data-cdk-menu-stack-id": "menuStack.id" } }, ngImport: i0 });
331
331
  }
332
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuTriggerBase, decorators: [{
332
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuTriggerBase, decorators: [{
333
333
  type: Directive,
334
334
  args: [{
335
335
  host: {
@@ -531,10 +531,10 @@ class TargetMenuAim {
531
531
  });
532
532
  });
533
533
  }
534
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: TargetMenuAim, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
535
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: TargetMenuAim });
534
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: TargetMenuAim, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
535
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: TargetMenuAim });
536
536
  }
537
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: TargetMenuAim, decorators: [{
537
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: TargetMenuAim, decorators: [{
538
538
  type: Injectable
539
539
  }] });
540
540
  /**
@@ -542,10 +542,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2",
542
542
  * element with either the `cdkMenu` or `cdkMenuBar` directive and child menu items.
543
543
  */
544
544
  class CdkTargetMenuAim {
545
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkTargetMenuAim, deps: [], target: i0.ɵɵFactoryTarget.Directive });
546
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-next.2", type: CdkTargetMenuAim, isStandalone: true, selector: "[cdkTargetMenuAim]", providers: [{ provide: MENU_AIM, useClass: TargetMenuAim }], exportAs: ["cdkTargetMenuAim"], ngImport: i0 });
545
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTargetMenuAim, deps: [], target: i0.ɵɵFactoryTarget.Directive });
546
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkTargetMenuAim, isStandalone: true, selector: "[cdkTargetMenuAim]", providers: [{ provide: MENU_AIM, useClass: TargetMenuAim }], exportAs: ["cdkTargetMenuAim"], ngImport: i0 });
547
547
  }
548
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkTargetMenuAim, decorators: [{
548
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTargetMenuAim, decorators: [{
549
549
  type: Directive,
550
550
  args: [{
551
551
  selector: '[cdkTargetMenuAim]',
@@ -845,13 +845,13 @@ class CdkMenuTrigger extends CdkMenuTriggerBase {
845
845
  element.setAttribute('type', 'button');
846
846
  }
847
847
  }
848
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
849
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-next.2", type: CdkMenuTrigger, isStandalone: true, selector: "[cdkMenuTriggerFor]", inputs: { menuTemplateRef: ["cdkMenuTriggerFor", "menuTemplateRef"], menuPosition: ["cdkMenuPosition", "menuPosition"], menuData: ["cdkMenuTriggerData", "menuData"] }, outputs: { opened: "cdkMenuOpened", closed: "cdkMenuClosed" }, host: { listeners: { "focusin": "_setHasFocus(true)", "focusout": "_setHasFocus(false)", "keydown": "_toggleOnKeydown($event)", "click": "_handleClick()" }, properties: { "attr.aria-haspopup": "menuTemplateRef ? \"menu\" : null", "attr.aria-expanded": "menuTemplateRef == null ? null : isOpen()" }, classAttribute: "cdk-menu-trigger" }, providers: [
848
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
849
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkMenuTrigger, isStandalone: true, selector: "[cdkMenuTriggerFor]", inputs: { menuTemplateRef: ["cdkMenuTriggerFor", "menuTemplateRef"], menuPosition: ["cdkMenuPosition", "menuPosition"], menuData: ["cdkMenuTriggerData", "menuData"] }, outputs: { opened: "cdkMenuOpened", closed: "cdkMenuClosed" }, host: { listeners: { "focusin": "_setHasFocus(true)", "focusout": "_setHasFocus(false)", "keydown": "_toggleOnKeydown($event)", "click": "_handleClick()" }, properties: { "attr.aria-haspopup": "menuTemplateRef ? \"menu\" : null", "attr.aria-expanded": "menuTemplateRef == null ? null : isOpen()" }, classAttribute: "cdk-menu-trigger" }, providers: [
850
850
  { provide: MENU_TRIGGER, useExisting: CdkMenuTrigger },
851
851
  PARENT_OR_NEW_MENU_STACK_PROVIDER,
852
852
  ], exportAs: ["cdkMenuTriggerFor"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
853
853
  }
854
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuTrigger, decorators: [{
854
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuTrigger, decorators: [{
855
855
  type: Directive,
856
856
  args: [{
857
857
  selector: '[cdkMenuTriggerFor]',
@@ -992,6 +992,16 @@ class CdkMenuItem {
992
992
  this._tabindex = 0;
993
993
  }
994
994
  }
995
+ /** Handles click events on the item. */
996
+ _handleClick(event) {
997
+ if (this.disabled) {
998
+ event.preventDefault();
999
+ event.stopPropagation();
1000
+ }
1001
+ else {
1002
+ this.trigger();
1003
+ }
1004
+ }
995
1005
  /**
996
1006
  * Handles keyboard events for the menu item, specifically either triggering the user defined
997
1007
  * callback or opening/closing the current menu based on whether the left or right arrow key was
@@ -1109,10 +1119,10 @@ class CdkMenuItem {
1109
1119
  element.setAttribute('type', 'button');
1110
1120
  }
1111
1121
  }
1112
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1113
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.2.0-next.2", type: CdkMenuItem, isStandalone: true, selector: "[cdkMenuItem]", inputs: { disabled: ["cdkMenuItemDisabled", "disabled", booleanAttribute], typeaheadLabel: ["cdkMenuitemTypeaheadLabel", "typeaheadLabel"] }, outputs: { triggered: "cdkMenuItemTriggered" }, host: { attributes: { "role": "menuitem" }, listeners: { "blur": "_resetTabIndex()", "focus": "_setTabIndex()", "click": "trigger()", "keydown": "_onKeydown($event)" }, properties: { "tabindex": "_tabindex", "attr.aria-disabled": "disabled || null" }, classAttribute: "cdk-menu-item" }, exportAs: ["cdkMenuItem"], ngImport: i0 });
1122
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1123
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.2.0-rc.1", type: CdkMenuItem, isStandalone: true, selector: "[cdkMenuItem]", inputs: { disabled: ["cdkMenuItemDisabled", "disabled", booleanAttribute], typeaheadLabel: ["cdkMenuitemTypeaheadLabel", "typeaheadLabel"] }, outputs: { triggered: "cdkMenuItemTriggered" }, host: { attributes: { "role": "menuitem" }, listeners: { "blur": "_resetTabIndex()", "focus": "_setTabIndex()", "click": "_handleClick($event)", "keydown": "_onKeydown($event)" }, properties: { "class.cdk-menu-item-disabled": "disabled", "tabindex": "_tabindex", "attr.aria-disabled": "disabled || null" }, classAttribute: "cdk-menu-item" }, exportAs: ["cdkMenuItem"], ngImport: i0 });
1114
1124
  }
1115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuItem, decorators: [{
1125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuItem, decorators: [{
1116
1126
  type: Directive,
1117
1127
  args: [{
1118
1128
  selector: '[cdkMenuItem]',
@@ -1120,11 +1130,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2",
1120
1130
  host: {
1121
1131
  'role': 'menuitem',
1122
1132
  'class': 'cdk-menu-item',
1133
+ '[class.cdk-menu-item-disabled]': 'disabled',
1123
1134
  '[tabindex]': '_tabindex',
1124
1135
  '[attr.aria-disabled]': 'disabled || null',
1125
1136
  '(blur)': '_resetTabIndex()',
1126
1137
  '(focus)': '_setTabIndex()',
1127
- '(click)': 'trigger()',
1138
+ '(click)': '_handleClick($event)',
1128
1139
  '(keydown)': '_onKeydown($event)',
1129
1140
  },
1130
1141
  }]
@@ -1210,10 +1221,12 @@ class CdkMenuBase extends CdkMenuGroup {
1210
1221
  menuAim = inject(MENU_AIM, { optional: true, self: true });
1211
1222
  /** The directionality (text direction) of the current page. */
1212
1223
  dir = inject(Directionality, { optional: true });
1224
+ /** All items inside the menu, including ones that belong to other menus. */
1225
+ _allItems;
1213
1226
  /** The id of the menu's host element. */
1214
1227
  id = inject(_IdGenerator).getId('cdk-menu-');
1215
- /** All child MenuItem elements nested in this Menu. */
1216
- items;
1228
+ /** All child MenuItem elements belonging to this Menu. */
1229
+ items = new QueryList();
1217
1230
  /** The direction items in the menu flow. */
1218
1231
  orientation = 'vertical';
1219
1232
  /**
@@ -1239,6 +1252,7 @@ class CdkMenuBase extends CdkMenuGroup {
1239
1252
  if (!this.isInline) {
1240
1253
  this.menuStack.push(this);
1241
1254
  }
1255
+ this._setItems();
1242
1256
  this._setKeyManager();
1243
1257
  this._handleFocus();
1244
1258
  this._subscribeToMenuStackHasFocus();
@@ -1304,9 +1318,24 @@ class CdkMenuBase extends CdkMenuGroup {
1304
1318
  }
1305
1319
  }
1306
1320
  }
1321
+ /** Sets up the subscription that keeps the items list in sync. */
1322
+ _setItems() {
1323
+ // Since the items query has `descendants: true`, we need
1324
+ // to filter out items belonging to a different menu.
1325
+ this._allItems.changes
1326
+ .pipe(startWith(this._allItems), takeUntil(this.destroyed))
1327
+ .subscribe((items) => {
1328
+ this.items.reset(items.filter(item => item._parentMenu === this));
1329
+ this.items.notifyOnChanges();
1330
+ });
1331
+ }
1307
1332
  /** Setup the FocusKeyManager with the correct orientation for the menu. */
1308
1333
  _setKeyManager() {
1309
- this.keyManager = new FocusKeyManager(this.items).withWrap().withTypeAhead().withHomeAndEnd();
1334
+ this.keyManager = new FocusKeyManager(this.items)
1335
+ .withWrap()
1336
+ .withTypeAhead()
1337
+ .withHomeAndEnd()
1338
+ .skipPredicate(() => false);
1310
1339
  if (this.orientation === 'horizontal') {
1311
1340
  this.keyManager.withHorizontalOrientation(this.dir?.value || 'ltr');
1312
1341
  }
@@ -1368,10 +1397,10 @@ class CdkMenuBase extends CdkMenuGroup {
1368
1397
  }
1369
1398
  });
1370
1399
  }
1371
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1372
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-next.2", type: CdkMenuBase, isStandalone: true, inputs: { id: "id" }, host: { attributes: { "role": "menu" }, listeners: { "focusin": "menuStack.setHasFocus(true)", "focusout": "menuStack.setHasFocus(false)" }, properties: { "tabindex": "_getTabIndex()", "id": "id", "attr.aria-orientation": "orientation", "attr.data-cdk-menu-stack-id": "menuStack.id" } }, queries: [{ propertyName: "items", predicate: CdkMenuItem, descendants: true }], usesInheritance: true, ngImport: i0 });
1400
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1401
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkMenuBase, isStandalone: true, inputs: { id: "id" }, host: { attributes: { "role": "menu" }, listeners: { "focusin": "menuStack.setHasFocus(true)", "focusout": "menuStack.setHasFocus(false)" }, properties: { "tabindex": "_getTabIndex()", "id": "id", "attr.aria-orientation": "orientation", "attr.data-cdk-menu-stack-id": "menuStack.id" } }, queries: [{ propertyName: "_allItems", predicate: CdkMenuItem, descendants: true }], usesInheritance: true, ngImport: i0 });
1373
1402
  }
1374
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuBase, decorators: [{
1403
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuBase, decorators: [{
1375
1404
  type: Directive,
1376
1405
  args: [{
1377
1406
  host: {
@@ -1385,11 +1414,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2",
1385
1414
  '(focusout)': 'menuStack.setHasFocus(false)',
1386
1415
  },
1387
1416
  }]
1388
- }], propDecorators: { id: [{
1389
- type: Input
1390
- }], items: [{
1417
+ }], propDecorators: { _allItems: [{
1391
1418
  type: ContentChildren,
1392
1419
  args: [CdkMenuItem, { descendants: true }]
1420
+ }], id: [{
1421
+ type: Input
1393
1422
  }] } });
1394
1423
 
1395
1424
  /**
@@ -1482,14 +1511,14 @@ class CdkMenu extends CdkMenuBase {
1482
1511
  .pipe(takeUntil(this.destroyed))
1483
1512
  .subscribe(event => this._toggleMenuFocus(event));
1484
1513
  }
1485
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1486
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-next.2", type: CdkMenu, isStandalone: true, selector: "[cdkMenu]", outputs: { closed: "closed" }, host: { attributes: { "role": "menu" }, listeners: { "keydown": "_handleKeyEvent($event)" }, properties: { "class.cdk-menu-inline": "isInline" }, classAttribute: "cdk-menu" }, providers: [
1514
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1515
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkMenu, isStandalone: true, selector: "[cdkMenu]", outputs: { closed: "closed" }, host: { attributes: { "role": "menu" }, listeners: { "keydown": "_handleKeyEvent($event)" }, properties: { "class.cdk-menu-inline": "isInline" }, classAttribute: "cdk-menu" }, providers: [
1487
1516
  { provide: CdkMenuGroup, useExisting: CdkMenu },
1488
1517
  { provide: CDK_MENU, useExisting: CdkMenu },
1489
1518
  PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER('vertical'),
1490
1519
  ], exportAs: ["cdkMenu"], usesInheritance: true, ngImport: i0 });
1491
1520
  }
1492
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenu, decorators: [{
1521
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenu, decorators: [{
1493
1522
  type: Directive,
1494
1523
  args: [{
1495
1524
  selector: '[cdkMenu]',
@@ -1600,14 +1629,14 @@ class CdkMenuBar extends CdkMenuBase {
1600
1629
  .pipe(takeUntil(this.destroyed))
1601
1630
  .subscribe(event => this._toggleOpenMenu(event));
1602
1631
  }
1603
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuBar, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1604
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-next.2", type: CdkMenuBar, isStandalone: true, selector: "[cdkMenuBar]", host: { attributes: { "role": "menubar" }, listeners: { "keydown": "_handleKeyEvent($event)" }, classAttribute: "cdk-menu-bar" }, providers: [
1632
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuBar, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1633
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkMenuBar, isStandalone: true, selector: "[cdkMenuBar]", host: { attributes: { "role": "menubar" }, listeners: { "keydown": "_handleKeyEvent($event)" }, classAttribute: "cdk-menu-bar" }, providers: [
1605
1634
  { provide: CdkMenuGroup, useExisting: CdkMenuBar },
1606
1635
  { provide: CDK_MENU, useExisting: CdkMenuBar },
1607
1636
  { provide: MENU_STACK, useFactory: () => MenuStack.inline('horizontal') },
1608
1637
  ], exportAs: ["cdkMenuBar"], usesInheritance: true, ngImport: i0 });
1609
1638
  }
1610
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuBar, decorators: [{
1639
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuBar, decorators: [{
1611
1640
  type: Directive,
1612
1641
  args: [{
1613
1642
  selector: '[cdkMenuBar]',
@@ -1631,10 +1660,10 @@ class CdkMenuItemSelectable extends CdkMenuItem {
1631
1660
  checked = false;
1632
1661
  /** Whether the item should close the menu if triggered by the spacebar. */
1633
1662
  closeOnSpacebarTrigger = false;
1634
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuItemSelectable, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1635
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.2.0-next.2", type: CdkMenuItemSelectable, isStandalone: true, inputs: { checked: ["cdkMenuItemChecked", "checked", booleanAttribute] }, host: { properties: { "attr.aria-checked": "!!checked", "attr.aria-disabled": "disabled || null" } }, usesInheritance: true, ngImport: i0 });
1663
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuItemSelectable, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1664
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.2.0-rc.1", type: CdkMenuItemSelectable, isStandalone: true, inputs: { checked: ["cdkMenuItemChecked", "checked", booleanAttribute] }, host: { properties: { "attr.aria-checked": "!!checked", "attr.aria-disabled": "disabled || null" } }, usesInheritance: true, ngImport: i0 });
1636
1665
  }
1637
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuItemSelectable, decorators: [{
1666
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuItemSelectable, decorators: [{
1638
1667
  type: Directive,
1639
1668
  args: [{
1640
1669
  host: {
@@ -1684,13 +1713,13 @@ class CdkMenuItemRadio extends CdkMenuItemSelectable {
1684
1713
  this.checked = this._id === id;
1685
1714
  });
1686
1715
  }
1687
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuItemRadio, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1688
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-next.2", type: CdkMenuItemRadio, isStandalone: true, selector: "[cdkMenuItemRadio]", host: { attributes: { "role": "menuitemradio" }, properties: { "class.cdk-menu-item-radio": "true" } }, providers: [
1716
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuItemRadio, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1717
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkMenuItemRadio, isStandalone: true, selector: "[cdkMenuItemRadio]", host: { attributes: { "role": "menuitemradio" }, properties: { "class.cdk-menu-item-radio": "true" } }, providers: [
1689
1718
  { provide: CdkMenuItemSelectable, useExisting: CdkMenuItemRadio },
1690
1719
  { provide: CdkMenuItem, useExisting: CdkMenuItemSelectable },
1691
1720
  ], exportAs: ["cdkMenuItemRadio"], usesInheritance: true, ngImport: i0 });
1692
1721
  }
1693
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuItemRadio, decorators: [{
1722
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuItemRadio, decorators: [{
1694
1723
  type: Directive,
1695
1724
  args: [{
1696
1725
  selector: '[cdkMenuItemRadio]',
@@ -1722,13 +1751,13 @@ class CdkMenuItemCheckbox extends CdkMenuItemSelectable {
1722
1751
  this.checked = !this.checked;
1723
1752
  }
1724
1753
  }
1725
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuItemCheckbox, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1726
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-next.2", type: CdkMenuItemCheckbox, isStandalone: true, selector: "[cdkMenuItemCheckbox]", host: { attributes: { "role": "menuitemcheckbox" }, properties: { "class.cdk-menu-item-checkbox": "true" } }, providers: [
1754
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuItemCheckbox, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1755
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkMenuItemCheckbox, isStandalone: true, selector: "[cdkMenuItemCheckbox]", host: { attributes: { "role": "menuitemcheckbox" }, properties: { "class.cdk-menu-item-checkbox": "true" } }, providers: [
1727
1756
  { provide: CdkMenuItemSelectable, useExisting: CdkMenuItemCheckbox },
1728
1757
  { provide: CdkMenuItem, useExisting: CdkMenuItemSelectable },
1729
1758
  ], exportAs: ["cdkMenuItemCheckbox"], usesInheritance: true, ngImport: i0 });
1730
1759
  }
1731
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuItemCheckbox, decorators: [{
1760
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuItemCheckbox, decorators: [{
1732
1761
  type: Directive,
1733
1762
  args: [{
1734
1763
  selector: '[cdkMenuItemCheckbox]',
@@ -1896,13 +1925,13 @@ class CdkContextMenuTrigger extends CdkMenuTriggerBase {
1896
1925
  this._subscribeToOutsideClicks(userEvent);
1897
1926
  }
1898
1927
  }
1899
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkContextMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1900
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.2.0-next.2", type: CdkContextMenuTrigger, isStandalone: true, selector: "[cdkContextMenuTriggerFor]", inputs: { menuTemplateRef: ["cdkContextMenuTriggerFor", "menuTemplateRef"], menuPosition: ["cdkContextMenuPosition", "menuPosition"], menuData: ["cdkContextMenuTriggerData", "menuData"], disabled: ["cdkContextMenuDisabled", "disabled", booleanAttribute] }, outputs: { opened: "cdkContextMenuOpened", closed: "cdkContextMenuClosed" }, host: { listeners: { "contextmenu": "_openOnContextMenu($event)" }, properties: { "attr.data-cdk-menu-stack-id": "null" } }, providers: [
1928
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkContextMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1929
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.2.0-rc.1", type: CdkContextMenuTrigger, isStandalone: true, selector: "[cdkContextMenuTriggerFor]", inputs: { menuTemplateRef: ["cdkContextMenuTriggerFor", "menuTemplateRef"], menuPosition: ["cdkContextMenuPosition", "menuPosition"], menuData: ["cdkContextMenuTriggerData", "menuData"], disabled: ["cdkContextMenuDisabled", "disabled", booleanAttribute] }, outputs: { opened: "cdkContextMenuOpened", closed: "cdkContextMenuClosed" }, host: { listeners: { "contextmenu": "_openOnContextMenu($event)" }, properties: { "attr.data-cdk-menu-stack-id": "null" } }, providers: [
1901
1930
  { provide: MENU_TRIGGER, useExisting: CdkContextMenuTrigger },
1902
1931
  { provide: MENU_STACK, useClass: MenuStack },
1903
1932
  ], exportAs: ["cdkContextMenuTriggerFor"], usesInheritance: true, ngImport: i0 });
1904
1933
  }
1905
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkContextMenuTrigger, decorators: [{
1934
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkContextMenuTrigger, decorators: [{
1906
1935
  type: Directive,
1907
1936
  args: [{
1908
1937
  selector: '[cdkContextMenuTriggerFor]',
@@ -1940,8 +1969,8 @@ const MENU_DIRECTIVES = [
1940
1969
  ];
1941
1970
  /** Module that declares components and directives for the CDK menu. */
1942
1971
  class CdkMenuModule {
1943
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1944
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuModule, imports: [OverlayModule, CdkMenuBar,
1972
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1973
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuModule, imports: [OverlayModule, CdkMenuBar,
1945
1974
  CdkMenu,
1946
1975
  CdkMenuItem,
1947
1976
  CdkMenuItemRadio,
@@ -1958,9 +1987,9 @@ class CdkMenuModule {
1958
1987
  CdkMenuGroup,
1959
1988
  CdkContextMenuTrigger,
1960
1989
  CdkTargetMenuAim] });
1961
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuModule, imports: [OverlayModule] });
1990
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuModule, imports: [OverlayModule] });
1962
1991
  }
1963
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkMenuModule, decorators: [{
1992
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkMenuModule, decorators: [{
1964
1993
  type: NgModule,
1965
1994
  args: [{
1966
1995
  imports: [OverlayModule, ...MENU_DIRECTIVES],