Skip to content

Commit 9b88aac

Browse files
fix(expansion) Add expansion panel outputs (#7309)
1 parent 2f2325a commit 9b88aac

File tree

5 files changed

+62
-23
lines changed

5 files changed

+62
-23
lines changed

e2e/components/expansion-e2e.spec.ts

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,19 @@ describe('expansion', () => {
55

66
beforeEach(() => browser.get('/expansion'));
77

8-
it('should show a expansion panel', async () => {
9-
expect(element(by.css('.mat-expansion-panel'))).toBeDefined();
8+
it('should show an accordion', async () => {
9+
expect(element(by.css('.mat-accordion'))).toBeDefined();
10+
screenshot();
11+
});
1012

13+
it('should show two panels', async () => {
14+
expect(element.all(by.css('.mat-expansion-panel')).count()).toBe(2);
1115
screenshot();
1216
});
1317

1418
it('should hide contents of the expansion panel on click', async () => {
15-
const panelHeader = element(by.css('.mat-expansion-panel-header'));
16-
const panelContent = element(by.css('.mat-expansion-panel-content'));
19+
const panelHeader = element.all(by.css('.mat-expansion-panel-header')).get(0);
20+
const panelContent = element.all(by.css('.mat-expansion-panel-content')).get(0);
1721

1822
expect(panelContent.isDisplayed()).toBe(false);
1923

@@ -22,4 +26,19 @@ describe('expansion', () => {
2226
expect(panelContent.isDisplayed()).toBe(true);
2327
});
2428

29+
it('should emit events for expanding and collapsing', async () => {
30+
const panelHeader = element.all(by.css('.mat-expansion-panel-header')).get(1);
31+
const panelDescription = element
32+
.all(by.css('.mat-expansion-panel-header mat-panel-description')).get(1);
33+
34+
panelHeader.click();
35+
36+
expect(panelDescription.getText()).toContain('Currently I am open');
37+
38+
panelHeader.click();
39+
40+
expect(panelDescription.getText()).toContain('Currently I am closed');
41+
});
42+
2543
});
44+

src/e2e-app/main.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import {platformBrowser} from '@angular/platform-browser';
22
import {E2eAppModuleNgFactory} from './e2e-app-module.ngfactory';
3+
import {enableProdMode} from '@angular/core';
4+
5+
enableProdMode();
36

47
platformBrowser().bootstrapModuleFactory(E2eAppModuleNgFactory);

src/lib/expansion/expansion-panel.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ export type MatExpansionPanelState = 'expanded' | 'collapsed';
7272
preserveWhitespaces: false,
7373
changeDetection: ChangeDetectionStrategy.OnPush,
7474
inputs: ['disabled', 'expanded'],
75+
outputs: ['opened', 'closed'],
7576
host: {
7677
'class': 'mat-expansion-panel',
7778
'[class.mat-expanded]': 'expanded',
Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,32 @@
1-
<mat-expansion-panel>
2-
<mat-expansion-panel-header>
3-
<mat-panel-title>
4-
Personal data
5-
</mat-panel-title>
6-
<mat-panel-description>
7-
Type your name and age
8-
</mat-panel-description>
9-
</mat-expansion-panel-header>
10-
11-
<mat-form-field>
12-
<input matInput placeholder="First name">
13-
</mat-form-field>
14-
15-
<mat-form-field>
16-
<input matInput placeholder="Age">
17-
</mat-form-field>
18-
</mat-expansion-panel>
1+
<mat-accordion>
2+
<mat-expansion-panel>
3+
<mat-expansion-panel-header>
4+
<mat-panel-title>
5+
Personal data
6+
</mat-panel-title>
7+
<mat-panel-description>
8+
Type your name and age
9+
</mat-panel-description>
10+
</mat-expansion-panel-header>
11+
12+
<mat-form-field>
13+
<input matInput placeholder="First name">
14+
</mat-form-field>
15+
16+
<mat-form-field>
17+
<input matInput placeholder="Age">
18+
</mat-form-field>
19+
</mat-expansion-panel>
20+
<mat-expansion-panel (opened)="panelOpenState = true"
21+
(closed)="panelOpenState = false">
22+
<mat-expansion-panel-header>
23+
<mat-panel-title>
24+
Self aware panel
25+
</mat-panel-title>
26+
<mat-panel-description>
27+
Currently I am {{panelOpenState ? 'open' : 'closed'}}
28+
</mat-panel-description>
29+
</mat-expansion-panel-header>
30+
<p>I'm visible because I am open</p>
31+
</mat-expansion-panel>
32+
</mat-accordion>

src/material-examples/expansion-overview/expansion-overview-example.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ import {Component} from '@angular/core';
77
selector: 'expansion-overview-example',
88
templateUrl: 'expansion-overview-example.html',
99
})
10-
export class ExpansionOverviewExample {}
10+
export class ExpansionOverviewExample {
11+
panelOpenState: boolean = false;
12+
}

0 commit comments

Comments
 (0)