Skip to content

Commit 3f52e41

Browse files
authored
refactor(material/slider): simplify structural styles (#29417)
Reworks the slider styles to be smaller and easier to maintain.
1 parent ae83977 commit 3f52e41

File tree

5 files changed

+434
-180
lines changed

5 files changed

+434
-180
lines changed

src/material/core/tokens/m2/mdc/_slider.scss

+3-6
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ $prefix: (mdc, slider);
3939
with-tick-marks-container-size: 2px,
4040
// Opacity of inactive container with tick marks.
4141
with-tick-marks-inactive-container-opacity: 0.6,
42+
// Elevation for the handle.
43+
handle-elevation: elevation.get-box-shadow(1),
4244
// =============================================================================================
4345
// = TOKENS NOT USED IN ANGULAR MATERIAL =
4446
// =============================================================================================
@@ -49,6 +51,7 @@ $prefix: (mdc, slider);
4951
focus-state-layer-opacity: null,
5052
hover-state-layer-opacity: null,
5153
pressed-state-layer-opacity: null,
54+
handle-shadow-color: null,
5255
// MDC does not seem to use these tokens.
5356
hover-state-layer-color: null,
5457
pressed-handle-color: null,
@@ -81,12 +84,6 @@ $prefix: (mdc, slider);
8184
with-overlap-handle-outline-color: #fff,
8285
// Color of container with tick marks when disabled.
8386
with-tick-marks-disabled-container-color: $on-surface,
84-
// (Part of the color tokens because it needs to be combined with the
85-
// shadow color to generate the box-shadow.)
86-
// Elevation level for handle.
87-
handle-elevation: 1,
88-
// Color of handle shadow.
89-
handle-shadow-color: if($elevation != null, $elevation, elevation.$color),
9087
)
9188
);
9289
}

src/material/core/tokens/m3/mdc/_slider.scss

+9-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
@use 'sass:map';
2+
@use '../../../style/elevation';
23
@use '../../token-utils';
34

45
// The prefix used to generate the fully qualified name for tokens in this file.
@@ -10,7 +11,13 @@ $prefix: (mdc, slider);
1011
/// @param {Map} $token-slots Possible token slots
1112
/// @return {Map} A set of tokens for the MDC slider
1213
@function get-tokens($systems, $exclude-hardcoded, $token-slots) {
13-
$mdc-tokens: token-utils.get-mdc-tokens('slider', $systems, $exclude-hardcoded);
14+
$tokens: token-utils.get-mdc-tokens('slider', $systems, $exclude-hardcoded);
15+
$handle-elevation: map.get($tokens, 'handle-elevation');
16+
17+
@if ($handle-elevation != null) {
18+
$tokens: map.set($tokens, 'handle-elevation', elevation.get-box-shadow($handle-elevation));
19+
}
20+
1421
$variant-tokens: (
1522
primary: (), // Default, no overrides needed
1623
secondary: (
@@ -57,5 +64,5 @@ $prefix: (mdc, slider);
5764
),
5865
);
5966

60-
@return token-utils.namespace-tokens($prefix, ($mdc-tokens, $variant-tokens), $token-slots);
67+
@return token-utils.namespace-tokens($prefix, ($tokens, $variant-tokens), $token-slots);
6168
}

src/material/slider/BUILD.bazel

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ sass_binary(
4444
src = "slider.scss",
4545
deps = [
4646
"//:mdc_sass_lib",
47+
"//src/cdk:sass_lib",
4748
"//src/material/core:core_scss_lib",
4849
],
4950
)

src/material/slider/_slider-theme.scss

