@@ -11,7 +11,6 @@ import {
1111 ChangeDetectorRef ,
1212 Directive ,
1313 inject ,
14- Injectable ,
1514 Input ,
1615 OnDestroy ,
1716} from '@angular/core' ;
@@ -27,6 +26,7 @@ import {merge, partition} from 'rxjs';
2726import { skip , takeUntil , skipWhile } from 'rxjs/operators' ;
2827import { MENU_STACK , MenuStack } from './menu-stack' ;
2928import { CdkMenuTriggerBase , MENU_TRIGGER } from './menu-trigger-base' ;
29+ import { MenuTracker } from './menu-tracker' ;
3030
3131/** The preferred menu positions for the context menu. */
3232const CONTEXT_MENU_POSITIONS = STANDARD_DROPDOWN_BELOW_POSITIONS . map ( position => {
@@ -37,24 +37,6 @@ const CONTEXT_MENU_POSITIONS = STANDARD_DROPDOWN_BELOW_POSITIONS.map(position =>
3737 return { ...position , offsetX, offsetY} ;
3838} ) ;
3939
40- /** Tracks the last open context menu trigger across the entire application. */
41- @Injectable ( { providedIn : 'root' } )
42- export class ContextMenuTracker {
43- /** The last open context menu trigger. */
44- private static _openContextMenuTrigger ?: CdkContextMenuTrigger ;
45-
46- /**
47- * Close the previous open context menu and set the given one as being open.
48- * @param trigger The trigger for the currently open Context Menu.
49- */
50- update ( trigger : CdkContextMenuTrigger ) {
51- if ( ContextMenuTracker . _openContextMenuTrigger !== trigger ) {
52- ContextMenuTracker . _openContextMenuTrigger ?. close ( ) ;
53- ContextMenuTracker . _openContextMenuTrigger = trigger ;
54- }
55- }
56- }
57-
5840/** The coordinates where the context menu should open. */
5941export type ContextMenuCoordinates = { x : number ; y : number } ;
6042
@@ -87,8 +69,8 @@ export class CdkContextMenuTrigger extends CdkMenuTriggerBase implements OnDestr
8769 /** The directionality of the page. */
8870 private readonly _directionality = inject ( Directionality , { optional : true } ) ;
8971
90- /** The app's context menu tracking registry */
91- private readonly _contextMenuTracker = inject ( ContextMenuTracker ) ;
72+ /** The app's menu tracking registry */
73+ private readonly _menuTracker = inject ( MenuTracker ) ;
9274
9375 private readonly _changeDetectorRef = inject ( ChangeDetectorRef ) ;
9476
@@ -128,7 +110,7 @@ export class CdkContextMenuTrigger extends CdkMenuTriggerBase implements OnDestr
128110 // resulting in multiple stacked context menus being displayed.
129111 event . stopPropagation ( ) ;
130112
131- this . _contextMenuTracker . update ( this ) ;
113+ this . _menuTracker . update ( this ) ;
132114 this . _open ( event , { x : event . clientX , y : event . clientY } ) ;
133115
134116 // A context menu can be triggered via a mouse right click or a keyboard shortcut.
0 commit comments