@@ -11,7 +11,6 @@ import {
11
11
ChangeDetectorRef ,
12
12
Directive ,
13
13
inject ,
14
- Injectable ,
15
14
Input ,
16
15
OnDestroy ,
17
16
} from '@angular/core' ;
@@ -26,7 +25,7 @@ import {_getEventTarget} from '../platform';
26
25
import { merge , partition } from 'rxjs' ;
27
26
import { skip , takeUntil , skipWhile } from 'rxjs/operators' ;
28
27
import { MENU_STACK , MenuStack } from './menu-stack' ;
29
- import { CdkMenuTriggerBase , MENU_TRIGGER } from './menu-trigger-base' ;
28
+ import { CdkMenuTriggerBase , MENU_TRIGGER , MenuTracker } from './menu-trigger-base' ;
30
29
31
30
/** The preferred menu positions for the context menu. */
32
31
const CONTEXT_MENU_POSITIONS = STANDARD_DROPDOWN_BELOW_POSITIONS . map ( position => {
@@ -37,24 +36,6 @@ const CONTEXT_MENU_POSITIONS = STANDARD_DROPDOWN_BELOW_POSITIONS.map(position =>
37
36
return { ...position , offsetX, offsetY} ;
38
37
} ) ;
39
38
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
-
58
39
/** The coordinates where the context menu should open. */
59
40
export type ContextMenuCoordinates = { x : number ; y : number } ;
60
41
@@ -87,8 +68,8 @@ export class CdkContextMenuTrigger extends CdkMenuTriggerBase implements OnDestr
87
68
/** The directionality of the page. */
88
69
private readonly _directionality = inject ( Directionality , { optional : true } ) ;
89
70
90
- /** The app's context menu tracking registry */
91
- private readonly _contextMenuTracker = inject ( ContextMenuTracker ) ;
71
+ /** The app's menu tracking registry */
72
+ private readonly _menuTracker = inject ( MenuTracker ) ;
92
73
93
74
private readonly _changeDetectorRef = inject ( ChangeDetectorRef ) ;
94
75
@@ -128,7 +109,7 @@ export class CdkContextMenuTrigger extends CdkMenuTriggerBase implements OnDestr
128
109
// resulting in multiple stacked context menus being displayed.
129
110
event . stopPropagation ( ) ;
130
111
131
- this . _contextMenuTracker . update ( this ) ;
112
+ this . _menuTracker . update ( this ) ;
132
113
this . _open ( event , { x : event . clientX , y : event . clientY } ) ;
133
114
134
115
// A context menu can be triggered via a mouse right click or a keyboard shortcut.
0 commit comments