+24-41
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
@use '@material/slider/slider-theme' as mdc-slider-theme;
21
@use '../core/theming/theming';
32
@use '../core/theming/inspection';
43
@use '../core/theming/validation';
@@ -16,11 +15,11 @@
1615
@include _theme-from-tokens(inspection.get-theme-tokens($theme, base));
1716
}
1817
@else {
19-
// Add default values for tokens not related to color, typography, or density.
2018
@include sass-utils.current-selector-or-root() {
21-
$mat-tokens: tokens-mat-slider.get-unthemable-tokens();
22-
@include token-utils.create-token-values(tokens-mat-slider.$prefix, $mat-tokens);
23-
@include mdc-slider-theme.theme(tokens-mdc-slider.get-unthemable-tokens());
19+
@include token-utils.create-token-values(tokens-mdc-slider.$prefix,
20+
tokens-mdc-slider.get-unthemable-tokens());
21+
@include token-utils.create-token-values(tokens-mat-slider.$prefix,
22+
tokens-mat-slider.get-unthemable-tokens());
2423
}
2524
}
2625
}
@@ -35,40 +34,24 @@
3534
@include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);
3635
}
3736
@else {
38-
$is-dark: inspection.get-theme-type($theme) == dark;
39-
40-
$mdc-color-tokens: token-utils.resolve-elevation(
41-
tokens-mdc-slider.get-color-tokens($theme),
42-
handle-elevation,
43-
handle-shadow-color
44-
);
45-
46-
$mat-slider-color-tokens: tokens-mat-slider.get-color-tokens($theme);
47-
48-
// Add values for MDC slider tokens.
49-
@include sass-utils.current-selector-or-root() {
50-
@include mdc-slider-theme.theme($mdc-color-tokens);
51-
@include token-utils.create-token-values(
52-
tokens-mat-slider.$prefix,
53-
$mat-slider-color-tokens
54-
);
37+
@include sass-utils.current-selector-or-root() {
38+
@include token-utils.create-token-values(tokens-mdc-slider.$prefix,
39+
tokens-mdc-slider.get-color-tokens($theme));
40+
@include token-utils.create-token-values(tokens-mat-slider.$prefix,
41+
tokens-mat-slider.get-color-tokens($theme));
5542

56-
.mat-accent {
57-
@include token-utils.create-token-values(
58-
tokens-mat-slider.$prefix,
59-
tokens-mat-slider.private-get-color-palette-color-tokens($theme, accent),
60-
);
61-
@include mdc-slider-theme.theme(
62-
tokens-mdc-slider.private-get-color-palette-color-tokens($theme, accent));
63-
}
43+
.mat-accent {
44+
@include token-utils.create-token-values(tokens-mdc-slider.$prefix,
45+
tokens-mdc-slider.private-get-color-palette-color-tokens($theme, accent));
46+
@include token-utils.create-token-values(tokens-mat-slider.$prefix,
47+
tokens-mat-slider.private-get-color-palette-color-tokens($theme, accent));
48+
}
6449

6550
.mat-warn {
66-
@include token-utils.create-token-values(
67-
tokens-mat-slider.$prefix,
68-
tokens-mat-slider.private-get-color-palette-color-tokens($theme, warn),
69-
);
70-
@include mdc-slider-theme.theme(
71-
tokens-mdc-slider.private-get-color-palette-color-tokens($theme, warn));
51+
@include token-utils.create-token-values(tokens-mdc-slider.$prefix,
52+
tokens-mdc-slider.private-get-color-palette-color-tokens($theme, warn));
53+
@include token-utils.create-token-values(tokens-mat-slider.$prefix,
54+
tokens-mat-slider.private-get-color-palette-color-tokens($theme, warn));
7255
}
7356
}
7457
}
@@ -82,9 +65,9 @@
8265
@include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));
8366
}
8467
@else {
85-
// Add values for MDC slider tokens.
8668
@include sass-utils.current-selector-or-root() {
87-
@include mdc-slider-theme.theme(tokens-mdc-slider.get-typography-tokens($theme));
69+
@include token-utils.create-token-values(tokens-mdc-slider.$prefix,
70+
tokens-mdc-slider.get-typography-tokens($theme));
8871
}
8972
}
9073
}
@@ -97,9 +80,9 @@
9780
@include _theme-from-tokens(inspection.get-theme-tokens($theme, density));
9881
}
9982
@else {
100-
// Add values for MDC slider tokens.
10183
@include sass-utils.current-selector-or-root() {
102-
@include mdc-slider-theme.theme(tokens-mdc-slider.get-density-tokens($theme));
84+
@include token-utils.create-token-values(tokens-mdc-slider.$prefix,
85+
tokens-mdc-slider.get-density-tokens($theme));
10386
}
10487
}
10588
}
@@ -144,6 +127,6 @@
144127
'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');
145128
$mdc-slider-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-slider.$prefix, $options...);
146129
$mat-slider-tokens: token-utils.get-tokens-for($tokens, tokens-mat-slider.$prefix, $options...);
147-
@include mdc-slider-theme.theme($mdc-slider-tokens);
130+
@include token-utils.create-token-values(tokens-mdc-slider.$prefix, $mdc-slider-tokens);
148131
@include token-utils.create-token-values(tokens-mat-slider.$prefix, $mat-slider-tokens);
149132
}

0 commit comments

Comments
 (0)