From 6a0e6ba51060a3bd54e2790d2e41d5db8acec9d6 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 2 May 2022 22:32:47 +0200 Subject: [PATCH] fix(material/menu): add constructor overloads for non-deprecated signatures (#24860) In #24116 I explored using constructor overload for deprecations, but I forgot to add an overload for the non-deprecated signatures. Fixes #24740. (cherry picked from commit 08851de2044c5485d7831e15fa87fa033c3d79c6) --- src/material/menu/menu-content.ts | 10 ++++++++++ src/material/menu/menu-item.ts | 10 +++++++++- src/material/menu/menu-trigger.ts | 12 ++++++++++++ src/material/menu/menu.ts | 18 ++++++++++++++++++ tools/public_api_guard/material/menu.md | 7 ++++++- 5 files changed, 55 insertions(+), 2 deletions(-) diff --git a/src/material/menu/menu-content.ts b/src/material/menu/menu-content.ts index d3f2f9753002..f30ffbbf12f7 100644 --- a/src/material/menu/menu-content.ts +++ b/src/material/menu/menu-content.ts @@ -37,6 +37,16 @@ export abstract class _MatMenuContentBase implements OnDestroy { /** Emits when the menu content has been attached. */ readonly _attached = new Subject(); + constructor( + template: TemplateRef, + componentFactoryResolver: ComponentFactoryResolver, + appRef: ApplicationRef, + injector: Injector, + viewContainerRef: ViewContainerRef, + document: any, + changeDetectorRef: ChangeDetectorRef, + ); + /** * @deprecated `changeDetectorRef` is now a required parameter. * @breaking-change 9.0.0 diff --git a/src/material/menu/menu-item.ts b/src/material/menu/menu-item.ts index d9e903b7aa81..1a0fbc2a1391 100644 --- a/src/material/menu/menu-item.ts +++ b/src/material/menu/menu-item.ts @@ -75,8 +75,16 @@ export class MatMenuItem /** Whether the menu item acts as a trigger for a sub-menu. */ _triggersSubmenu: boolean = false; + constructor( + elementRef: ElementRef, + document: any, + focusMonitor: FocusMonitor, + parentMenu: MatMenuPanel | undefined, + changeDetectorRef: ChangeDetectorRef, + ); + /** - * @deprecated `_document`, `changeDetectorRef` and `focusMonitor` to become required. + * @deprecated `document`, `changeDetectorRef` and `focusMonitor` to become required. * @breaking-change 12.0.0 */ constructor( diff --git a/src/material/menu/menu-trigger.ts b/src/material/menu/menu-trigger.ts index ff1b4c208f20..3f00a7fa7b86 100644 --- a/src/material/menu/menu-trigger.ts +++ b/src/material/menu/menu-trigger.ts @@ -186,6 +186,18 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy // tslint:disable-next-line:no-output-on-prefix @Output() readonly onMenuClose: EventEmitter = this.menuClosed; + constructor( + overlay: Overlay, + element: ElementRef, + viewContainerRef: ViewContainerRef, + scrollStrategy: any, + parentMenu: MatMenuPanel, + menuItemInstance: MatMenuItem, + dir: Directionality, + focusMonitor: FocusMonitor, + ngZone: NgZone, + ); + /** * @deprecated `focusMonitor` will become a required parameter. * @breaking-change 8.0.0 diff --git a/src/material/menu/menu.ts b/src/material/menu/menu.ts index fcf0d2fa54d5..55a7bd333687 100644 --- a/src/material/menu/menu.ts +++ b/src/material/menu/menu.ts @@ -269,6 +269,24 @@ export class _MatMenuBase readonly panelId = `mat-menu-panel-${menuPanelUid++}`; + constructor( + elementRef: ElementRef, + ngZone: NgZone, + defaultOptions: MatMenuDefaultOptions, + changeDetectorRef: ChangeDetectorRef, + ); + + /** + * @deprecated `_changeDetectorRef` to become a required parameter. + * @breaking-change 15.0.0 + */ + constructor( + elementRef: ElementRef, + ngZone: NgZone, + defaultOptions: MatMenuDefaultOptions, + changeDetectorRef?: ChangeDetectorRef, + ); + constructor( private _elementRef: ElementRef, private _ngZone: NgZone, diff --git a/tools/public_api_guard/material/menu.md b/tools/public_api_guard/material/menu.md index 02fbe531cfd3..647029be2d87 100644 --- a/tools/public_api_guard/material/menu.md +++ b/tools/public_api_guard/material/menu.md @@ -91,7 +91,9 @@ export const matMenuAnimations: { // @public export class _MatMenuBase implements AfterContentInit, MatMenuPanel, OnInit, OnDestroy { - constructor(_elementRef: ElementRef, _ngZone: NgZone, _defaultOptions: MatMenuDefaultOptions, _changeDetectorRef?: ChangeDetectorRef | undefined); + constructor(elementRef: ElementRef, ngZone: NgZone, defaultOptions: MatMenuDefaultOptions, changeDetectorRef: ChangeDetectorRef); + // @deprecated + constructor(elementRef: ElementRef, ngZone: NgZone, defaultOptions: MatMenuDefaultOptions, changeDetectorRef?: ChangeDetectorRef); // (undocumented) addItem(_item: MatMenuItem): void; _allItems: QueryList; @@ -169,6 +171,7 @@ export class MatMenuContent extends _MatMenuContentBase { // @public (undocumented) export abstract class _MatMenuContentBase implements OnDestroy { + constructor(template: TemplateRef, componentFactoryResolver: ComponentFactoryResolver, appRef: ApplicationRef, injector: Injector, viewContainerRef: ViewContainerRef, document: any, changeDetectorRef: ChangeDetectorRef); // @deprecated constructor(template: TemplateRef, componentFactoryResolver: ComponentFactoryResolver, appRef: ApplicationRef, injector: Injector, viewContainerRef: ViewContainerRef, document: any, changeDetectorRef?: ChangeDetectorRef); attach(context?: any): void; @@ -194,6 +197,7 @@ export interface MatMenuDefaultOptions { // @public export class MatMenuItem extends _MatMenuItemBase implements FocusableOption, CanDisable, CanDisableRipple, AfterViewInit, OnDestroy { + constructor(elementRef: ElementRef, document: any, focusMonitor: FocusMonitor, parentMenu: MatMenuPanel | undefined, changeDetectorRef: ChangeDetectorRef); // @deprecated constructor(elementRef: ElementRef, document?: any, focusMonitor?: FocusMonitor, parentMenu?: MatMenuPanel, changeDetectorRef?: ChangeDetectorRef); _checkDisabled(event: Event): void; @@ -283,6 +287,7 @@ export class MatMenuTrigger extends _MatMenuTriggerBase { // @public (undocumented) export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy { + constructor(overlay: Overlay, element: ElementRef, viewContainerRef: ViewContainerRef, scrollStrategy: any, parentMenu: MatMenuPanel, menuItemInstance: MatMenuItem, dir: Directionality, focusMonitor: FocusMonitor, ngZone: NgZone); // @deprecated constructor(overlay: Overlay, element: ElementRef, viewContainerRef: ViewContainerRef, scrollStrategy: any, parentMenu: MatMenuPanel, menuItemInstance: MatMenuItem, dir: Directionality, focusMonitor?: FocusMonitor | null); // @deprecated