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