Skip to content
This repository was archived by the owner on Jan 13, 2025. It is now read-only.

Commit bdf3430

Browse files
authored
feat(chip): Add density mixin to chip. (#5109)
1 parent 4913db9 commit bdf3430

File tree

9 files changed

+158
-9
lines changed

9 files changed

+158
-9
lines changed

packages/mdc-button/_mixins.scss

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ $mdc-button-ripple-target: ".mdc-button__ripple";
4343

4444
@mixin mdc-button-theme-baseline($query: mdc-feature-all()) {
4545
.mdc-button {
46-
@include mdc-button-density($mdc-button-density-default-scale, $query: $query);
46+
@include mdc-button-density($mdc-button-density-scale, $query: $query);
4747
}
4848
}
4949

@@ -255,7 +255,7 @@ $mdc-button-ripple-target: ".mdc-button__ripple";
255255

256256
@mixin mdc-button-shape-radius($radius,
257257
$rtl-reflexive: false,
258-
$density-scale: $mdc-button-density-default-scale,
258+
$density-scale: $mdc-button-density-scale,
259259
$query: mdc-feature-all()) {
260260

261261
$height: mdc-density-prop-value(

packages/mdc-button/_variables.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ $mdc-button-contained-horizontal-padding: 16px !default;
2929

3030
$mdc-button-minimum-height: 24px !default;
3131
$mdc-button-maximum-height: $mdc-button-height !default;
32-
$mdc-button-density-default-scale: $mdc-density-default-scale !default;
32+
$mdc-button-density-scale: $mdc-density-default-scale !default;
3333
$mdc-button-density-config: (
3434
height: (
3535
default: $mdc-button-height,

packages/mdc-chips/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,7 @@ CSS Class | Description
291291
`mdc-chip__checkmark` | Optional. Indicates the checkmark in a filter chip.
292292
`mdc-chip__checkmark-svg` | Mandatory with the use of `mdc-chip__checkmark`. Indicates the checkmark SVG element in a filter chip.
293293
`mdc-chip__checkmark-path` | Mandatory with the use of `mdc-chip__checkmark`. Indicates the checkmark SVG path in a filter chip.
294+
`mdc-chip-density($density-scale)` | Sets density scale for chip. Supported density scales are `-2`, `-1` and `0` (default).
294295

295296
> _NOTE_: Every element that has an `mdc-chip__icon` class must also have either the `mdc-chip__icon--leading` or `mdc-chip__icon--trailing` class.
296297

packages/mdc-chips/_mixins.scss

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
@import "@material/checkbox/functions";
2626
@import "@material/checkbox/variables";
2727
@import "@material/elevation/mixins";
28+
@import "@material/density/functions";
2829
@import "@material/feature-targeting/functions";
2930
@import "@material/feature-targeting/mixins";
3031
@import "@material/ripple/mixins";
@@ -60,7 +61,7 @@ $mdc-chip-ripple-target: ".mdc-chip__ripple";
6061
@include mdc-chip-fill-color($mdc-chip-fill-color-default, $query: $query);
6162
@include mdc-chip-ink-color-without-ripple_($mdc-chip-ink-color-default, $query: $query);
6263
@include mdc-typography(body2, $query: $query);
63-
@include mdc-chip-height($mdc-chip-height-default, $query: $query);
64+
@include mdc-chip-density($density-scale: 0, $query: $query);
6465
@include mdc-chip-leading-icon-margin($query: $query);
6566

6667
@include mdc-feature-targets($feat-structure) {
@@ -323,15 +324,26 @@ $mdc-chip-ripple-target: ".mdc-chip__ripple";
323324
}
324325
}
325326

326-
@mixin mdc-chip-shape-radius($radius, $rtl-reflexive: false, $query: mdc-feature-all()) {
327+
@mixin mdc-chip-shape-radius(
328+
$radius,
329+
$rtl-reflexive: false,
330+
$density-scale: $mdc-chip-density-scale,
331+
$query: mdc-feature-all()) {
332+
333+
$height: mdc-density-prop-value(
334+
$density-config: $mdc-chip-density-config,
335+
$density-scale: $density-scale,
336+
$property-name: height,
337+
);
338+
327339
@include mdc-shape-radius(
328-
mdc-shape-resolve-percentage-radius($mdc-chip-height-default, $radius),
340+
mdc-shape-resolve-percentage-radius($height, $radius),
329341
$rtl-reflexive,
330342
$query: $query);
331343

332344
#{$mdc-chip-ripple-target} {
333345
@include mdc-shape-radius(
334-
mdc-shape-resolve-percentage-radius($mdc-chip-height-default, $radius),
346+
mdc-shape-resolve-percentage-radius($height, $radius),
335347
$rtl-reflexive,
336348
$query: $query
337349
);
@@ -502,7 +514,7 @@ $mdc-chip-ripple-target: ".mdc-chip__ripple";
502514

503515
.mdc-chip--touch {
504516
@include mdc-touch-target-component(
505-
$component-height: $mdc-chip-height-default, $query: $query);
517+
$component-height: $mdc-chip-height, $query: $query);
506518
}
507519
}
508520

@@ -611,3 +623,19 @@ $mdc-chip-ripple-target: ".mdc-chip__ripple";
611623
}
612624
}
613625
}
626+
627+
///
628+
/// Sets the density scale for chips.
629+
///
630+
/// @param {Number | String} $density-scale - Density scale value for component.
631+
/// Supported density scale values are `-2`, `-1`, `0`.
632+
///
633+
@mixin mdc-chip-density($density-scale, $query: mdc-feature-all()) {
634+
$height: mdc-density-prop-value(
635+
$density-config: $mdc-chip-density-config,
636+
$density-scale: $density-scale,
637+
$property-name: height,
638+
);
639+
640+
@include mdc-chip-height($height, $query: $query);
641+
}

packages/mdc-chips/_variables.scss

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,24 @@
2121
//
2222

2323
@import "@material/animation/variables";
24+
@import "@material/density/variables";
2425
@import "@material/theme/variables";
2526

2627
$mdc-chip-fill-color-default: mix(mdc-theme-prop-value(on-surface), mdc-theme-prop-value(surface), 12%) !default;
2728
$mdc-chip-ink-color-default: rgba(mdc-theme-prop-value(on-surface), .87) !default;
2829
$mdc-chip-horizontal-padding: 12px !default;
29-
$mdc-chip-height-default: 32px !default;
30+
$mdc-chip-height: 32px !default;
31+
32+
$mdc-chip-minimum-height: 24px !default;
33+
$mdc-chip-maximum-height: $mdc-chip-height !default;
34+
$mdc-chip-density-scale: $mdc-density-default-scale !default;
35+
$mdc-chip-density-config: (
36+
height: (
37+
default: $mdc-chip-height,
38+
maximum: $mdc-chip-maximum-height,
39+
minimum: $mdc-chip-minimum-height,
40+
),
41+
) !default;
3042

3143
$mdc-chip-icon-color: mdc-theme-prop-value(on-surface) !default;
3244
$mdc-chip-icon-opacity: .54 !default;

test/screenshot/golden.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,14 @@
215215
"desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/06/12/17_35_21_026/spec/mdc-chips/mixins/chip-set-spacing.html.windows_ie_11.png"
216216
}
217217
},
218+
"spec/mdc-chips/mixins/density.html": {
219+
"public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/09/19/17_59_21_146/spec/mdc-chips/mixins/density.html?utm_source=golden_json",
220+
"screenshots": {
221+
"desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/09/19/17_59_21_146/spec/mdc-chips/mixins/density.html.windows_chrome_76.png",
222+
"desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/09/19/17_59_21_146/spec/mdc-chips/mixins/density.html.windows_firefox_69.png",
223+
"desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/09/19/17_59_21_146/spec/mdc-chips/mixins/density.html.windows_ie_11.png"
224+
}
225+
},
218226
"spec/mdc-chips/mixins/fill-color-accessible.html": {
219227
"public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/abhiomkar/2019/09/10/15_45_24_303/spec/mdc-chips/mixins/fill-color-accessible.html?utm_source=golden_json",
220228
"screenshots": {

test/screenshot/spec/mdc-chips/fixture.scss

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,15 @@ $custom-chip-ink-color: $material-color-blue-500;
7373
@include mdc-chip-height(40px);
7474
}
7575

76+
.custom-chip--density {
77+
@include mdc-chip-density($density-scale: -1);
78+
}
79+
80+
.custom-chip--density-radius {
81+
@include mdc-chip-density($density-scale: -2);
82+
@include mdc-chip-shape-radius(10%, $density-scale: -2);
83+
}
84+
7685
.custom-chip--leading-icon-color {
7786
@include mdc-chip-leading-icon-color($custom-chip-fill-color, .5);
7887
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
<!DOCTYPE html>
2+
<!--
3+
Copyright 2018 Google Inc.
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in
13+
all copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21+
THE SOFTWARE.
22+
-->
23+
<html lang="en">
24+
<head>
25+
<meta charset="utf-8">
26+
<title>Density Chips Mixin - MDC Web Screenshot Test</title>
27+
<meta name="viewport" content="width=device-width, initial-scale=1">
28+
<link rel="stylesheet" href="../../../out/mdc.chips.css">
29+
<link rel="stylesheet" href="../../../out/spec/fixture.css">
30+
<link rel="stylesheet" href="../../../out/spec/mdc-chips/fixture.css">
31+
32+
<!-- Global site tag (gtag.js) - Google Analytics -->
33+
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-118996389-2"></script>
34+
<script>
35+
window.dataLayer = window.dataLayer || [];
36+
function gtag(){dataLayer.push(arguments);}
37+
gtag('js', new Date());
38+
gtag('config', 'UA-118996389-2');
39+
</script>
40+
</head>
41+
42+
<body class="test-container">
43+
<main class="test-viewport test-viewport--mobile">
44+
<div class="test-layout">
45+
<div class="test-cell test-cell--chip">
46+
<div class="mdc-chip-set">
47+
<button class="mdc-chip custom-chip--density">
48+
<div class="mdc-chip__ripple"></div>
49+
<span class="mdc-chip__text">Chip One</span>
50+
</button>
51+
<button class="mdc-chip custom-chip--density">
52+
<div class="mdc-chip__ripple"></div>
53+
<span class="mdc-chip__text">Chip Two</span>
54+
</button>
55+
<button class="mdc-chip custom-chip--density">
56+
<div class="mdc-chip__ripple"></div>
57+
<span class="mdc-chip__text">Chip Three</span>
58+
</button>
59+
<button class="mdc-chip custom-chip--density">
60+
<div class="mdc-chip__ripple"></div>
61+
<span class="mdc-chip__text">Chip Four</span>
62+
</button>
63+
</div>
64+
</div>
65+
66+
<div class="test-cell test-cell--chip">
67+
<div class="mdc-chip-set">
68+
<button class="mdc-chip custom-chip--density-radius">
69+
<div class="mdc-chip__ripple"></div>
70+
<span class="mdc-chip__text">Chip One</span>
71+
</button>
72+
<button class="mdc-chip custom-chip--density-radius">
73+
<div class="mdc-chip__ripple"></div>
74+
<span class="mdc-chip__text">Chip Two</span>
75+
</button>
76+
</div>
77+
</div>
78+
79+
</div>
80+
</main>
81+
82+
<!-- Automatically provides/replaces `Promise` if missing or broken. -->
83+
<script src="https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.js"></script>
84+
<script src="https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.auto.js"></script>
85+
<script src="https://cdnjs.cloudflare.com/ajax/libs/fontfaceobserver/2.0.13/fontfaceobserver.standalone.js"></script>
86+
<script src="../../../out/material-components-web.js"></script>
87+
<script src="../../../out/spec/fixture.js"></script>
88+
<script src="../../../out/spec/mdc-chips/fixture.js"></script>
89+
</body>
90+
</html>

test/scss/_feature-targeting-test.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
// Chips
7070
@include mdc-chip-core-styles($query: $query);
7171
@include mdc-chip-elevation-transition($query: $query);
72+
@include mdc-chip-density(0, $query: $query);
7273
@include mdc-chip-fill-color(red, $query: $query);
7374
@include mdc-chip-fill-color-accessible(red, $query: $query);
7475
@include mdc-chip-height(0, $query: $query);

0 commit comments

Comments
 (0)