Skip to content

Commit 1d9d113

Browse files
committed
fix(material/slider): m3 ripple color (#28369)
* fix(material/slider): m3 ripple color * fixup! fix(material/slider): m3 ripple color * fixup! fix(material/slider): m3 ripple color * fixup! fix(material/slider): m3 ripple color (cherry picked from commit 90b37e5)
1 parent e97d98b commit 1d9d113

File tree

4 files changed

+49
-28
lines changed

4 files changed

+49
-28
lines changed

src/material-experimental/theming/_custom-tokens.scss

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,14 @@
439439
/// @param {Boolean} $exclude-hardcoded Whether to exclude hardcoded token values
440440
/// @return {Map} A set of custom tokens for the mat-slider
441441
@function slider($systems, $exclude-hardcoded) {
442+
$ripple-color: map.get($systems, md-sys-color, primary);
443+
$hover-ripple-color: if($ripple-color == null, null, #{rgba($ripple-color, 0.05)});
444+
$focus-ripple-color: if($ripple-color == null, null, #{rgba($ripple-color, 0.2)});
445+
442446
@return (
447+
ripple-color: $ripple-color,
448+
hover-state-layer-color: $hover-ripple-color,
449+
focus-state-layer-color: $focus-ripple-color,
443450
value-indicator-opacity: _hardcode(1, $exclude-hardcoded),
444451
value-indicator-padding: _hardcode(0, $exclude-hardcoded),
445452
value-indicator-width: _hardcode(28px, $exclude-hardcoded),

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

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
@use 'sass:map';
12
@use '../../token-utils';
23
@use '../../../style/sass-utils';
34
@use '../../../theming/inspection';
@@ -21,11 +22,28 @@ $prefix: (mat, slider);
2122

2223
// Tokens that can be configured through Angular Material's color theming API.
2324
@function get-color-tokens($theme) {
25+
$theme-color-tokens: private-get-color-palette-color-tokens($theme, primary);
2426
$is-dark: inspection.get-theme-type($theme) == dark;
2527

28+
@return map.merge(
29+
$theme-color-tokens,
30+
(
31+
// Opacity of value indicator text container
32+
value-indicator-opacity: if($is-dark, 0.9, 0.6)
33+
),
34+
);
35+
}
36+
37+
// Generates tokens for the slider properties that change based on the theme.
38+
@function private-get-color-palette-color-tokens($theme, $palette-name) {
39+
$ripple-color: inspection.get-theme-color($theme, $palette-name);
40+
$hover-ripple-color: if($ripple-color == null, null, #{rgba($ripple-color, 0.05)});
41+
$focus-ripple-color: if($ripple-color == null, null, #{rgba($ripple-color, 0.2)});
42+
2643
@return (
27-
// Opacity of value indicator text container
28-
value-indicator-opacity: if($is-dark, 0.9, 0.6)
44+
ripple-color: $ripple-color,
45+
hover-state-layer-color: $hover-ripple-color,
46+
focus-state-layer-color: $focus-ripple-color
2947
);
3048
}
3149

src/material/slider/_slider-theme.scss

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,22 +40,27 @@
4040
// Add values for MDC slider tokens.
4141
@include sass-utils.current-selector-or-root() {
4242
@include mdc-slider-theme.theme($mdc-color-tokens);
43-
@include _slider-ripple-color($theme, primary);
4443
@include token-utils.create-token-values(
4544
tokens-mat-slider.$prefix,
4645
$mat-slider-color-tokens
4746
);
4847

4948
.mat-accent {
49+
@include token-utils.create-token-values(
50+
tokens-mat-slider.$prefix,
51+
tokens-mat-slider.private-get-color-palette-color-tokens($theme, accent),
52+
);
5053
@include mdc-slider-theme.theme(
5154
tokens-mdc-slider.private-get-color-palette-color-tokens($theme, accent));
52-
@include _slider-ripple-color($theme, accent);
5355
}
5456

5557
.mat-warn {
58+
@include token-utils.create-token-values(
59+
tokens-mat-slider.$prefix,
60+
tokens-mat-slider.private-get-color-palette-color-tokens($theme, warn),
61+
);
5662
@include mdc-slider-theme.theme(
5763
tokens-mdc-slider.private-get-color-palette-color-tokens($theme, warn));
58-
@include _slider-ripple-color($theme, warn);
5964
}
6065
}
6166
}
@@ -105,15 +110,6 @@
105110
}
106111
}
107112

108-
// Generated MDC ripple color tokens are not being calculated so needs to be set
109-
@mixin _slider-ripple-color($theme, $palette-name) {
110-
$color: inspection.get-theme-color($theme, $palette-name);
111-
112-
--mat-mdc-slider-ripple-color: #{$color};
113-
--mat-mdc-slider-hover-ripple-color: #{rgba($color, 0.05)};
114-
--mat-mdc-slider-focus-ripple-color: #{rgba($color, 0.2)};
115-
}
116-
117113
@mixin _theme-from-tokens($tokens) {
118114
@if ($tokens != ()) {
119115
@include mdc-slider-theme.theme(map.get($tokens, tokens-mdc-slider.$prefix));

src/material/slider/slider.scss

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -115,23 +115,23 @@ $mat-slider-horizontal-margin: 8px !default;
115115
@include token-utils.create-token-slot(width, value-indicator-width);
116116
@include token-utils.create-token-slot(transform, value-indicator-text-transform);
117117
}
118-
}
119118

120-
// The `.mat-ripple` wrapper here is redundant, but we need it to
121-
// increase the specificity due to how some styles are setup in g3.
122-
.mat-ripple {
123-
// These ripple colors are custom so we have to introduce our own tokens.
124-
.mat-ripple-element {
125-
background-color: var(--mat-mdc-slider-ripple-color, transparent);
126-
}
119+
// The `.mat-ripple` wrapper here is redundant, but we need it to
120+
// increase the specificity due to how some styles are setup in g3.
121+
.mat-ripple {
122+
// These ripple colors are custom so we have to introduce our own tokens.
123+
.mat-ripple-element {
124+
@include token-utils.create-token-slot(background-color, ripple-color);
125+
}
127126

128-
.mat-mdc-slider-hover-ripple {
129-
background-color: var(--mat-mdc-slider-hover-ripple-color, transparent);
130-
}
127+
.mat-mdc-slider-hover-ripple {
128+
@include token-utils.create-token-slot(background-color, hover-state-layer-color);
129+
}
131130

132-
.mat-mdc-slider-focus-ripple,
133-
.mat-mdc-slider-active-ripple {
134-
background-color: var(--mat-mdc-slider-focus-ripple-color, transparent);
131+
.mat-mdc-slider-focus-ripple,
132+
.mat-mdc-slider-active-ripple {
133+
@include token-utils.create-token-slot(background-color, focus-state-layer-color);
134+
}
135135
}
136136
}
137137

0 commit comments

Comments
 (0)