Skip to content

Commit 6f603a9

Browse files
committed
refactor(cdk/menu): switch to tree shakeable overlay APIs
Reworks the module to use the new tree-shakeable APIs for creating overlays.
1 parent c1dd952 commit 6f603a9

File tree

3 files changed

+21
-21
lines changed

3 files changed

+21
-21
lines changed

src/cdk/menu/context-menu-trigger.ts

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@ import {
1212
Directive,
1313
inject,
1414
Injectable,
15+
Injector,
1516
Input,
1617
OnDestroy,
1718
} from '@angular/core';
1819
import {Directionality} from '../bidi';
1920
import {
21+
createFlexibleConnectedPositionStrategy,
22+
createOverlayRef,
2023
FlexibleConnectedPositionStrategy,
21-
Overlay,
2224
OverlayConfig,
2325
STANDARD_DROPDOWN_BELOW_POSITIONS,
2426
} from '../overlay';
@@ -81,15 +83,9 @@ export type ContextMenuCoordinates = {x: number; y: number};
8183
],
8284
})
8385
export class CdkContextMenuTrigger extends CdkMenuTriggerBase implements OnDestroy {
84-
/** The CDK overlay service. */
85-
private readonly _overlay = inject(Overlay);
86-
87-
/** The directionality of the page. */
86+
private readonly _injector = inject(Injector);
8887
private readonly _directionality = inject(Directionality, {optional: true});
89-
90-
/** The app's context menu tracking registry */
9188
private readonly _contextMenuTracker = inject(ContextMenuTracker);
92-
9389
private readonly _changeDetectorRef = inject(ChangeDetectorRef);
9490

9591
/** Whether the context menu is disabled. */
@@ -161,9 +157,7 @@ export class CdkContextMenuTrigger extends CdkMenuTriggerBase implements OnDestr
161157
private _getOverlayPositionStrategy(
162158
coordinates: ContextMenuCoordinates,
163159
): FlexibleConnectedPositionStrategy {
164-
return this._overlay
165-
.position()
166-
.flexibleConnectedTo(coordinates)
160+
return createFlexibleConnectedPositionStrategy(this._injector, coordinates)
167161
.withLockedPosition()
168162
.withGrowAfterOpen()
169163
.withPositions(this.menuPosition ?? CONTEXT_MENU_POSITIONS);
@@ -244,7 +238,7 @@ export class CdkContextMenuTrigger extends CdkMenuTriggerBase implements OnDestr
244238
).setOrigin(coordinates);
245239
this.overlayRef.updatePosition();
246240
} else {
247-
this.overlayRef = this._overlay.create(this._getOverlayConfig(coordinates));
241+
this.overlayRef = createOverlayRef(this._injector, this._getOverlayConfig(coordinates));
248242
}
249243

250244
this.overlayRef.attach(this.getMenuContentPortal());

src/cdk/menu/menu-trigger-base.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@ import {
1818
} from '@angular/core';
1919
import {Menu} from './menu-interface';
2020
import {MENU_STACK, MenuStack} from './menu-stack';
21-
import {ConnectedPosition, Overlay, OverlayRef, ScrollStrategy} from '../overlay';
21+
import {
22+
ConnectedPosition,
23+
createRepositionScrollStrategy,
24+
OverlayRef,
25+
ScrollStrategy,
26+
} from '../overlay';
2227
import {TemplatePortal} from '../portal';
2328
import {merge, Subject} from 'rxjs';
2429

@@ -31,8 +36,8 @@ export const MENU_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(
3136
{
3237
providedIn: 'root',
3338
factory: () => {
34-
const overlay = inject(Overlay);
35-
return () => overlay.scrollStrategies.reposition();
39+
const injector = inject(Injector);
40+
return () => createRepositionScrollStrategy(injector);
3641
},
3742
},
3843
);

src/cdk/menu/menu-trigger.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
Directive,
1212
ElementRef,
1313
inject,
14+
Injector,
1415
NgZone,
1516
OnChanges,
1617
OnDestroy,
@@ -21,8 +22,9 @@ import {InputModalityDetector} from '../a11y';
2122
import {Directionality} from '../bidi';
2223
import {
2324
ConnectedPosition,
25+
createFlexibleConnectedPositionStrategy,
26+
createOverlayRef,
2427
FlexibleConnectedPositionStrategy,
25-
Overlay,
2628
OverlayConfig,
2729
STANDARD_DROPDOWN_ADJACENT_POSITIONS,
2830
STANDARD_DROPDOWN_BELOW_POSITIONS,
@@ -76,12 +78,12 @@ import {eventDispatchesNativeClick} from './event-detection';
7678
})
7779
export class CdkMenuTrigger extends CdkMenuTriggerBase implements OnChanges, OnDestroy {
7880
private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef);
79-
private readonly _overlay = inject(Overlay);
8081
private readonly _ngZone = inject(NgZone);
8182
private readonly _changeDetectorRef = inject(ChangeDetectorRef);
8283
private readonly _inputModalityDetector = inject(InputModalityDetector);
8384
private readonly _directionality = inject(Directionality, {optional: true});
8485
private readonly _renderer = inject(Renderer2);
86+
private readonly _injector = inject(Injector);
8587
private _cleanupMouseenter: () => void;
8688

8789
/** The parent menu this trigger belongs to. */
@@ -110,7 +112,8 @@ export class CdkMenuTrigger extends CdkMenuTriggerBase implements OnChanges, OnD
110112
if (!this.isOpen() && this.menuTemplateRef != null) {
111113
this.opened.next();
112114

113-
this.overlayRef = this.overlayRef || this._overlay.create(this._getOverlayConfig());
115+
this.overlayRef =
116+
this.overlayRef || createOverlayRef(this._injector, this._getOverlayConfig());
114117
this.overlayRef.attach(this.getMenuContentPortal());
115118
this._changeDetectorRef.markForCheck();
116119
this._subscribeToOutsideClicks();
@@ -272,9 +275,7 @@ export class CdkMenuTrigger extends CdkMenuTriggerBase implements OnChanges, OnD
272275

273276
/** Build the position strategy for the overlay which specifies where to place the menu. */
274277
private _getOverlayPositionStrategy(): FlexibleConnectedPositionStrategy {
275-
return this._overlay
276-
.position()
277-
.flexibleConnectedTo(this._elementRef)
278+
return createFlexibleConnectedPositionStrategy(this._injector, this._elementRef)
278279
.withLockedPosition()
279280
.withFlexibleDimensions(false)
280281
.withPositions(this._getOverlayPositions());

0 commit comments

Comments
 (0)