Skip to content

Commit b2dd17a

Browse files
amcdnlmmalerba
authored andcommitted
fix(menu): make @output names consistent #6677 (#8053)
* fix(menu): make @output names consistent #6677 * chore(nit): pr feedback updates * chore(merge): fix bad merge
1 parent 9fa075e commit b2dd17a

File tree

5 files changed

+40
-22
lines changed

5 files changed

+40
-22
lines changed

src/lib/menu/menu-directive.ts

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,13 @@ export class MatMenu implements AfterContentInit, MatMenuPanel, OnDestroy {
142142
}
143143

144144
/** Event emitted when the menu is closed. */
145-
@Output() close = new EventEmitter<void | 'click' | 'keydown'>();
145+
@Output() closed = new EventEmitter<void | 'click' | 'keydown'>();
146+
147+
/**
148+
* Event emitted when the menu is closed.
149+
* @deprecated Switch to `closed` instead
150+
*/
151+
@Output() close = this.closed;
146152

147153
constructor(
148154
private _elementRef: ElementRef,
@@ -156,39 +162,39 @@ export class MatMenu implements AfterContentInit, MatMenuPanel, OnDestroy {
156162

157163
ngOnDestroy() {
158164
this._tabSubscription.unsubscribe();
159-
this.close.emit();
160-
this.close.complete();
165+
this.closed.emit();
166+
this.closed.complete();
161167
}
162168

163169
/** Stream that emits whenever the hovered menu item changes. */
164-
hover(): Observable<MatMenuItem> {
170+
_hovered(): Observable<MatMenuItem> {
165171
if (this.items) {
166172
return this.items.changes.pipe(
167173
startWith(this.items),
168-
switchMap(items => merge(...items.map(item => item.hover)))
174+
switchMap(items => merge(...items.map(item => item._hovered)))
169175
);
170176
}
171177

172178
return this._ngZone.onStable
173179
.asObservable()
174-
.pipe(first(), switchMap(() => this.hover()));
180+
.pipe(first(), switchMap(() => this._hovered()));
175181
}
176182

177183
/** Handle a keyboard event from the menu, delegating to the appropriate action. */
178184
_handleKeydown(event: KeyboardEvent) {
179185
switch (event.keyCode) {
180186
case ESCAPE:
181-
this.close.emit('keydown');
187+
this.closed.emit('keydown');
182188
event.stopPropagation();
183189
break;
184190
case LEFT_ARROW:
185191
if (this.parentMenu && this.direction === 'ltr') {
186-
this.close.emit('keydown');
192+
this.closed.emit('keydown');
187193
}
188194
break;
189195
case RIGHT_ARROW:
190196
if (this.parentMenu && this.direction === 'rtl') {
191-
this.close.emit('keydown');
197+
this.closed.emit('keydown');
192198
}
193199
break;
194200
default:

src/lib/menu/menu-item.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export class MatMenuItem extends _MatMenuItemMixinBase implements FocusableOptio
5151
OnDestroy {
5252

5353
/** Stream that emits when the menu item is hovered. */
54-
hover: Subject<MatMenuItem> = new Subject();
54+
_hovered: Subject<MatMenuItem> = new Subject();
5555

5656
/** Whether the menu item is highlighted. */
5757
_highlighted: boolean = false;
@@ -69,7 +69,7 @@ export class MatMenuItem extends _MatMenuItemMixinBase implements FocusableOptio
6969
}
7070

7171
ngOnDestroy() {
72-
this.hover.complete();
72+
this._hovered.complete();
7373
}
7474

7575
/** Used to set the `tabindex`. */
@@ -93,7 +93,7 @@ export class MatMenuItem extends _MatMenuItemMixinBase implements FocusableOptio
9393
/** Emits to the hover stream. */
9494
_emitHoverEvent() {
9595
if (!this.disabled) {
96-
this.hover.next(this);
96+
this._hovered.next(this);
9797
}
9898
}
9999

src/lib/menu/menu-trigger.ts

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,22 @@ export class MatMenuTrigger implements AfterContentInit, OnDestroy {
107107
@Input('matMenuTriggerFor') menu: MatMenuPanel;
108108

109109
/** Event emitted when the associated menu is opened. */
110-
@Output() onMenuOpen = new EventEmitter<void>();
110+
@Output() menuOpened = new EventEmitter<void>();
111+
112+
/**
113+
* Event emitted when the associated menu is opened.
114+
* @deprecated Switch to `menuOpened` instead
115+
*/
116+
@Output() onMenuOpen = this.menuOpened;
111117

112118
/** Event emitted when the associated menu is closed. */
113-
@Output() onMenuClose = new EventEmitter<void>();
119+
@Output() menuClosed = new EventEmitter<void>();
120+
121+
/**
122+
* Event emitted when the associated menu is closed.
123+
* @deprecated Switch to `menuClosed` instead
124+
*/
125+
@Output() onMenuClose = this.menuClosed;
114126

115127
constructor(private _overlay: Overlay,
116128
private _element: ElementRef,
@@ -133,13 +145,13 @@ export class MatMenuTrigger implements AfterContentInit, OnDestroy {
133145

134146
// If a click closed the menu, we should close the entire chain of nested menus.
135147
if (reason === 'click' && this._parentMenu) {
136-
this._parentMenu.close.emit(reason);
148+
this._parentMenu.closed.emit(reason);
137149
}
138150
});
139151

140152
if (this.triggersSubmenu()) {
141153
// Subscribe to changes in the hovered item in order to toggle the panel.
142-
this._hoverSubscription = this._parentMenu.hover()
154+
this._hoverSubscription = this._parentMenu._hovered()
143155
.pipe(filter(active => active === this._menuItemInstance))
144156
.subscribe(() => {
145157
this._openedByMouse = true;
@@ -273,7 +285,7 @@ export class MatMenuTrigger implements AfterContentInit, OnDestroy {
273285
// set state rather than toggle to support triggers sharing a menu
274286
private _setIsMenuOpen(isOpen: boolean): void {
275287
this._menuOpen = isOpen;
276-
this._menuOpen ? this.onMenuOpen.emit() : this.onMenuClose.emit();
288+
this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();
277289

278290
if (this.triggersSubmenu()) {
279291
this._menuItemInstance._highlighted = isOpen;
@@ -388,7 +400,7 @@ export class MatMenuTrigger implements AfterContentInit, OnDestroy {
388400
private _menuClosingActions() {
389401
const backdrop = this._overlayRef!.backdropClick();
390402
const parentClose = this._parentMenu ? this._parentMenu.close : observableOf();
391-
const hover = this._parentMenu ? this._parentMenu.hover().pipe(
403+
const hover = this._parentMenu ? this._parentMenu._hovered().pipe(
392404
filter(active => active !== this._menuItemInstance),
393405
filter(() => this._menuOpen)
394406
) : observableOf();

src/lib/menu/menu.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
class="mat-menu-panel"
44
[ngClass]="_classList"
55
(keydown)="_handleKeydown($event)"
6-
(click)="close.emit('click')"
6+
(click)="closed.emit('click')"
77
[@transformMenu]="_panelAnimationState"
88
(@transformMenu.done)="_onAnimationDone($event)"
99
tabindex="-1"

src/lib/menu/menu.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ describe('MatMenu', () => {
559559
const emitCallback = jasmine.createSpy('emit callback');
560560
const completeCallback = jasmine.createSpy('complete callback');
561561

562-
fixture.componentInstance.menu.close.subscribe(emitCallback, null, completeCallback);
562+
fixture.componentInstance.menu.closed.subscribe(emitCallback, null, completeCallback);
563563
fixture.destroy();
564564

565565
expect(emitCallback).toHaveBeenCalledWith(undefined);
@@ -625,7 +625,7 @@ describe('MatMenu', () => {
625625
fixture.detectChanges();
626626

627627
const spy = jasmine.createSpy('hover spy');
628-
const subscription = instance.rootMenu.hover().subscribe(spy);
628+
const subscription = instance.rootMenu._hovered().subscribe(spy);
629629
const menuItems = overlay.querySelectorAll('[mat-menu-item]');
630630

631631
dispatchMouseEvent(menuItems[0], 'mouseenter');
@@ -1112,7 +1112,7 @@ describe('MatMenu default overrides', () => {
11121112
@Component({
11131113
template: `
11141114
<button [matMenuTriggerFor]="menu" #triggerEl>Toggle menu</button>
1115-
<mat-menu class="custom-one custom-two" #menu="matMenu" (close)="closeCallback($event)">
1115+
<mat-menu class="custom-one custom-two" #menu="matMenu" (closed)="closeCallback($event)">
11161116
<button mat-menu-item> Item </button>
11171117
<button mat-menu-item disabled> Disabled </button>
11181118
<button mat-menu-item>

0 commit comments

Comments
 (0)