Skip to content

Commit 633207d

Browse files
committed
refactor(material/menu): move trigger logic into base class
Moves most of the menu trigger logic into a base class so it can be reused for the context menu.
1 parent 4be8722 commit 633207d

File tree

6 files changed

+535
-440
lines changed

6 files changed

+535
-440
lines changed

goldens/material/menu/index.api.md

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
import { AfterContentInit } from '@angular/core';
88
import { AfterViewInit } from '@angular/core';
99
import { Direction } from '@angular/cdk/bidi';
10+
import { ElementRef } from '@angular/core';
1011
import { EventEmitter } from '@angular/core';
12+
import { FlexibleConnectedPositionStrategyOrigin } from '@angular/cdk/overlay';
1113
import { FocusableOption } from '@angular/cdk/a11y';
1214
import { FocusOrigin } from '@angular/cdk/a11y';
1315
import * as i0 from '@angular/core';
@@ -18,7 +20,9 @@ import { InjectionToken } from '@angular/core';
1820
import { Observable } from 'rxjs';
1921
import { OnDestroy } from '@angular/core';
2022
import { OnInit } from '@angular/core';
23+
import { OverlayRef } from '@angular/cdk/overlay';
2124
import { QueryList } from '@angular/core';
25+
import * as rxjs from 'rxjs';
2226
import { ScrollStrategy } from '@angular/cdk/overlay';
2327
import { Subject } from 'rxjs';
2428
import { TemplateRef } from '@angular/core';
@@ -190,7 +194,7 @@ export class MatMenuModule {
190194
// (undocumented)
191195
static ɵinj: i0.ɵɵInjectorDeclaration<MatMenuModule>;
192196
// (undocumented)
193-
static ɵmod: i0.ɵɵNgModuleDeclaration<MatMenuModule, never, [typeof MatRippleModule, typeof MatCommonModule, typeof i2.OverlayModule, typeof MatMenu, typeof MatMenuItem, typeof MatMenuContent, typeof MatMenuTrigger], [typeof i5.CdkScrollableModule, typeof MatMenu, typeof MatCommonModule, typeof MatMenuItem, typeof MatMenuContent, typeof MatMenuTrigger]>;
197+
static ɵmod: i0.ɵɵNgModuleDeclaration<MatMenuModule, never, [typeof MatRippleModule, typeof MatCommonModule, typeof i2.OverlayModule, typeof MatMenu, typeof MatMenuItem, typeof MatMenuContent, typeof MatMenuTrigger, typeof MatContextMenuTrigger], [typeof i5.CdkScrollableModule, typeof MatMenu, typeof MatCommonModule, typeof MatMenuItem, typeof MatMenuContent, typeof MatMenuTrigger, typeof MatContextMenuTrigger]>;
194198
}
195199

196200
// @public
@@ -234,22 +238,23 @@ export interface MatMenuPanel<T = any> {
234238
}
235239

236240
// @public
237-
export class MatMenuTrigger implements AfterContentInit, OnDestroy {
241+
export class MatMenuTrigger extends MatMenuTriggerBase implements AfterContentInit, OnDestroy {
238242
constructor(...args: unknown[]);
239243
closeMenu(): void;
240244
// @deprecated (undocumented)
241245
get _deprecatedMatMenuTriggerFor(): MatMenuPanel | null;
242246
set _deprecatedMatMenuTriggerFor(v: MatMenuPanel | null);
243-
get dir(): Direction;
244-
focus(origin?: FocusOrigin, options?: FocusOptions): void;
247+
// (undocumented)
248+
protected _getOutsideClickStream(overlayRef: OverlayRef): rxjs.Observable<MouseEvent>;
249+
// (undocumented)
250+
protected _getOverlayOrigin(): i0.ElementRef<HTMLElement>;
245251
_handleClick(event: MouseEvent): void;
246252
_handleKeydown(event: KeyboardEvent): void;
247253
_handleMousedown(event: MouseEvent): void;
248254
get menu(): MatMenuPanel | null;
249255
set menu(menu: MatMenuPanel | null);
250256
readonly menuClosed: EventEmitter<void>;
251257
menuData: any;
252-
get menuOpen(): boolean;
253258
readonly menuOpened: EventEmitter<void>;
254259
// (undocumented)
255260
ngAfterContentInit(): void;
@@ -259,8 +264,6 @@ export class MatMenuTrigger implements AfterContentInit, OnDestroy {
259264
readonly onMenuClose: EventEmitter<void>;
260265
// @deprecated
261266
readonly onMenuOpen: EventEmitter<void>;
262-
// (undocumented)
263-
_openedBy: Exclude<FocusOrigin, 'program' | null> | undefined;
264267
openMenu(): void;
265268
restoreFocus: boolean;
266269
toggleMenu(): void;

src/material/menu/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ ng_project(
7676
"menu-panel.ts",
7777
"menu-positions.ts",
7878
"menu-trigger.ts",
79+
"menu-trigger-base.ts",
7980
"module.ts",
8081
"public-api.ts",
8182
],

0 commit comments

Comments
 (0)