Skip to content

Commit

Permalink
fix(material-experimental/mdc-card): remove extra margin if header do…
Browse files Browse the repository at this point in the history
…esn't have an avatar (#19072)

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 #19069.
  • Loading branch information
crisbeto authored Mar 3, 2022
1 parent 2d8fd9d commit 557f8bc
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 6 deletions.
11 changes: 11 additions & 0 deletions src/dev-app/mdc-card/mdc-card-demo.html
Original file line number Diff line number Diff line change
Expand Up @@ -118,5 +118,16 @@ <h2>Cards with media area</h2>
</mat-card-content>
</mat-card>

<!-- Used to test header without an avatar. -->
<mat-card [appearance]="appearance">
<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>

</div>
17 changes: 11 additions & 6 deletions src/material-experimental/mdc-card/card.scss
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,15 @@ $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;

// Titles and subtitles can be set on native header elements which come with
// their own margin. Clear it since the spacing is done using `padding`.
margin: 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 @@ -131,8 +133,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

0 comments on commit 557f8bc

Please sign in to comment.