@angular/aria 21.0.0 → 21.0.2

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.
package/fesm2022/menu.mjs CHANGED
@@ -49,7 +49,7 @@ class MenuTrigger {
49
49
  }
50
50
  static ɵfac = i0.ɵɵngDeclareFactory({
51
51
  minVersion: "12.0.0",
52
- version: "20.2.0-next.2",
52
+ version: "21.0.0",
53
53
  ngImport: i0,
54
54
  type: MenuTrigger,
55
55
  deps: [],
@@ -57,7 +57,7 @@ class MenuTrigger {
57
57
  });
58
58
  static ɵdir = i0.ɵɵngDeclareDirective({
59
59
  minVersion: "17.1.0",
60
- version: "20.2.0-next.2",
60
+ version: "21.0.0",
61
61
  type: MenuTrigger,
62
62
  isStandalone: true,
63
63
  selector: "button[ngMenuTrigger]",
@@ -106,7 +106,7 @@ class MenuTrigger {
106
106
  }
107
107
  i0.ɵɵngDeclareClassMetadata({
108
108
  minVersion: "12.0.0",
109
- version: "20.2.0-next.2",
109
+ version: "21.0.0",
110
110
  ngImport: i0,
111
111
  type: MenuTrigger,
112
112
  decorators: [{
@@ -128,7 +128,33 @@ i0.ɵɵngDeclareClassMetadata({
128
128
  }
129
129
  }]
130
130
  }],
131
- ctorParameters: () => []
131
+ ctorParameters: () => [],
132
+ propDecorators: {
133
+ menu: [{
134
+ type: i0.Input,
135
+ args: [{
136
+ isSignal: true,
137
+ alias: "menu",
138
+ required: false
139
+ }]
140
+ }],
141
+ disabled: [{
142
+ type: i0.Input,
143
+ args: [{
144
+ isSignal: true,
145
+ alias: "disabled",
146
+ required: false
147
+ }]
148
+ }],
149
+ softDisabled: [{
150
+ type: i0.Input,
151
+ args: [{
152
+ isSignal: true,
153
+ alias: "softDisabled",
154
+ required: false
155
+ }]
156
+ }]
157
+ }
132
158
  });
133
159
  class Menu {
134
160
  _deferredContentAware = inject(DeferredContentAware, {
@@ -208,7 +234,7 @@ class Menu {
208
234
  }
209
235
  });
210
236
  afterRenderEffect(() => {
211
- if (!this._pattern.hasBeenFocused() && this._items().length) {
237
+ if (!this._pattern.hasBeenFocused() && !this._pattern.hasBeenHovered() && this._items().length) {
212
238
  untracked(() => this._pattern.setDefaultState());
213
239
  }
214
240
  });
@@ -218,7 +244,7 @@ class Menu {
218
244
  }
219
245
  static ɵfac = i0.ɵɵngDeclareFactory({
220
246
  minVersion: "12.0.0",
221
- version: "20.2.0-next.2",
247
+ version: "21.0.0",
222
248
  ngImport: i0,
223
249
  type: Menu,
224
250
  deps: [],
@@ -226,7 +252,7 @@ class Menu {
226
252
  });
227
253
  static ɵdir = i0.ɵɵngDeclareDirective({
228
254
  minVersion: "17.2.0",
229
- version: "20.2.0-next.2",
255
+ version: "21.0.0",
230
256
  type: Menu,
231
257
  isStandalone: true,
232
258
  selector: "[ngMenu]",
@@ -305,7 +331,7 @@ class Menu {
305
331
  }
306
332
  i0.ɵɵngDeclareClassMetadata({
307
333
  minVersion: "12.0.0",
308
- version: "20.2.0-next.2",
334
+ version: "21.0.0",
309
335
  ngImport: i0,
310
336
  type: Menu,
311
337
  decorators: [{
@@ -332,7 +358,62 @@ i0.ɵɵngDeclareClassMetadata({
332
358
  }]
333
359
  }]
334
360
  }],
335
- ctorParameters: () => []
361
+ ctorParameters: () => [],
362
+ propDecorators: {
363
+ _allItems: [{
364
+ type: i0.ContentChildren,
365
+ args: [i0.forwardRef(() => MenuItem), {
366
+ ...{
367
+ descendants: true
368
+ },
369
+ isSignal: true
370
+ }]
371
+ }],
372
+ id: [{
373
+ type: i0.Input,
374
+ args: [{
375
+ isSignal: true,
376
+ alias: "id",
377
+ required: false
378
+ }]
379
+ }],
380
+ wrap: [{
381
+ type: i0.Input,
382
+ args: [{
383
+ isSignal: true,
384
+ alias: "wrap",
385
+ required: false
386
+ }]
387
+ }],
388
+ typeaheadDelay: [{
389
+ type: i0.Input,
390
+ args: [{
391
+ isSignal: true,
392
+ alias: "typeaheadDelay",
393
+ required: false
394
+ }]
395
+ }],
396
+ disabled: [{
397
+ type: i0.Input,
398
+ args: [{
399
+ isSignal: true,
400
+ alias: "disabled",
401
+ required: false
402
+ }]
403
+ }],
404
+ onSelect: [{
405
+ type: i0.Output,
406
+ args: ["onSelect"]
407
+ }],
408
+ expansionDelay: [{
409
+ type: i0.Input,
410
+ args: [{
411
+ isSignal: true,
412
+ alias: "expansionDelay",
413
+ required: false
414
+ }]
415
+ }]
416
+ }
336
417
  });
337
418
  class MenuBar {
338
419
  _allItems = contentChildren(MenuItem, ...(ngDevMode ? [{
@@ -401,7 +482,7 @@ class MenuBar {
401
482
  }
402
483
  static ɵfac = i0.ɵɵngDeclareFactory({
403
484
  minVersion: "12.0.0",
404
- version: "20.2.0-next.2",
485
+ version: "21.0.0",
405
486
  ngImport: i0,
406
487
  type: MenuBar,
407
488
  deps: [],
@@ -409,7 +490,7 @@ class MenuBar {
409
490
  });
410
491
  static ɵdir = i0.ɵɵngDeclareDirective({
411
492
  minVersion: "17.2.0",
412
- version: "20.2.0-next.2",
493
+ version: "21.0.0",
413
494
  type: MenuBar,
414
495
  isStandalone: true,
415
496
  selector: "[ngMenuBar]",
@@ -483,7 +564,7 @@ class MenuBar {
483
564
  }
484
565
  i0.ɵɵngDeclareClassMetadata({
485
566
  minVersion: "12.0.0",
486
- version: "20.2.0-next.2",
567
+ version: "21.0.0",
487
568
  ngImport: i0,
488
569
  type: MenuBar,
489
570
  decorators: [{
@@ -504,7 +585,65 @@ i0.ɵɵngDeclareClassMetadata({
504
585
  }
505
586
  }]
506
587
  }],
507
- ctorParameters: () => []
588
+ ctorParameters: () => [],
589
+ propDecorators: {
590
+ _allItems: [{
591
+ type: i0.ContentChildren,
592
+ args: [i0.forwardRef(() => MenuItem), {
593
+ ...{
594
+ descendants: true
595
+ },
596
+ isSignal: true
597
+ }]
598
+ }],
599
+ disabled: [{
600
+ type: i0.Input,
601
+ args: [{
602
+ isSignal: true,
603
+ alias: "disabled",
604
+ required: false
605
+ }]
606
+ }],
607
+ softDisabled: [{
608
+ type: i0.Input,
609
+ args: [{
610
+ isSignal: true,
611
+ alias: "softDisabled",
612
+ required: false
613
+ }]
614
+ }],
615
+ values: [{
616
+ type: i0.Input,
617
+ args: [{
618
+ isSignal: true,
619
+ alias: "values",
620
+ required: false
621
+ }]
622
+ }, {
623
+ type: i0.Output,
624
+ args: ["valuesChange"]
625
+ }],
626
+ wrap: [{
627
+ type: i0.Input,
628
+ args: [{
629
+ isSignal: true,
630
+ alias: "wrap",
631
+ required: false
632
+ }]
633
+ }],
634
+ typeaheadDelay: [{
635
+ type: i0.Input,
636
+ args: [{
637
+ isSignal: true,
638
+ alias: "typeaheadDelay",
639
+ required: false
640
+ }]
641
+ }],
642
+ onSelect: [{
643
+ type: i0.Output,
644
+ args: ["onSelect"]
645
+ }]
646
+ }
508
647
  });
509
648
  class MenuItem {
510
649
  _elementRef = inject(ElementRef);
@@ -562,7 +701,7 @@ class MenuItem {
562
701
  }
563
702
  static ɵfac = i0.ɵɵngDeclareFactory({
564
703
  minVersion: "12.0.0",
565
- version: "20.2.0-next.2",
704
+ version: "21.0.0",
566
705
  ngImport: i0,
567
706
  type: MenuItem,
568
707
  deps: [],
@@ -570,7 +709,7 @@ class MenuItem {
570
709
  });
571
710
  static ɵdir = i0.ɵɵngDeclareDirective({
572
711
  minVersion: "17.1.0",
573
- version: "20.2.0-next.2",
712
+ version: "21.0.0",
574
713
  type: MenuItem,
575
714
  isStandalone: true,
576
715
  selector: "[ngMenuItem]",
@@ -636,7 +775,7 @@ class MenuItem {
636
775
  }
637
776
  i0.ɵɵngDeclareClassMetadata({
638
777
  minVersion: "12.0.0",
639
- version: "20.2.0-next.2",
778
+ version: "21.0.0",
640
779
  ngImport: i0,
641
780
  type: MenuItem,
642
781
  decorators: [{
@@ -656,12 +795,57 @@ i0.ɵɵngDeclareClassMetadata({
656
795
  }
657
796
  }]
658
797
  }],
659
- ctorParameters: () => []
798
+ ctorParameters: () => [],
799
+ propDecorators: {
800
+ id: [{
801
+ type: i0.Input,
802
+ args: [{
803
+ isSignal: true,
804
+ alias: "id",
805
+ required: false
806
+ }]
807
+ }],
808
+ value: [{
809
+ type: i0.Input,
810
+ args: [{
811
+ isSignal: true,
812
+ alias: "value",
813
+ required: true
814
+ }]
815
+ }],
816
+ disabled: [{
817
+ type: i0.Input,
818
+ args: [{
819
+ isSignal: true,
820
+ alias: "disabled",
821
+ required: false
822
+ }]
823
+ }],
824
+ searchTerm: [{
825
+ type: i0.Input,
826
+ args: [{
827
+ isSignal: true,
828
+ alias: "searchTerm",
829
+ required: false
830
+ }]
831
+ }, {
832
+ type: i0.Output,
833
+ args: ["searchTermChange"]
834
+ }],
835
+ submenu: [{
836
+ type: i0.Input,
837
+ args: [{
838
+ isSignal: true,
839
+ alias: "submenu",
840
+ required: false
841
+ }]
842
+ }]
843
+ }
660
844
  });
661
845
  class MenuContent {
662
846
  static ɵfac = i0.ɵɵngDeclareFactory({
663
847
  minVersion: "12.0.0",
664
- version: "20.2.0-next.2",
848
+ version: "21.0.0",
665
849
  ngImport: i0,
666
850
  type: MenuContent,
667
851
  deps: [],
@@ -669,7 +853,7 @@ class MenuContent {
669
853
  });
670
854
  static ɵdir = i0.ɵɵngDeclareDirective({
671
855
  minVersion: "14.0.0",
672
- version: "20.2.0-next.2",
856
+ version: "21.0.0",
673
857
  type: MenuContent,
674
858
  isStandalone: true,
675
859
  selector: "ng-template[ngMenuContent]",
@@ -682,7 +866,7 @@ class MenuContent {
682
866
  }
683
867
  i0.ɵɵngDeclareClassMetadata({
684
868
  minVersion: "12.0.0",
685
- version: "20.2.0-next.2",
869
+ version: "21.0.0",
686
870
  ngImport: i0,
687
871
  type: MenuContent,
688
872
  decorators: [{
@@ -1 +1 @@
1
- {"version":3,"file":"menu.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/aria/menu/menu.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n Signal,\n signal,\n untracked,\n} from '@angular/core';\nimport {\n SignalLike,\n MenuBarPattern,\n MenuItemPattern,\n MenuPattern,\n MenuTriggerPattern,\n DeferredContent,\n DeferredContentAware,\n} from '@angular/aria/private';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\n\n/**\n * A trigger for a menu.\n *\n * The `ngMenuTrigger` directive is used to open and close menus. It can be applied to\n * any interactive element (e.g., a button) to associate it with a `ngMenu` instance.\n * It also supports linking to sub-menus when applied to a `ngMenuItem`.\n *\n * ```html\n * <button ngMenuTrigger [menu]=\"myMenu\">Open Menu</button>\n *\n * <div ngMenu #myMenu=\"ngMenu\">\n * <div ngMenuItem>Item 1</div>\n * <div ngMenuItem>Item 2</div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: 'button[ngMenuTrigger]',\n exportAs: 'ngMenuTrigger',\n host: {\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.disabled]': '!softDisabled() && _pattern.disabled() ? true : null',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-haspopup]': 'hasPopup()',\n '[attr.aria-expanded]': 'expanded()',\n '[attr.aria-controls]': '_pattern.menu()?.id()',\n '(click)': '_pattern.onClick()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(focusout)': '_pattern.onFocusOut($event)',\n '(focusin)': '_pattern.onFocusIn()',\n },\n})\nexport class MenuTrigger<V> {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The menu associated with the trigger. */\n menu = input<Menu<V> | undefined>(undefined);\n\n /** Whether the menu is expanded. */\n readonly expanded = computed(() => this._pattern.expanded());\n\n /** Whether the menu trigger has a popup. */\n readonly hasPopup = computed(() => this._pattern.hasPopup());\n\n /** Whether the menu trigger is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the menu trigger is soft disabled. */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** The menu trigger ui pattern instance. */\n _pattern: MenuTriggerPattern<V> = new MenuTriggerPattern({\n textDirection: this.textDirection,\n element: computed(() => this._elementRef.nativeElement),\n menu: computed(() => this.menu()?._pattern),\n disabled: () => this.disabled(),\n });\n\n constructor() {\n effect(() => this.menu()?.parent.set(this));\n }\n\n /** Opens the menu focusing on the first menu item. */\n open() {\n this._pattern.open({first: true});\n }\n\n /** Closes the menu. */\n close() {\n this._pattern.close();\n }\n}\n\n/**\n * A list of menu items.\n *\n * A `ngMenu` is used to offer a list of menu item choices to users. Menus can be nested\n * within other menus to create sub-menus. It works in conjunction with `ngMenuTrigger`\n * and `ngMenuItem` directives.\n *\n * ```html\n * <button ngMenuTrigger [menu]=\"myMenu\">Options</button>\n *\n * <div ngMenu #myMenu=\"ngMenu\">\n * <div ngMenuItem>Star</div>\n * <div ngMenuItem>Edit</div>\n * <div ngMenuItem [submenu]=\"subMenu\">More</div>\n * </div>\n *\n * <div ngMenu #subMenu=\"ngMenu\">\n * <div ngMenuItem>Sub Item 1</div>\n * <div ngMenuItem>Sub Item 2</div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngMenu]',\n exportAs: 'ngMenu',\n host: {\n 'role': 'menu',\n '[attr.id]': '_pattern.id()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.tabindex]': 'tabIndex()',\n '[attr.data-visible]': 'visible()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(mouseover)': '_pattern.onMouseOver($event)',\n '(mouseout)': '_pattern.onMouseOut($event)',\n '(focusout)': '_pattern.onFocusOut($event)',\n '(focusin)': '_pattern.onFocusIn()',\n '(click)': '_pattern.onClick($event)',\n },\n hostDirectives: [\n {\n directive: DeferredContentAware,\n inputs: ['preserveContent'],\n },\n ],\n})\nexport class Menu<V> {\n /** The DeferredContentAware host directive. */\n private readonly _deferredContentAware = inject(DeferredContentAware, {optional: true});\n\n /** The menu items contained in the menu. */\n readonly _allItems = contentChildren<MenuItem<V>>(MenuItem, {descendants: true});\n\n /** The menu items that are direct children of this menu. */\n readonly _items: Signal<MenuItem<V>[]> = computed(() =>\n this._allItems().filter(i => i.parent === this),\n );\n\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The unique ID of the menu. */\n readonly id = input(inject(_IdGenerator).getId('ng-menu-', true));\n\n /** Whether the menu should wrap its items. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /** The delay in milliseconds before the typeahead buffer is cleared. */\n readonly typeaheadDelay = input<number>(500); // Picked arbitrarily.\n\n /** Whether the menu is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** A reference to the parent menu item or menu trigger. */\n readonly parent = signal<MenuTrigger<V> | MenuItem<V> | undefined>(undefined);\n\n /** The menu ui pattern instance. */\n readonly _pattern: MenuPattern<V>;\n\n /**\n * The menu items as a writable signal.\n *\n * TODO(wagnermaciel): This would normally be a computed, but using a computed causes a bug where\n * sometimes the items array is empty. The bug can be reproduced by switching this to use a\n * computed and then quickly opening and closing menus in the dev app.\n */\n private readonly _itemPatterns = () => this._items().map(i => i._pattern);\n\n /** Whether the menu is visible. */\n readonly visible = computed(() => this._pattern.visible());\n\n /** The tab index of the menu. */\n readonly tabIndex = computed(() => this._pattern.tabIndex());\n\n /** A callback function triggered when a menu item is selected. */\n onSelect = output<V>();\n\n /** The delay in milliseconds before expanding sub-menus on hover. */\n readonly expansionDelay = input<number>(100); // Arbitrarily chosen.\n\n constructor() {\n this._pattern = new MenuPattern({\n ...this,\n parent: computed(() => this.parent()?._pattern),\n items: this._itemPatterns,\n multi: () => false,\n softDisabled: () => true,\n focusMode: () => 'roving',\n orientation: () => 'vertical',\n selectionMode: () => 'explicit',\n activeItem: signal(undefined),\n element: computed(() => this._elementRef.nativeElement),\n onSelect: (value: V) => this.onSelect.emit(value),\n });\n\n afterRenderEffect(() => {\n const parent = this.parent();\n if (parent instanceof MenuItem && parent.parent instanceof MenuBar) {\n this._deferredContentAware?.contentVisible.set(true);\n } else {\n this._deferredContentAware?.contentVisible.set(\n this._pattern.visible() || !!this.parent()?._pattern.hasBeenFocused(),\n );\n }\n });\n\n // TODO(wagnermaciel): This is a redundancy needed for if the user uses display: none to hide\n // submenus. In those cases, the ui pattern is calling focus() before the ui has a chance to\n // update the display property. The result is focus() being called on an element that is not\n // focusable. This simply retries focusing the element after render.\n afterRenderEffect(() => {\n if (this._pattern.visible()) {\n const activeItem = untracked(() => this._pattern.inputs.activeItem());\n this._pattern.listBehavior.goto(activeItem!);\n }\n });\n\n afterRenderEffect(() => {\n if (!this._pattern.hasBeenFocused() && this._items().length) {\n untracked(() => this._pattern.setDefaultState());\n }\n });\n }\n\n /** Closes the menu. */\n close() {\n this._pattern.close();\n }\n}\n\n/**\n * A menu bar of menu items.\n *\n * Like the `ngMenu`, a `ngMenuBar` is used to offer a list of menu item choices to users.\n * However, a menubar is used to display a persistent, top-level, always-visible set of\n * menu item choices, typically found at the top of an application window.\n *\n * ```html\n * <div ngMenuBar>\n * <button ngMenuTrigger [menu]=\"fileMenu\">File</button>\n * <button ngMenuTrigger [menu]=\"editMenu\">Edit</button>\n * </div>\n *\n * <div ngMenu #fileMenu=\"ngMenu\">\n * <div ngMenuItem>New</div>\n * <div ngMenuItem>Open</div>\n * </div>\n *\n * <div ngMenu #editMenu=\"ngMenu\">\n * <div ngMenuItem>Cut</div>\n * <div ngMenuItem>Copy</div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngMenuBar]',\n exportAs: 'ngMenuBar',\n host: {\n 'role': 'menubar',\n '[attr.disabled]': '!softDisabled() && _pattern.disabled() ? true : null',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(mouseover)': '_pattern.onMouseOver($event)',\n '(click)': '_pattern.onClick($event)',\n '(focusin)': '_pattern.onFocusIn()',\n '(focusout)': '_pattern.onFocusOut($event)',\n },\n})\nexport class MenuBar<V> {\n /** The menu items contained in the menubar. */\n readonly _allItems = contentChildren<MenuItem<V>>(MenuItem, {descendants: true});\n\n readonly _items: SignalLike<MenuItem<V>[]> = () =>\n this._allItems().filter(i => i.parent === this);\n\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** Whether the menubar is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the menubar is soft disabled. */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The values of the currently selected menu items. */\n readonly values = model<V[]>([]);\n\n /** Whether the menu should wrap its items. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /** The delay in milliseconds before the typeahead buffer is cleared. */\n readonly typeaheadDelay = input<number>(500);\n\n /** The menu ui pattern instance. */\n readonly _pattern: MenuBarPattern<V>;\n\n /** The menu items as a writable signal. */\n private readonly _itemPatterns = signal<MenuItemPattern<V>[]>([]);\n\n /** A callback function triggered when a menu item is selected. */\n onSelect = output<V>();\n\n constructor() {\n this._pattern = new MenuBarPattern({\n ...this,\n items: this._itemPatterns,\n multi: () => false,\n softDisabled: () => true,\n focusMode: () => 'roving',\n orientation: () => 'horizontal',\n selectionMode: () => 'explicit',\n onSelect: (value: V) => this.onSelect.emit(value),\n activeItem: signal(undefined),\n element: computed(() => this._elementRef.nativeElement),\n });\n\n afterRenderEffect(() => {\n this._itemPatterns.set(this._items().map(i => i._pattern));\n });\n\n afterRenderEffect(() => {\n if (!this._pattern.hasBeenFocused()) {\n this._pattern.setDefaultState();\n }\n });\n }\n\n /** Closes the menubar. */\n close() {\n this._pattern.close();\n }\n}\n\n/**\n * An item in a Menu.\n *\n * `ngMenuItem` directives can be used in `ngMenu` and `ngMenuBar` to represent a choice\n * or action a user can take. They can also act as triggers for sub-menus.\n *\n * ```html\n * <div ngMenuItem (onSelect)=\"doAction()\">Action Item</div>\n *\n * <div ngMenuItem [submenu]=\"anotherMenu\">Submenu Trigger</div>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngMenuItem]',\n exportAs: 'ngMenuItem',\n host: {\n 'role': 'menuitem',\n '(focusin)': '_pattern.onFocusIn()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.data-active]': 'active()',\n '[attr.aria-haspopup]': 'hasPopup()',\n '[attr.aria-expanded]': 'expanded()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-controls]': '_pattern.submenu()?.id()',\n },\n})\nexport class MenuItem<V> {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The unique ID of the menu item. */\n readonly id = input(inject(_IdGenerator).getId('ng-menu-item-', true));\n\n /** The value of the menu item. */\n readonly value = input.required<V>();\n\n /** Whether the menu item is disabled. */\n readonly disabled = input<boolean>(false);\n\n // TODO(wagnermaciel): Discuss whether all inputs should be models.\n\n /** The search term associated with the menu item. */\n readonly searchTerm = model<string>('');\n\n /** A reference to the parent menu. */\n private readonly _menu = inject<Menu<V>>(Menu, {optional: true});\n\n /** A reference to the parent menu bar. */\n private readonly _menuBar = inject<MenuBar<V>>(MenuBar, {optional: true});\n\n /** A reference to the parent menu or menubar. */\n readonly parent = this._menu ?? this._menuBar;\n\n /** The submenu associated with the menu item. */\n readonly submenu = input<Menu<V> | undefined>(undefined);\n\n /** Whether the menu item is active. */\n readonly active = computed(() => this._pattern.active());\n\n /** Whether the menu is expanded. */\n readonly expanded = computed(() => this._pattern.expanded());\n\n /** Whether the menu item has a popup. */\n readonly hasPopup = computed(() => this._pattern.hasPopup());\n\n /** The menu item ui pattern instance. */\n readonly _pattern: MenuItemPattern<V> = new MenuItemPattern<V>({\n id: this.id,\n value: this.value,\n element: computed(() => this._elementRef.nativeElement),\n disabled: this.disabled,\n searchTerm: this.searchTerm,\n parent: computed(() => this.parent?._pattern),\n submenu: computed(() => this.submenu()?._pattern),\n });\n\n constructor() {\n effect(() => this.submenu()?.parent.set(this));\n }\n\n /** Opens the submenu focusing on the first menu item. */\n open() {\n this._pattern.open({first: true});\n }\n\n /** Closes the submenu. */\n close() {\n this._pattern.close();\n }\n}\n\n/**\n * Defers the rendering of the menu content.\n *\n * This structural directive should be applied to an `ng-template` within a `ngMenu`\n * or `ngMenuBar` to lazily render its content only when the menu is opened.\n *\n * ```html\n * <div ngMenu #myMenu=\"ngMenu\">\n * <ng-template ngMenuContent>\n * <div ngMenuItem>Lazy Item 1</div>\n * <div ngMenuItem>Lazy Item 2</div>\n * </ng-template>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: 'ng-template[ngMenuContent]',\n exportAs: 'ngMenuContent',\n hostDirectives: [DeferredContent],\n})\nexport class MenuContent {}\n"],"names":["MenuTrigger","_elementRef","inject","ElementRef","element","nativeElement","textDirection","Directionality","valueSignal","menu","input","undefined","expanded","computed","_pattern","hasPopup","disabled","transform","booleanAttribute","softDisabled","MenuTriggerPattern","constructor","effect","parent","set","open","first","close","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","host","listeners","properties","exportAs","ngImport","decorators","args","Menu","_deferredContentAware","DeferredContentAware","optional","_allItems","contentChildren","MenuItem","descendants","_items","filter","i","ngDevMode","debugName","id","_IdGenerator","getId","wrap","typeaheadDelay","signal","_itemPatterns","map","visible","tabIndex","onSelect","output","expansionDelay","MenuPattern","items","multi","focusMode","orientation","selectionMode","activeItem","value","emit","afterRenderEffect","MenuBar","contentVisible","hasBeenFocused","untracked","listBehavior","goto","length","setDefaultState","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","hostDirectives","directive","i1","values","model","MenuBarPattern","required","searchTerm","_menu","_menuBar","submenu","active","MenuItemPattern","outputs","attributes","MenuContent","DeferredContent"],"mappings":"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"}
1
+ {"version":3,"file":"menu.mjs","sources":["../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/aria/menu/menu.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n Signal,\n signal,\n untracked,\n} from '@angular/core';\nimport {\n SignalLike,\n MenuBarPattern,\n MenuItemPattern,\n MenuPattern,\n MenuTriggerPattern,\n DeferredContent,\n DeferredContentAware,\n} from '@angular/aria/private';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\n\n/**\n * A trigger for a menu.\n *\n * The `ngMenuTrigger` directive is used to open and close menus. It can be applied to\n * any interactive element (e.g., a button) to associate it with a `ngMenu` instance.\n * It also supports linking to sub-menus when applied to a `ngMenuItem`.\n *\n * ```html\n * <button ngMenuTrigger [menu]=\"myMenu\">Open Menu</button>\n *\n * <div ngMenu #myMenu=\"ngMenu\">\n * <div ngMenuItem>Item 1</div>\n * <div ngMenuItem>Item 2</div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: 'button[ngMenuTrigger]',\n exportAs: 'ngMenuTrigger',\n host: {\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.disabled]': '!softDisabled() && _pattern.disabled() ? true : null',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-haspopup]': 'hasPopup()',\n '[attr.aria-expanded]': 'expanded()',\n '[attr.aria-controls]': '_pattern.menu()?.id()',\n '(click)': '_pattern.onClick()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(focusout)': '_pattern.onFocusOut($event)',\n '(focusin)': '_pattern.onFocusIn()',\n },\n})\nexport class MenuTrigger<V> {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The menu associated with the trigger. */\n menu = input<Menu<V> | undefined>(undefined);\n\n /** Whether the menu is expanded. */\n readonly expanded = computed(() => this._pattern.expanded());\n\n /** Whether the menu trigger has a popup. */\n readonly hasPopup = computed(() => this._pattern.hasPopup());\n\n /** Whether the menu trigger is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the menu trigger is soft disabled. */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** The menu trigger ui pattern instance. */\n _pattern: MenuTriggerPattern<V> = new MenuTriggerPattern({\n textDirection: this.textDirection,\n element: computed(() => this._elementRef.nativeElement),\n menu: computed(() => this.menu()?._pattern),\n disabled: () => this.disabled(),\n });\n\n constructor() {\n effect(() => this.menu()?.parent.set(this));\n }\n\n /** Opens the menu focusing on the first menu item. */\n open() {\n this._pattern.open({first: true});\n }\n\n /** Closes the menu. */\n close() {\n this._pattern.close();\n }\n}\n\n/**\n * A list of menu items.\n *\n * A `ngMenu` is used to offer a list of menu item choices to users. Menus can be nested\n * within other menus to create sub-menus. It works in conjunction with `ngMenuTrigger`\n * and `ngMenuItem` directives.\n *\n * ```html\n * <button ngMenuTrigger [menu]=\"myMenu\">Options</button>\n *\n * <div ngMenu #myMenu=\"ngMenu\">\n * <div ngMenuItem>Star</div>\n * <div ngMenuItem>Edit</div>\n * <div ngMenuItem [submenu]=\"subMenu\">More</div>\n * </div>\n *\n * <div ngMenu #subMenu=\"ngMenu\">\n * <div ngMenuItem>Sub Item 1</div>\n * <div ngMenuItem>Sub Item 2</div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngMenu]',\n exportAs: 'ngMenu',\n host: {\n 'role': 'menu',\n '[attr.id]': '_pattern.id()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.tabindex]': 'tabIndex()',\n '[attr.data-visible]': 'visible()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(mouseover)': '_pattern.onMouseOver($event)',\n '(mouseout)': '_pattern.onMouseOut($event)',\n '(focusout)': '_pattern.onFocusOut($event)',\n '(focusin)': '_pattern.onFocusIn()',\n '(click)': '_pattern.onClick($event)',\n },\n hostDirectives: [\n {\n directive: DeferredContentAware,\n inputs: ['preserveContent'],\n },\n ],\n})\nexport class Menu<V> {\n /** The DeferredContentAware host directive. */\n private readonly _deferredContentAware = inject(DeferredContentAware, {optional: true});\n\n /** The menu items contained in the menu. */\n readonly _allItems = contentChildren<MenuItem<V>>(MenuItem, {descendants: true});\n\n /** The menu items that are direct children of this menu. */\n readonly _items: Signal<MenuItem<V>[]> = computed(() =>\n this._allItems().filter(i => i.parent === this),\n );\n\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The unique ID of the menu. */\n readonly id = input(inject(_IdGenerator).getId('ng-menu-', true));\n\n /** Whether the menu should wrap its items. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /** The delay in milliseconds before the typeahead buffer is cleared. */\n readonly typeaheadDelay = input<number>(500); // Picked arbitrarily.\n\n /** Whether the menu is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** A reference to the parent menu item or menu trigger. */\n readonly parent = signal<MenuTrigger<V> | MenuItem<V> | undefined>(undefined);\n\n /** The menu ui pattern instance. */\n readonly _pattern: MenuPattern<V>;\n\n /**\n * The menu items as a writable signal.\n *\n * TODO(wagnermaciel): This would normally be a computed, but using a computed causes a bug where\n * sometimes the items array is empty. The bug can be reproduced by switching this to use a\n * computed and then quickly opening and closing menus in the dev app.\n */\n private readonly _itemPatterns = () => this._items().map(i => i._pattern);\n\n /** Whether the menu is visible. */\n readonly visible = computed(() => this._pattern.visible());\n\n /** The tab index of the menu. */\n readonly tabIndex = computed(() => this._pattern.tabIndex());\n\n /** A callback function triggered when a menu item is selected. */\n onSelect = output<V>();\n\n /** The delay in milliseconds before expanding sub-menus on hover. */\n readonly expansionDelay = input<number>(100); // Arbitrarily chosen.\n\n constructor() {\n this._pattern = new MenuPattern({\n ...this,\n parent: computed(() => this.parent()?._pattern),\n items: this._itemPatterns,\n multi: () => false,\n softDisabled: () => true,\n focusMode: () => 'roving',\n orientation: () => 'vertical',\n selectionMode: () => 'explicit',\n activeItem: signal(undefined),\n element: computed(() => this._elementRef.nativeElement),\n onSelect: (value: V) => this.onSelect.emit(value),\n });\n\n afterRenderEffect(() => {\n const parent = this.parent();\n if (parent instanceof MenuItem && parent.parent instanceof MenuBar) {\n this._deferredContentAware?.contentVisible.set(true);\n } else {\n this._deferredContentAware?.contentVisible.set(\n this._pattern.visible() || !!this.parent()?._pattern.hasBeenFocused(),\n );\n }\n });\n\n // TODO(wagnermaciel): This is a redundancy needed for if the user uses display: none to hide\n // submenus. In those cases, the ui pattern is calling focus() before the ui has a chance to\n // update the display property. The result is focus() being called on an element that is not\n // focusable. This simply retries focusing the element after render.\n afterRenderEffect(() => {\n if (this._pattern.visible()) {\n const activeItem = untracked(() => this._pattern.inputs.activeItem());\n this._pattern.listBehavior.goto(activeItem!);\n }\n });\n\n afterRenderEffect(() => {\n if (\n !this._pattern.hasBeenFocused() &&\n !this._pattern.hasBeenHovered() &&\n this._items().length\n ) {\n untracked(() => this._pattern.setDefaultState());\n }\n });\n }\n\n /** Closes the menu. */\n close() {\n this._pattern.close();\n }\n}\n\n/**\n * A menu bar of menu items.\n *\n * Like the `ngMenu`, a `ngMenuBar` is used to offer a list of menu item choices to users.\n * However, a menubar is used to display a persistent, top-level, always-visible set of\n * menu item choices, typically found at the top of an application window.\n *\n * ```html\n * <div ngMenuBar>\n * <button ngMenuTrigger [menu]=\"fileMenu\">File</button>\n * <button ngMenuTrigger [menu]=\"editMenu\">Edit</button>\n * </div>\n *\n * <div ngMenu #fileMenu=\"ngMenu\">\n * <div ngMenuItem>New</div>\n * <div ngMenuItem>Open</div>\n * </div>\n *\n * <div ngMenu #editMenu=\"ngMenu\">\n * <div ngMenuItem>Cut</div>\n * <div ngMenuItem>Copy</div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngMenuBar]',\n exportAs: 'ngMenuBar',\n host: {\n 'role': 'menubar',\n '[attr.disabled]': '!softDisabled() && _pattern.disabled() ? true : null',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(mouseover)': '_pattern.onMouseOver($event)',\n '(click)': '_pattern.onClick($event)',\n '(focusin)': '_pattern.onFocusIn()',\n '(focusout)': '_pattern.onFocusOut($event)',\n },\n})\nexport class MenuBar<V> {\n /** The menu items contained in the menubar. */\n readonly _allItems = contentChildren<MenuItem<V>>(MenuItem, {descendants: true});\n\n readonly _items: SignalLike<MenuItem<V>[]> = () =>\n this._allItems().filter(i => i.parent === this);\n\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** Whether the menubar is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the menubar is soft disabled. */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The values of the currently selected menu items. */\n readonly values = model<V[]>([]);\n\n /** Whether the menu should wrap its items. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /** The delay in milliseconds before the typeahead buffer is cleared. */\n readonly typeaheadDelay = input<number>(500);\n\n /** The menu ui pattern instance. */\n readonly _pattern: MenuBarPattern<V>;\n\n /** The menu items as a writable signal. */\n private readonly _itemPatterns = signal<MenuItemPattern<V>[]>([]);\n\n /** A callback function triggered when a menu item is selected. */\n onSelect = output<V>();\n\n constructor() {\n this._pattern = new MenuBarPattern({\n ...this,\n items: this._itemPatterns,\n multi: () => false,\n softDisabled: () => true,\n focusMode: () => 'roving',\n orientation: () => 'horizontal',\n selectionMode: () => 'explicit',\n onSelect: (value: V) => this.onSelect.emit(value),\n activeItem: signal(undefined),\n element: computed(() => this._elementRef.nativeElement),\n });\n\n afterRenderEffect(() => {\n this._itemPatterns.set(this._items().map(i => i._pattern));\n });\n\n afterRenderEffect(() => {\n if (!this._pattern.hasBeenFocused()) {\n this._pattern.setDefaultState();\n }\n });\n }\n\n /** Closes the menubar. */\n close() {\n this._pattern.close();\n }\n}\n\n/**\n * An item in a Menu.\n *\n * `ngMenuItem` directives can be used in `ngMenu` and `ngMenuBar` to represent a choice\n * or action a user can take. They can also act as triggers for sub-menus.\n *\n * ```html\n * <div ngMenuItem (onSelect)=\"doAction()\">Action Item</div>\n *\n * <div ngMenuItem [submenu]=\"anotherMenu\">Submenu Trigger</div>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngMenuItem]',\n exportAs: 'ngMenuItem',\n host: {\n 'role': 'menuitem',\n '(focusin)': '_pattern.onFocusIn()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.data-active]': 'active()',\n '[attr.aria-haspopup]': 'hasPopup()',\n '[attr.aria-expanded]': 'expanded()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-controls]': '_pattern.submenu()?.id()',\n },\n})\nexport class MenuItem<V> {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The unique ID of the menu item. */\n readonly id = input(inject(_IdGenerator).getId('ng-menu-item-', true));\n\n /** The value of the menu item. */\n readonly value = input.required<V>();\n\n /** Whether the menu item is disabled. */\n readonly disabled = input<boolean>(false);\n\n // TODO(wagnermaciel): Discuss whether all inputs should be models.\n\n /** The search term associated with the menu item. */\n readonly searchTerm = model<string>('');\n\n /** A reference to the parent menu. */\n private readonly _menu = inject<Menu<V>>(Menu, {optional: true});\n\n /** A reference to the parent menu bar. */\n private readonly _menuBar = inject<MenuBar<V>>(MenuBar, {optional: true});\n\n /** A reference to the parent menu or menubar. */\n readonly parent = this._menu ?? this._menuBar;\n\n /** The submenu associated with the menu item. */\n readonly submenu = input<Menu<V> | undefined>(undefined);\n\n /** Whether the menu item is active. */\n readonly active = computed(() => this._pattern.active());\n\n /** Whether the menu is expanded. */\n readonly expanded = computed(() => this._pattern.expanded());\n\n /** Whether the menu item has a popup. */\n readonly hasPopup = computed(() => this._pattern.hasPopup());\n\n /** The menu item ui pattern instance. */\n readonly _pattern: MenuItemPattern<V> = new MenuItemPattern<V>({\n id: this.id,\n value: this.value,\n element: computed(() => this._elementRef.nativeElement),\n disabled: this.disabled,\n searchTerm: this.searchTerm,\n parent: computed(() => this.parent?._pattern),\n submenu: computed(() => this.submenu()?._pattern),\n });\n\n constructor() {\n effect(() => this.submenu()?.parent.set(this));\n }\n\n /** Opens the submenu focusing on the first menu item. */\n open() {\n this._pattern.open({first: true});\n }\n\n /** Closes the submenu. */\n close() {\n this._pattern.close();\n }\n}\n\n/**\n * Defers the rendering of the menu content.\n *\n * This structural directive should be applied to an `ng-template` within a `ngMenu`\n * or `ngMenuBar` to lazily render its content only when the menu is opened.\n *\n * ```html\n * <div ngMenu #myMenu=\"ngMenu\">\n * <ng-template ngMenuContent>\n * <div ngMenuItem>Lazy Item 1</div>\n * <div ngMenuItem>Lazy Item 2</div>\n * </ng-template>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: 'ng-template[ngMenuContent]',\n exportAs: 'ngMenuContent',\n hostDirectives: [DeferredContent],\n})\nexport class MenuContent {}\n"],"names":["MenuTrigger","_elementRef","inject","ElementRef","element","nativeElement","textDirection","Directionality","valueSignal","menu","input","undefined","expanded","computed","_pattern","hasPopup","disabled","transform","booleanAttribute","softDisabled","MenuTriggerPattern","constructor","effect","parent","set","open","first","close","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","host","listeners","properties","exportAs","ngImport","decorators","args","Menu","_deferredContentAware","DeferredContentAware","optional","_allItems","contentChildren","MenuItem","descendants","_items","filter","i","ngDevMode","debugName","id","_IdGenerator","getId","wrap","typeaheadDelay","signal","_itemPatterns","map","visible","tabIndex","onSelect","output","expansionDelay","MenuPattern","items","multi","focusMode","orientation","selectionMode","activeItem","value","emit","afterRenderEffect","MenuBar","contentVisible","hasBeenFocused","untracked","listBehavior","goto","hasBeenHovered","length","setDefaultState","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","hostDirectives","directive","i1","ctorParameters","propDecorators","ContentChildren","forwardRef","Input","alias","required","Output","values","model","MenuBarPattern","searchTerm","_menu","_menuBar","submenu","active","MenuItemPattern","outputs","attributes","MenuContent","DeferredContent"],"mappings":"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"}
@@ -941,6 +941,7 @@ class MenuPattern {
941
941
  listBehavior;
942
942
  isFocused = signal(false);
943
943
  hasBeenFocused = signal(false);
944
+ hasBeenHovered = signal(false);
944
945
  _openTimeout;
945
946
  _closeTimeout;
946
947
  tabIndex = () => this.listBehavior.tabIndex();
@@ -1001,6 +1002,7 @@ class MenuPattern {
1001
1002
  if (!this.visible()) {
1002
1003
  return;
1003
1004
  }
1005
+ this.hasBeenHovered.set(true);
1004
1006
  const item = this.inputs.items().find(i => i.element()?.contains(event.target));
1005
1007
  if (!item) {
1006
1008
  return;
@@ -2215,7 +2217,7 @@ class DeferredContentAware {
2215
2217
  }] : []));
2216
2218
  static ɵfac = i0.ɵɵngDeclareFactory({
2217
2219
  minVersion: "12.0.0",
2218
- version: "20.2.0-next.2",
2220
+ version: "21.0.0",
2219
2221
  ngImport: i0,
2220
2222
  type: DeferredContentAware,
2221
2223
  deps: [],
@@ -2223,7 +2225,7 @@ class DeferredContentAware {
2223
2225
  });
2224
2226
  static ɵdir = i0.ɵɵngDeclareDirective({
2225
2227
  minVersion: "17.1.0",
2226
- version: "20.2.0-next.2",
2228
+ version: "21.0.0",
2227
2229
  type: DeferredContentAware,
2228
2230
  isStandalone: true,
2229
2231
  inputs: {
@@ -2243,12 +2245,25 @@ class DeferredContentAware {
2243
2245
  }
2244
2246
  i0.ɵɵngDeclareClassMetadata({
2245
2247
  minVersion: "12.0.0",
2246
- version: "20.2.0-next.2",
2248
+ version: "21.0.0",
2247
2249
  ngImport: i0,
2248
2250
  type: DeferredContentAware,
2249
2251
  decorators: [{
2250
2252
  type: Directive
2251
- }]
2253
+ }],
2254
+ propDecorators: {
2255
+ preserveContent: [{
2256
+ type: i0.Input,
2257
+ args: [{
2258
+ isSignal: true,
2259
+ alias: "preserveContent",
2260
+ required: false
2261
+ }]
2262
+ }, {
2263
+ type: i0.Output,
2264
+ args: ["preserveContentChange"]
2265
+ }]
2266
+ }
2252
2267
  });
2253
2268
  class DeferredContent {
2254
2269
  _deferredContentAware = inject(DeferredContentAware, {
@@ -2287,7 +2302,7 @@ class DeferredContent {
2287
2302
  }
2288
2303
  static ɵfac = i0.ɵɵngDeclareFactory({
2289
2304
  minVersion: "12.0.0",
2290
- version: "20.2.0-next.2",
2305
+ version: "21.0.0",
2291
2306
  ngImport: i0,
2292
2307
  type: DeferredContent,
2293
2308
  deps: [],
@@ -2295,7 +2310,7 @@ class DeferredContent {
2295
2310
  });
2296
2311
  static ɵdir = i0.ɵɵngDeclareDirective({
2297
2312
  minVersion: "14.0.0",
2298
- version: "20.2.0-next.2",
2313
+ version: "21.0.0",
2299
2314
  type: DeferredContent,
2300
2315
  isStandalone: true,
2301
2316
  ngImport: i0
@@ -2303,7 +2318,7 @@ class DeferredContent {
2303
2318
  }
2304
2319
  i0.ɵɵngDeclareClassMetadata({
2305
2320
  minVersion: "12.0.0",
2306
- version: "20.2.0-next.2",
2321
+ version: "21.0.0",
2307
2322
  ngImport: i0,
2308
2323
  type: DeferredContent,
2309
2324
  decorators: [{