Skip to content

Commit

Permalink
fix(card): remove extra margin if header doesn't have an avatar
Browse files Browse the repository at this point in the history
The card header margin was set up assuming that there would always be an avatar element, but that's not always the case. These changes add an extra check to avoid the extra margin.

Fixes angular#19069.
  • Loading branch information
crisbeto committed Apr 17, 2020
1 parent 695dde6 commit 4e889e6
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 6 deletions.
12 changes: 12 additions & 0 deletions src/dev-app/card/card-demo.html
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,18 @@
</mat-card-content>
</mat-card>

<!-- Used to test header without an avatar. -->
<mat-card>
<mat-card-header>
<mat-card-title>Header title</mat-card-title>
<mat-card-subtitle>Header subtitle</mat-card-subtitle>
</mat-card-header>
<img mat-card-image src="https://material.angularjs.org/latest/img/washedout.png">
<mat-card-content>
<p>Here is some content</p>
</mat-card-content>
</mat-card>

<mat-card class="demo-card-blue mat-card-flat">
<mat-card-title>Easily customizable</mat-card-title>
<mat-card-actions>
Expand Down
12 changes: 12 additions & 0 deletions src/dev-app/mdc-card/mdc-card-demo.html
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,18 @@
</mat-card-content>
</mat-card>

<!-- Used to test header without an avatar. -->
<mat-card [class.mdc-card--outlined]="outlined">
<mat-card-header>
<mat-card-title>Header title</mat-card-title>
<mat-card-subtitle>Header subtitle</mat-card-subtitle>
</mat-card-header>
<img mat-card-image src="https://material.angularjs.org/latest/img/washedout.png">
<mat-card-content>
<p>Here is some content</p>
</mat-card-content>
</mat-card>

<mat-card class="demo-card-blue mat-card-flat" [class.mdc-card--outlined]="outlined">
<mat-card-title>Easily customizable</mat-card-title>
<mat-card-actions>
Expand Down
15 changes: 10 additions & 5 deletions src/material-experimental/mdc-card/card.scss
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,11 @@ $mat-card-default-padding: 16px !default;
// Custom elements default to `display: inline`. Reset to 'block'.
display: block;

// Apply default padding for a text content region. Omit any bottom padding because we assume
// this region will be followed by another region that includes top padding.
padding: $mat-card-default-padding $mat-card-default-padding 0;
.mat-mdc-card-avatar ~ .mat-mdc-card-header-text & {
// Apply default padding for a text content region. Omit any bottom padding because we assume
// this region will be followed by another region that includes top padding.
padding: $mat-card-default-padding $mat-card-default-padding 0;
}
}

// Header section at the top of a card. MDC does not have a pre-made header section for cards.
Expand Down Expand Up @@ -133,8 +135,11 @@ $mat-card-default-padding: 16px !default;
// `mat-card-title-group` since the padding is captured by parent container already.
.mat-mdc-card-subtitle ~ .mat-mdc-card-title,
.mat-mdc-card-title ~ .mat-mdc-card-subtitle,
.mat-mdc-card-header .mat-mdc-card-title,
.mat-mdc-card-header .mat-mdc-card-subtitle,

// The `.mat-mdc-card-header-text` here is redundant since the header text
// wrapper is always there in the header, but we need the extra specificity.
.mat-mdc-card-header .mat-mdc-card-header-text .mat-mdc-card-title,
.mat-mdc-card-header .mat-mdc-card-header-text .mat-mdc-card-subtitle,
.mat-mdc-card-title-group .mat-mdc-card-title,
.mat-mdc-card-title-group .mat-mdc-card-subtitle {
padding-top: 0;
Expand Down
12 changes: 11 additions & 1 deletion src/material/card/card.scss
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,17 @@ $mat-card-header-size: 40px !default;
}

.mat-card-header-text {
margin: 0 $mat-card-padding;
&:not(:first-child) {
margin-left: $mat-card-padding;
}

[dir='rtl'] & {
margin-left: 0;

&:not(:first-child) {
margin-right: $mat-card-padding;
}
}
}

.mat-card-avatar {
Expand Down

1 comment on commit 4e889e6

@philmayfield
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about setting the margin to the avatar rather than the title? There would be no reliance on pseudo selectors at that point.

Please sign in to comment.