Skip to content

Commit 4b1ee6f

Browse files
authored
feat(material-experimental/mdc-card): add appearance input (#22070)
* feat(material-experimental/mdc-card): add appearance input * fixup! feat(material-experimental/mdc-card): add appearance input
1 parent 632e7fc commit 4b1ee6f

File tree

3 files changed

+24
-15
lines changed

3 files changed

+24
-15
lines changed

src/dev-app/mdc-card/mdc-card-demo.html

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
<div class="demo-card-container">
2-
<mat-checkbox [(ngModel)]="outlined">Use outlined cards</mat-checkbox>
2+
<mat-checkbox (change)="toggleAppearance()">Use outlined cards</mat-checkbox>
33

44
<!-- TODO(jelbourn): re-add dividers and footers with progress bars once the MDC versions exist -->
5-
<mat-card [class.mdc-card--outlined]="outlined">
5+
<mat-card [appearance]="appearance">
66
Card with only text content
77
</mat-card>
88

9-
<mat-card [class.mdc-card--outlined]="outlined">
9+
<mat-card [appearance]="appearance">
1010
<mat-card-content>
1111
Card with only <code>&lt;mat-card-content&gt;</code> and text content.
1212
</mat-card-content>
1313
</mat-card>
1414

15-
<mat-card [class.mdc-card--outlined]="outlined">
15+
<mat-card [appearance]="appearance">
1616
<mat-card-subtitle>Subtitle</mat-card-subtitle>
1717
<mat-card-title>Card with title and footer</mat-card-title>
1818
<mat-card-content>
@@ -25,7 +25,7 @@
2525
</mat-card-actions>
2626
</mat-card>
2727

28-
<mat-card [class.mdc-card--outlined]="outlined">
28+
<mat-card [appearance]="appearance">
2929
<mat-card-subtitle>Subtitle</mat-card-subtitle>
3030
<mat-card-title>Card with title, footer, and inset-divider</mat-card-title>
3131
<mat-card-content>
@@ -39,7 +39,7 @@
3939

4040
</mat-card>
4141

42-
<mat-card [class.mdc-card--outlined]="outlined">
42+
<mat-card [appearance]="appearance">
4343
<img mat-card-image src="https://material.angularjs.org/latest/img/washedout.png">
4444
<mat-card-title>Content Title</mat-card-title>
4545
<mat-card-content>
@@ -51,7 +51,7 @@
5151
</mat-card-actions>
5252
</mat-card>
5353

54-
<mat-card [class.mdc-card--outlined]="outlined">
54+
<mat-card [appearance]="appearance">
5555
<mat-card-header>
5656
<img mat-card-avatar>
5757
<mat-card-title>Header title</mat-card-title>
@@ -63,7 +63,7 @@
6363
</mat-card-content>
6464
</mat-card>
6565

66-
<mat-card class="demo-card-blue mat-card-flat" [class.mdc-card--outlined]="outlined">
66+
<mat-card class="demo-card-blue mat-card-flat" [appearance]="appearance">
6767
<mat-card-title>Easily customizable</mat-card-title>
6868
<mat-card-actions>
6969
<button mat-button>First</button>
@@ -74,7 +74,7 @@
7474
<hr>
7575
<h2>Cards with media area</h2>
7676

77-
<mat-card [class.mdc-card--outlined]="outlined">
77+
<mat-card [appearance]="appearance">
7878
<mat-card-title-group>
7979
<mat-card-title>Card</mat-card-title>
8080
<mat-card-subtitle>Small</mat-card-subtitle>
@@ -85,7 +85,7 @@ <h2>Cards with media area</h2>
8585
</mat-card-content>
8686
</mat-card>
8787

88-
<mat-card [class.mdc-card--outlined]="outlined">
88+
<mat-card [appearance]="appearance">
8989
<mat-card-title-group>
9090
<mat-card-title>Card</mat-card-title>
9191
<mat-card-subtitle>Medium</mat-card-subtitle>
@@ -96,7 +96,7 @@ <h2>Cards with media area</h2>
9696
</mat-card-content>
9797
</mat-card>
9898

99-
<mat-card [class.mdc-card--outlined]="outlined">
99+
<mat-card [appearance]="appearance">
100100
<mat-card-title-group>
101101
<mat-card-title>Card</mat-card-title>
102102
<mat-card-subtitle>Large</mat-card-subtitle>
@@ -107,7 +107,7 @@ <h2>Cards with media area</h2>
107107
</mat-card-content>
108108
</mat-card>
109109

110-
<mat-card [class.mdc-card--outlined]="outlined">
110+
<mat-card [appearance]="appearance">
111111
<mat-card-title-group>
112112
<mat-card-title>Card</mat-card-title>
113113
<mat-card-subtitle>Extra large</mat-card-subtitle>

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

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

99
import {Component, ViewEncapsulation} from '@angular/core';
10+
import {MatCardAppearance} from '@angular/material-experimental/mdc-card';
1011

1112
@Component({
1213
selector: 'mdc-card-demo',
@@ -15,11 +16,14 @@ import {Component, ViewEncapsulation} from '@angular/core';
1516
encapsulation: ViewEncapsulation.None,
1617
})
1718
export class MdcCardDemo {
18-
outlined = false;
19+
appearance: MatCardAppearance = 'raised';
1920
longText = `Once upon a midnight dreary, while I pondered, weak and weary,
2021
Over many a quaint and curious volume of forgotten lore—
2122
While I nodded, nearly napping, suddenly there came a tapping,
2223
As of some one gently rapping, rapping at my chamber door.
2324
“’Tis some visitor,” I muttered, “tapping at my chamber door—
2425
Only this and nothing more.”`;
26+
toggleAppearance() {
27+
this.appearance = this.appearance == 'raised' ? 'outlined' : 'raised';
28+
}
2529
}

src/material-experimental/mdc-card/card.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
ViewEncapsulation,
1515
} from '@angular/core';
1616

17+
export type MatCardAppearance = 'outlined' | 'raised';
1718

1819
/**
1920
* Material Design card component. Cards contain content and actions about a single subject.
@@ -25,13 +26,17 @@ import {
2526
selector: 'mat-card',
2627
templateUrl: 'card.html',
2728
styleUrls: ['card.css'],
28-
host: {'class': 'mat-mdc-card mdc-card'},
29+
host: {
30+
'class': 'mat-mdc-card mdc-card',
31+
'[class.mdc-card--outlined]': 'appearance == "outlined"'
32+
},
2933
exportAs: 'matCard',
3034
encapsulation: ViewEncapsulation.None,
3135
changeDetection: ChangeDetectionStrategy.OnPush,
3236
})
3337
export class MatCard {
34-
// TODO(jelbourn): add `outline` option to card (supported by MDC)
38+
@Input() appearance: MatCardAppearance = 'raised';
39+
3540
}
3641

3742
// TODO(jelbourn): add `MatActionCard`, which is a card that acts like a button (and has a ripple).

0 commit comments

Comments
 (0)