|
1 | 1 | @use 'sass:map';
|
2 | 2 |
|
3 | 3 | @use '@material/slider/slider-theme' as mdc-slider-theme;
|
4 |
| -@use '@material/theme/theme-color' as mdc-theme-color; |
5 |
| -@use '@material/typography/typography' as mdc-typography; |
6 |
| -@use '@material/theme/variables' as mdc-theme-variables; |
7 |
| -@use '../core/mdc-helpers/mdc-helpers'; |
8 | 4 | @use '../core/theming/theming';
|
9 | 5 | @use '../core/typography/typography';
|
| 6 | +@use '../core/tokens/token-utils'; |
| 7 | +@use '../core/tokens/m2/mdc/slider' as m2-mdc-slider; |
10 | 8 |
|
11 | 9 |
|
12 | 10 | @mixin color($config-or-theme) {
|
13 | 11 | $config: theming.get-color-config($config-or-theme);
|
| 12 | + $is-dark: map.get($config, is-dark); |
| 13 | + |
| 14 | + $color-tokens: token-utils.resolve-elevation( |
| 15 | + m2-mdc-slider.get-color-tokens($config), |
| 16 | + handle-elevation, |
| 17 | + handle-shadow-color |
| 18 | + ); |
| 19 | + |
| 20 | + // Add values for MDC slider tokens. |
| 21 | + .mat-mdc-slider { |
| 22 | + @include mdc-slider-theme.theme($color-tokens); |
| 23 | + @include _slider-ripple-color(map.get($config, primary)); |
| 24 | + |
| 25 | + // TODO: try to remove this once handle shadow gets added |
| 26 | + // Note that technically we can control this using an `rgba` color in `label-container-color`. |
| 27 | + // We don't do it, because the shapes MDC uses to construct the indicator overlap which causes |
| 28 | + // their color opacities to stack with an `rgba` color. |
| 29 | + --mat-mdc-slider-value-indicator-opacity: #{if($is-dark, 0.9, 0.6)}; |
| 30 | + |
| 31 | + &.mat-accent { |
| 32 | + $accent: map.get($config, accent); |
| 33 | + @include mdc-slider-theme.theme( |
| 34 | + m2-mdc-slider.private-get-color-palette-color-tokens($accent) |
| 35 | + ); |
| 36 | + @include _slider-ripple-color($accent); |
| 37 | + } |
14 | 38 |
|
15 |
| - @include mdc-helpers.using-mdc-theme($config) { |
16 |
| - .mat-mdc-slider { |
17 |
| - $is-dark: map.get($config, is-dark); |
18 |
| - $on-surface: mdc-theme-color.prop-value(on-surface); |
19 |
| - |
20 |
| - @include mdc-slider-theme.theme(( |
21 |
| - label-container-color: if($is-dark, white, black), |
22 |
| - label-label-text-color: if($is-dark, black, white), |
23 |
| - disabled-handle-color: $on-surface, |
24 |
| - disabled-active-track-color: $on-surface, |
25 |
| - disabled-inactive-track-color: $on-surface, |
26 |
| - with-tick-marks-disabled-container-color: $on-surface, |
27 |
| - )); |
28 |
| - |
29 |
| - // Note that technically we can control this using an `rgba` color in `label-container-color`. |
30 |
| - // We don't do it, because the shapes MDC uses to construct the indicator overlap which causes |
31 |
| - // their color opacities to stack with an `rgba` color. |
32 |
| - --mat-mdc-slider-value-indicator-opacity: #{if($is-dark, 0.9, 0.6)}; |
33 |
| - |
34 |
| - &.mat-primary { |
35 |
| - @include _slider-color(primary, on-primary); |
36 |
| - } |
37 |
| - |
38 |
| - &.mat-accent { |
39 |
| - @include _slider-color(secondary, on-secondary); |
40 |
| - } |
41 |
| - |
42 |
| - &.mat-warn { |
43 |
| - @include _slider-color(error, on-error); |
44 |
| - } |
| 39 | + &.mat-warn { |
| 40 | + $warn: map.get($config, warn); |
| 41 | + @include mdc-slider-theme.theme( |
| 42 | + m2-mdc-slider.private-get-color-palette-color-tokens($warn) |
| 43 | + ); |
| 44 | + @include _slider-ripple-color($warn); |
45 | 45 | }
|
46 | 46 | }
|
47 | 47 | }
|
48 | 48 |
|
49 | 49 | @mixin typography($config-or-theme) {
|
50 | 50 | $config: typography.private-typography-to-2018-config(
|
51 | 51 | theming.get-typography-config($config-or-theme));
|
52 |
| - @include mdc-helpers.using-mdc-typography($config) { |
53 |
| - .mat-mdc-slider { |
54 |
| - @include mdc-slider-theme.theme(( |
55 |
| - label-label-text-font: mdc-typography.get-font(subtitle2), |
56 |
| - label-label-text-size: mdc-typography.get-size(subtitle2), |
57 |
| - label-label-text-line-height: mdc-typography.get-line-height(subtitle2), |
58 |
| - label-label-text-tracking: mdc-typography.get-tracking(subtitle2), |
59 |
| - label-label-text-weight: mdc-typography.get-weight(subtitle2), |
60 |
| - )); |
61 |
| - } |
| 52 | + $typography-tokens: m2-mdc-slider.get-typography-tokens($config); |
| 53 | + |
| 54 | + // Add values for MDC slider tokens. |
| 55 | + .mat-mdc-slider { |
| 56 | + @include mdc-slider-theme.theme($typography-tokens); |
62 | 57 | }
|
63 | 58 | }
|
64 | 59 |
|
65 |
| -@mixin density($config-or-theme) {} |
| 60 | +@mixin density($config-or-theme) { |
| 61 | + $density-scale: theming.get-density-config($config-or-theme); |
| 62 | + $density-tokens: m2-mdc-slider.get-density-tokens($density-scale); |
| 63 | + |
| 64 | + // Add values for MDC slider tokens. |
| 65 | + .mat-mdc-slider { |
| 66 | + @include mdc-slider-theme.theme($density-tokens); |
| 67 | + } |
| 68 | +} |
66 | 69 |
|
67 | 70 | @mixin theme($theme-or-color-config) {
|
68 | 71 | $theme: theming.private-legacy-get-theme($theme-or-color-config);
|
|
83 | 86 | }
|
84 | 87 | }
|
85 | 88 |
|
86 |
| -@mixin _slider-color($color, $on-color) { |
87 |
| - $ripple-color: map.get(mdc-theme-variables.$property-values, $color); |
88 |
| - $resolved-color: mdc-theme-color.prop-value($color); |
89 |
| - $resolved-on-color: mdc-theme-color.prop-value($on-color); |
90 |
| - |
91 |
| - @include mdc-slider-theme.theme(( |
92 |
| - handle-color: $resolved-color, |
93 |
| - focus-handle-color: $resolved-color, |
94 |
| - hover-handle-color: $resolved-color, |
95 |
| - active-track-color: $resolved-color, |
96 |
| - inactive-track-color: $resolved-color, |
97 |
| - with-tick-marks-active-container-color: $resolved-on-color, |
98 |
| - with-tick-marks-inactive-container-color: $resolved-color, |
99 |
| - )); |
100 |
| - |
101 |
| - --mat-mdc-slider-ripple-color: #{$ripple-color}; |
102 |
| - --mat-mdc-slider-hover-ripple-color: #{rgba($ripple-color, 0.05)}; |
103 |
| - --mat-mdc-slider-focus-ripple-color: #{rgba($ripple-color, 0.2)}; |
| 89 | +// TODO: add comment why this isn't in _slider.scss file and why this is needed |
| 90 | +@mixin _slider-ripple-color($color-palette) { |
| 91 | + $color: theming.get-color-from-palette($color-palette); |
| 92 | + --mat-mdc-slider-ripple-color: #{$color}; |
| 93 | + --mat-mdc-slider-hover-ripple-color: #{rgba($color, 0.05)}; |
| 94 | + --mat-mdc-slider-focus-ripple-color: #{rgba($color, 0.2)}; |
104 | 95 | }
|
0 commit comments