From 6765d11a20ee75c5e1d32f4a149f3d422dbbc66d Mon Sep 17 00:00:00 2001 From: Cheng-Hsuan Tsai Date: Sun, 3 May 2026 01:32:20 +0000 Subject: [PATCH] fix(material/menu): missing panelClass getter --- goldens/material/menu/index.api.md | 1 + src/material/menu/menu.spec.ts | 9 +++++++++ src/material/menu/menu.ts | 5 ++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/goldens/material/menu/index.api.md b/goldens/material/menu/index.api.md index 9cbce4760179..0a6dd25c09c3 100644 --- a/goldens/material/menu/index.api.md +++ b/goldens/material/menu/index.api.md @@ -120,6 +120,7 @@ export class MatMenu implements AfterContentInit, MatMenuPanel, OnI overlapTrigger: boolean; overlayPanelClass: string | string[]; _panelAnimationState: 'void' | 'enter'; + get panelClass(): string; set panelClass(classes: string); // (undocumented) readonly panelId: string; diff --git a/src/material/menu/menu.spec.ts b/src/material/menu/menu.spec.ts index 159fa1e0c10d..cb9401540919 100644 --- a/src/material/menu/menu.spec.ts +++ b/src/material/menu/menu.spec.ts @@ -568,6 +568,15 @@ describe('MatMenu', () => { expect(panel.classList).toContain('custom-two'); }); + it('should expose the configured classes via the getter', () => { + const fixture = TestBed.createComponent(SimpleMenu); + fixture.componentInstance.panelClass = 'custom-one custom-two'; + fixture.detectChanges(); + + expect(fixture.componentInstance.menu.panelClass).toBe('custom-one custom-two'); + expect(fixture.componentInstance.menu.classList).toBe('custom-one custom-two'); + }); + it('should set the "menu" role on the overlay panel', () => { const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); diff --git a/src/material/menu/menu.ts b/src/material/menu/menu.ts index 9368dc81c3aa..f04927647846 100644 --- a/src/material/menu/menu.ts +++ b/src/material/menu/menu.ts @@ -221,6 +221,9 @@ export class MatMenu implements AfterContentInit, MatMenuPanel, OnI * @param classes list of class names */ @Input('class') + get panelClass(): string { + return this._previousPanelClass; + } set panelClass(classes: string) { const previousPanelClass = this._previousPanelClass; const newClassList = {...this._classList}; @@ -243,7 +246,7 @@ export class MatMenu implements AfterContentInit, MatMenuPanel, OnI this._classList = newClassList; } - private _previousPanelClass!: string; + private _previousPanelClass: string = ''; /** * This method takes classes set on the host mat-menu element and applies them on the