@@ -11,7 +11,6 @@ import {
11
11
ChangeDetectorRef ,
12
12
Directive ,
13
13
inject ,
14
- Injectable ,
15
14
Injector ,
16
15
Input ,
17
16
OnDestroy ,
@@ -28,7 +27,7 @@ import {_getEventTarget} from '../platform';
28
27
import { merge , partition } from 'rxjs' ;
29
28
import { skip , takeUntil , skipWhile } from 'rxjs/operators' ;
30
29
import { MENU_STACK , MenuStack } from './menu-stack' ;
31
- import { CdkMenuTriggerBase , MENU_TRIGGER } from './menu-trigger-base' ;
30
+ import { CdkMenuTriggerBase , MENU_TRIGGER , MenuTracker } from './menu-trigger-base' ;
32
31
33
32
/** The preferred menu positions for the context menu. */
34
33
const CONTEXT_MENU_POSITIONS = STANDARD_DROPDOWN_BELOW_POSITIONS . map ( position => {
@@ -39,23 +38,11 @@ const CONTEXT_MENU_POSITIONS = STANDARD_DROPDOWN_BELOW_POSITIONS.map(position =>
39
38
return { ...position , offsetX, offsetY} ;
40
39
} ) ;
41
40
42
- /** Tracks the last open context menu trigger across the entire application. */
43
- @Injectable ( { providedIn : 'root' } )
44
- export class ContextMenuTracker {
45
- /** The last open context menu trigger. */
46
- private static _openContextMenuTrigger ?: CdkContextMenuTrigger ;
47
-
48
- /**
49
- * Close the previous open context menu and set the given one as being open.
50
- * @param trigger The trigger for the currently open Context Menu.
51
- */
52
- update ( trigger : CdkContextMenuTrigger ) {
53
- if ( ContextMenuTracker . _openContextMenuTrigger !== trigger ) {
54
- ContextMenuTracker . _openContextMenuTrigger ?. close ( ) ;
55
- ContextMenuTracker . _openContextMenuTrigger = trigger ;
56
- }
57
- }
58
- }
41
+ /**
42
+ * @deprecated Will be removed. Use `MenuTracker` instead.
43
+ * @breaking -change 22.0.0
44
+ */
45
+ export { MenuTracker as ContextMenuTracker } ;
59
46
60
47
/** The coordinates where the context menu should open. */
61
48
export type ContextMenuCoordinates = { x : number ; y : number } ;
@@ -85,7 +72,10 @@ export type ContextMenuCoordinates = {x: number; y: number};
85
72
export class CdkContextMenuTrigger extends CdkMenuTriggerBase implements OnDestroy {
86
73
private readonly _injector = inject ( Injector ) ;
87
74
private readonly _directionality = inject ( Directionality , { optional : true } ) ;
88
- private readonly _contextMenuTracker = inject ( ContextMenuTracker ) ;
75
+
76
+ /** The app's menu tracking registry */
77
+ private readonly _menuTracker = inject ( MenuTracker ) ;
78
+
89
79
private readonly _changeDetectorRef = inject ( ChangeDetectorRef ) ;
90
80
91
81
/** Whether the context menu is disabled. */
@@ -124,7 +114,7 @@ export class CdkContextMenuTrigger extends CdkMenuTriggerBase implements OnDestr
124
114
// resulting in multiple stacked context menus being displayed.
125
115
event . stopPropagation ( ) ;
126
116
127
- this . _contextMenuTracker . update ( this ) ;
117
+ this . _menuTracker . update ( this ) ;
128
118
this . _open ( event , { x : event . clientX , y : event . clientY } ) ;
129
119
130
120
// A context menu can be triggered via a mouse right click or a keyboard shortcut.
0 commit comments