Skip to content

Commit b31ce13

Browse files
committed
feat(material/menu): switch implementation to use MDC
Switches the `material/menu` implementation to use MDC by default. Old implementation is still available under `material/legacy-menu`. BREAKING CHANGE: - DOM and CSS classes for `mat-menu` have changes. - Typescript API is largely the same but may have minor differences.
1 parent b863b14 commit b31ce13

File tree

88 files changed

+1341
-1161
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+1341
-1161
lines changed

.github/CODEOWNERS

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
/src/material/icon/** @andrewseguin
1818
/src/material/legacy-input/** @mmalerba
1919
/src/material/list/** @andrewseguin @crisbeto @devversion
20-
/src/material/menu/** @crisbeto
20+
/src/material/legacy-menu/** @crisbeto
2121
/src/material/paginator/** @andrewseguin
2222
/src/material/prebuilt-themes/** @andrewseguin
2323
/src/material/legacy-prebuilt-themes/** @andrewseguin
@@ -119,7 +119,7 @@
119119
/src/material/dialog/** @devversion
120120
/src/material/form-field/** @devversion @mmalerba
121121
/src/material-experimental/mdc-list/** @mmalerba @devversion
122-
/src/material-experimental/mdc-menu/** @crisbeto
122+
/src/material/menu/** @crisbeto
123123
/src/material/select/** @crisbeto
124124
/src/material-experimental/mdc-paginator/** @crisbeto
125125
/src/material-experimental/mdc-progress-spinner/** @andrewseguin

.ng-dev/commit-message.mts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ export const commitMessage: CommitMessageConfig = {
4848
'material/form-field',
4949
'material/input',
5050
'material-experimental/mdc-list',
51-
'material-experimental/mdc-menu',
5251
'material-experimental/mdc-paginator',
5352
'material/progress-bar',
5453
'material-experimental/mdc-progress-spinner',
@@ -87,6 +86,7 @@ export const commitMessage: CommitMessageConfig = {
8786
'material/legacy-input',
8887
'material/list',
8988
'material/menu',
89+
'material/legacy-menu',
9090
'material/paginator',
9191
'material/prebuilt-themes',
9292
'material/legacy-prebuilt-themes',

integration/size-test/material/menu/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ load("//integration/size-test:index.bzl", "size_test")
33
size_test(
44
name = "without-lazy-content",
55
file = "without-lazy-content.ts",
6-
deps = ["//src/material/menu"],
6+
deps = ["//src/material/legacy-menu"],
77
)

integration/size-test/material/menu/without-lazy-content.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {Component, NgModule} from '@angular/core';
2-
import {MatMenuModule} from '@angular/material/menu';
2+
import {MatLegacyMenuModule} from '@angular/material/legacy-menu';
33

44
/**
55
* Basic component using `MatMenu` and `MatMenuTrigger`. No lazy `MatMenuContent` is
@@ -14,7 +14,7 @@ import {MatMenuModule} from '@angular/material/menu';
1414
export class TestComponent {}
1515

1616
@NgModule({
17-
imports: [MatMenuModule],
17+
imports: [MatLegacyMenuModule],
1818
declarations: [TestComponent],
1919
bootstrap: [TestComponent],
2020
})

src/components-examples/material/dialog/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ ng_module(
1919
"//src/material/legacy-dialog",
2020
"//src/material/legacy-dialog/testing",
2121
"//src/material/legacy-input",
22-
"//src/material/menu",
22+
"//src/material/legacy-menu",
2323
"@npm//@angular/forms",
2424
"@npm//@angular/platform-browser",
2525
"@npm//@angular/platform-browser-dynamic",

src/components-examples/material/dialog/dialog-from-menu/dialog-from-menu-example.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {Component, ViewChild} from '@angular/core';
22
import {MatLegacyDialog} from '@angular/material/legacy-dialog';
3-
import {MatMenuTrigger} from '@angular/material/menu';
3+
import {MatLegacyMenuTrigger} from '@angular/material/legacy-menu';
44
/**
55
* @title Dialog launched from a menu
66
*/
@@ -9,7 +9,7 @@ import {MatMenuTrigger} from '@angular/material/menu';
99
templateUrl: 'dialog-from-menu-example.html',
1010
})
1111
export class DialogFromMenuExample {
12-
@ViewChild('menuTrigger') menuTrigger: MatMenuTrigger;
12+
@ViewChild('menuTrigger') menuTrigger: MatLegacyMenuTrigger;
1313

1414
constructor(public dialog: MatLegacyDialog) {}
1515

src/components-examples/material/dialog/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {FormsModule} from '@angular/forms';
44
import {MatButtonModule} from '@angular/material/button';
55
import {MatLegacyDialogModule} from '@angular/material/legacy-dialog';
66
import {MatLegacyInputModule} from '@angular/material/legacy-input';
7-
import {MatMenuModule} from '@angular/material/menu';
7+
import {MatLegacyMenuModule} from '@angular/material/legacy-menu';
88
import {
99
DialogContentExample,
1010
DialogContentExampleDialog,
@@ -66,7 +66,7 @@ const EXAMPLES = [
6666
MatButtonModule,
6767
MatLegacyDialogModule,
6868
MatLegacyInputModule,
69-
MatMenuModule,
69+
MatLegacyMenuModule,
7070
FormsModule,
7171
],
7272
declarations: EXAMPLES,

src/components-examples/material/menu/BUILD.bazel

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ ng_module(
1818
"//src/cdk/testing/testbed",
1919
"//src/material/button",
2020
"//src/material/icon",
21-
"//src/material/menu",
22-
"//src/material/menu/testing",
21+
"//src/material/legacy-menu",
22+
"//src/material/legacy-menu/testing",
2323
"@npm//@angular/platform-browser",
2424
"@npm//@angular/platform-browser-dynamic",
2525
"@npm//@types/jasmine",
@@ -42,8 +42,8 @@ ng_test_library(
4242
":menu",
4343
"//src/cdk/testing",
4444
"//src/cdk/testing/testbed",
45-
"//src/material/menu",
46-
"//src/material/menu/testing",
45+
"//src/material/legacy-menu",
46+
"//src/material/legacy-menu/testing",
4747
"@npm//@angular/platform-browser",
4848
"@npm//@angular/platform-browser-dynamic",
4949
],

src/components-examples/material/menu/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {NgModule} from '@angular/core';
22
import {MatButtonModule} from '@angular/material/button';
33
import {MatIconModule} from '@angular/material/icon';
4-
import {MatMenuModule} from '@angular/material/menu';
4+
import {MatLegacyMenuModule} from '@angular/material/legacy-menu';
55
import {MenuIconsExample} from './menu-icons/menu-icons-example';
66
import {MenuOverviewExample} from './menu-overview/menu-overview-example';
77
import {MenuPositionExample} from './menu-position/menu-position-example';
@@ -25,7 +25,7 @@ const EXAMPLES = [
2525
];
2626

2727
@NgModule({
28-
imports: [MatButtonModule, MatIconModule, MatMenuModule],
28+
imports: [MatButtonModule, MatIconModule, MatLegacyMenuModule],
2929
declarations: EXAMPLES,
3030
exports: EXAMPLES,
3131
})

src/components-examples/material/menu/menu-harness/menu-harness-example.spec.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import {ComponentFixture, TestBed} from '@angular/core/testing';
22
import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed';
3-
import {MatMenuHarness} from '@angular/material/menu/testing';
3+
import {MatLegacyMenuHarness} from '@angular/material/legacy-menu/testing';
44
import {HarnessLoader} from '@angular/cdk/testing';
5-
import {MatMenuModule} from '@angular/material/menu';
5+
import {MatLegacyMenuModule} from '@angular/material/legacy-menu';
66
import {MenuHarnessExample} from './menu-harness-example';
77
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
88

@@ -12,7 +12,7 @@ describe('MenuHarnessExample', () => {
1212

1313
beforeEach(async () => {
1414
await TestBed.configureTestingModule({
15-
imports: [MatMenuModule, NoopAnimationsModule],
15+
imports: [MatLegacyMenuModule, NoopAnimationsModule],
1616
declarations: [MenuHarnessExample],
1717
}).compileComponents();
1818
fixture = TestBed.createComponent(MenuHarnessExample);
@@ -21,24 +21,24 @@ describe('MenuHarnessExample', () => {
2121
});
2222

2323
it('should load all menu harnesses', async () => {
24-
const menues = await loader.getAllHarnesses(MatMenuHarness);
24+
const menues = await loader.getAllHarnesses(MatLegacyMenuHarness);
2525
expect(menues.length).toBe(2);
2626
});
2727

2828
it('should get disabled state', async () => {
29-
const [enabledMenu, disabledMenu] = await loader.getAllHarnesses(MatMenuHarness);
29+
const [enabledMenu, disabledMenu] = await loader.getAllHarnesses(MatLegacyMenuHarness);
3030
expect(await enabledMenu.isDisabled()).toBe(false);
3131
expect(await disabledMenu.isDisabled()).toBe(true);
3232
});
3333

3434
it('should get menu text', async () => {
35-
const [firstMenu, secondMenu] = await loader.getAllHarnesses(MatMenuHarness);
35+
const [firstMenu, secondMenu] = await loader.getAllHarnesses(MatLegacyMenuHarness);
3636
expect(await firstMenu.getTriggerText()).toBe('Settings');
3737
expect(await secondMenu.getTriggerText()).toBe('Disabled menu');
3838
});
3939

4040
it('should open and close', async () => {
41-
const menu = await loader.getHarness(MatMenuHarness.with({triggerText: 'Settings'}));
41+
const menu = await loader.getHarness(MatLegacyMenuHarness.with({triggerText: 'Settings'}));
4242
expect(await menu.isOpen()).toBe(false);
4343
await menu.open();
4444
expect(await menu.isOpen()).toBe(true);
@@ -47,7 +47,7 @@ describe('MenuHarnessExample', () => {
4747
});
4848

4949
it('should get all items', async () => {
50-
const menu = await loader.getHarness(MatMenuHarness.with({triggerText: 'Settings'}));
50+
const menu = await loader.getHarness(MatLegacyMenuHarness.with({triggerText: 'Settings'}));
5151
await menu.open();
5252
expect((await menu.getItems()).length).toBe(2);
5353
});

src/dev-app/mdc-menu/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ ng_module(
1111
],
1212
deps = [
1313
"//src/material-experimental/mdc-button",
14-
"//src/material-experimental/mdc-menu",
1514
"//src/material/divider",
1615
"//src/material/icon",
16+
"//src/material/menu",
1717
"//src/material/toolbar",
1818
],
1919
)

src/dev-app/mdc-menu/mdc-menu-demo.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import {Component} from '@angular/core';
1010
import {CommonModule} from '@angular/common';
11-
import {MatMenuModule} from '@angular/material-experimental/mdc-menu';
11+
import {MatMenuModule} from '@angular/material/menu';
1212
import {MatToolbarModule} from '@angular/material/toolbar';
1313
import {MatIconModule} from '@angular/material/icon';
1414
import {MatDividerModule} from '@angular/material/divider';

src/dev-app/menu/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ ng_module(
1313
"//src/material/button",
1414
"//src/material/divider",
1515
"//src/material/icon",
16-
"//src/material/menu",
16+
"//src/material/legacy-menu",
1717
"//src/material/toolbar",
1818
],
1919
)

src/dev-app/menu/menu-demo.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {CommonModule} from '@angular/common';
1111
import {MatButtonModule} from '@angular/material/button';
1212
import {MatDividerModule} from '@angular/material/divider';
1313
import {MatIconModule} from '@angular/material/icon';
14-
import {MatMenuModule} from '@angular/material/menu';
14+
import {MatLegacyMenuModule} from '@angular/material/legacy-menu';
1515
import {MatToolbarModule} from '@angular/material/toolbar';
1616

1717
@Component({
@@ -24,7 +24,7 @@ import {MatToolbarModule} from '@angular/material/toolbar';
2424
MatButtonModule,
2525
MatDividerModule,
2626
MatIconModule,
27-
MatMenuModule,
27+
MatLegacyMenuModule,
2828
MatToolbarModule,
2929
],
3030
})

src/e2e-app/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ ng_module(
4343
"//src/components-examples/material-experimental/mdc-card",
4444
"//src/components-examples/private",
4545
"//src/material-experimental/mdc-button",
46-
"//src/material-experimental/mdc-menu",
4746
"//src/material-experimental/mdc-progress-spinner",
4847
"//src/material-experimental/mdc-table",
4948
"//src/material-experimental/mdc-tabs",
@@ -60,6 +59,7 @@ ng_module(
6059
"//src/material/legacy-dialog",
6160
"//src/material/legacy-form-field",
6261
"//src/material/legacy-input",
62+
"//src/material/legacy-menu",
6363
"//src/material/legacy-progress-bar",
6464
"//src/material/legacy-radio",
6565
"//src/material/legacy-slide-toggle",

src/e2e-app/mdc-menu/mdc-menu-e2e-module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*/
88

99
import {NgModule} from '@angular/core';
10-
import {MatMenuModule} from '@angular/material-experimental/mdc-menu';
10+
import {MatMenuModule} from '@angular/material/menu';
1111
import {MdcMenuE2e} from './mdc-menu-e2e';
1212

1313
@NgModule({

src/e2e-app/menu/menu-e2e-module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
*/
88

99
import {NgModule} from '@angular/core';
10-
import {MatMenuModule} from '@angular/material/menu';
10+
import {MatLegacyMenuModule} from '@angular/material/legacy-menu';
1111
import {MenuE2E} from './menu-e2e';
1212

1313
@NgModule({
14-
imports: [MatMenuModule],
14+
imports: [MatLegacyMenuModule],
1515
declarations: [MenuE2E],
1616
})
1717
export class MenuE2eModule {}

src/material-experimental/_index.scss

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@
2525
mdc-icon-button-typography, mdc-icon-button-density, mdc-icon-button-theme;
2626
@forward './mdc-list/list-theme' as mdc-list-* show mdc-list-color, mdc-list-typography,
2727
mdc-list-density, mdc-list-theme;
28-
@forward './mdc-menu/menu-theme' as mdc-menu-* show mdc-menu-color, mdc-menu-typography,
29-
mdc-menu-density, mdc-menu-theme;
3028
@forward './mdc-paginator/paginator-theme' as mdc-paginator-* show mdc-paginator-color,
3129
mdc-paginator-typography, mdc-paginator-density, mdc-paginator-theme;
3230
@forward './mdc-progress-spinner/progress-spinner-theme' as mdc-progress-spinner-* show

src/material-experimental/config.bzl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ entryPoints = [
55
"mdc-core",
66
"mdc-list",
77
"mdc-list/testing",
8-
"mdc-menu",
9-
"mdc-menu/testing",
108
"mdc-paginator",
119
"mdc-paginator/testing",
1210
"mdc-progress-spinner",

src/material-experimental/mdc-core/color/_all-color.import.scss

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ $mat-mdc-table-mdc-data-table-stroke-color, $mat-mdc-table-mdc-data-table-table-
2626
@forward '../../mdc-list/interactive-list-theme' as mat-mdc-*;
2727
@forward '../../mdc-list/list-option-theme' as mat-mdc-*;
2828
@forward '../../mdc-list/list-theme' as mat-mdc-list-*;
29-
@forward '../../mdc-menu/menu-theme' as mat-mdc-menu-*;
3029
@forward '../../mdc-paginator/paginator-theme' as mat-mdc-paginator-*;
3130
@forward '../../mdc-progress-spinner/progress-spinner-theme' as mat-mdc-progress-spinner-*;
3231
@forward '../theming/all-theme';

src/material-experimental/mdc-core/density/_all-density.import.scss

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ $mat-mdc-table-mdc-data-table-stroke-color, $mat-mdc-table-mdc-data-table-table-
2626
@forward '../../mdc-list/interactive-list-theme' as mat-mdc-*;
2727
@forward '../../mdc-list/list-option-theme' as mat-mdc-*;
2828
@forward '../../mdc-list/list-theme' as mat-mdc-list-*;
29-
@forward '../../mdc-menu/menu-theme' as mat-mdc-menu-*;
3029
@forward '../../mdc-paginator/paginator-theme' as mat-mdc-paginator-*;
3130
@forward '../../mdc-progress-spinner/progress-spinner-theme' as mat-mdc-progress-spinner-*;
3231
@forward '../theming/all-theme';

src/material-experimental/mdc-core/theming/BUILD.bazel

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ sass_library(
2323
"//src/material-experimental/mdc-button:mdc_button_scss_lib",
2424
"//src/material-experimental/mdc-core:mdc_core_scss_lib",
2525
"//src/material-experimental/mdc-list:mdc_list_scss_lib",
26-
"//src/material-experimental/mdc-menu:mdc_menu_scss_lib",
2726
"//src/material-experimental/mdc-paginator:mdc_paginator_scss_lib",
2827
"//src/material-experimental/mdc-progress-spinner:mdc_progress_spinner_scss_lib",
2928
"//src/material-experimental/mdc-snack-bar:mdc_snack_bar_scss_lib",

src/material-experimental/mdc-core/theming/_all-theme.import.scss

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,13 @@ $mat-mdc-table-mdc-data-table-stroke-color, $mat-mdc-table-mdc-data-table-table-
2626
@forward '../../mdc-list/interactive-list-theme' as mat-mdc-*;
2727
@forward '../../mdc-list/list-option-theme' as mat-mdc-*;
2828
@forward '../../mdc-list/list-theme' as mat-mdc-list-*;
29-
@forward '../../mdc-menu/menu-theme' as mat-mdc-menu-*;
3029
@forward '../../mdc-paginator/paginator-theme' as mat-mdc-paginator-*;
3130
@forward '../../mdc-progress-spinner/progress-spinner-theme' as mat-mdc-progress-spinner-*;
3231
@forward 'all-theme' hide all-mdc-component-themes;;
3332

3433
@import '../core-theme';
3534
@import '../../mdc-button/button-theme';
3635
@import '../../mdc-list/list-theme';
37-
@import '../../mdc-menu/menu-theme';
3836
@import '../../mdc-snack-bar/snack-bar-theme';
3937
@import '../../mdc-tabs/tabs-theme';
4038
@import '../../mdc-table/table-theme';

src/material-experimental/mdc-core/theming/_all-theme.scss

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
@use '../../mdc-button/fab-theme';
66
@use '../../mdc-button/icon-button-theme';
77
@use '../../mdc-list/list-theme';
8-
@use '../../mdc-menu/menu-theme';
98
@use '../../mdc-snack-bar/snack-bar-theme';
109
@use '../../mdc-tabs/tabs-theme';
1110
@use '../../mdc-table/table-theme';
@@ -25,7 +24,7 @@
2524
@include mat.checkbox-theme($theme-or-color-config);
2625
@include mat.chips-theme($theme-or-color-config);
2726
@include list-theme.theme($theme-or-color-config);
28-
@include menu-theme.theme($theme-or-color-config);
27+
@include mat.menu-theme($theme-or-color-config);
2928
@include paginator-theme.theme($theme-or-color-config);
3029
@include mat.progress-bar-theme($theme-or-color-config);
3130
@include progress-spinner-theme.theme($theme-or-color-config);

src/material-experimental/mdc-core/typography/_all-typography.import.scss

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ $mat-mdc-table-mdc-data-table-stroke-color, $mat-mdc-table-mdc-data-table-table-
2626
@forward '../../mdc-list/interactive-list-theme' as mat-mdc-*;
2727
@forward '../../mdc-list/list-option-theme' as mat-mdc-*;
2828
@forward '../../mdc-list/list-theme' as mat-mdc-list-*;
29-
@forward '../../mdc-menu/menu-theme' as mat-mdc-menu-*;
3029
@forward '../../mdc-paginator/paginator-theme' as mat-mdc-paginator-*;
3130
@forward '../../mdc-progress-spinner/progress-spinner-theme' as mat-mdc-progress-spinner-*;
3231
@forward '../theming/all-theme';

0 commit comments

Comments
 (0)