|
1 | 1 | @use '@material/checkbox/checkbox' as mdc-checkbox; |
2 | 2 | @use '@material/checkbox/checkbox-theme' as mdc-checkbox-theme; |
3 | | -@use '@material/ripple/ripple-theme' as mdc-ripple-theme; |
4 | 3 | @use '@material/form-field' as mdc-form-field; |
5 | 4 | @use '@material/theme/theme-color' as mdc-theme-color; |
6 | 5 | @use '@material/theme/theme'; |
7 | 6 | @use 'sass:map'; |
| 7 | +@use 'sass:color'; |
8 | 8 | @use '../mdc-helpers/mdc-helpers'; |
9 | 9 | @use '../../material/core/typography/typography'; |
10 | 10 | @use '../../material/core/theming/theming'; |
|
13 | 13 |
|
14 | 14 | // Mixin that includes the checkbox theme styles with a given palette. |
15 | 15 | // By default, the MDC checkbox always uses the `secondary` palette. |
16 | | -@mixin private-checkbox-styles-with-color($color) { |
17 | | - @include mdc-checkbox-theme.theme-deprecated( |
18 | | - ( |
19 | | - density-scale: null, |
20 | | - checkmark-color: mdc-theme-color.prop-value(on-#{$color}), |
21 | | - container-checked-color: $color, |
22 | | - container-checked-hover-color: null, |
23 | | - container-disabled-color: rgba(mdc-theme-color.prop-value(on-surface), 0.38), |
24 | | - outline-color: rgba(mdc-theme-color.prop-value(on-surface), 0.54), |
25 | | - outline-hover-color: null, |
26 | | - ripple-color: mdc-theme-color.prop-value(on-surface), |
27 | | - ripple-opacity: mdc-ripple-theme.$dark-ink-opacities, |
28 | | - ripple-checked-color: $color, |
29 | | - ripple-checked-opacity: mdc-ripple-theme.$dark-ink-opacities, |
30 | | - ) |
31 | | - ); |
| 16 | +@mixin private-checkbox-styles-with-color($color, $mdcColor) { |
| 17 | + $on-surface: mdc-theme-color.prop-value(on-surface); |
| 18 | + $border-color: rgba($on-surface, color.opacity(mdc-checkbox-theme.$border-color)); |
| 19 | + $disabled-color: rgba($on-surface, color.opacity(mdc-checkbox-theme.$disabled-color)); |
| 20 | + |
| 21 | + @include mdc-checkbox-theme.theme(( |
| 22 | + selected-checkmark-color: mdc-theme-color.prop-value(on-#{$mdcColor}), |
| 23 | + |
| 24 | + selected-focus-icon-color: $color, |
| 25 | + selected-hover-icon-color: $color, |
| 26 | + selected-hover-state-layer-color: $color, |
| 27 | + selected-icon-color: $color, |
| 28 | + selected-pressed-icon-color: $color, |
| 29 | + unselected-focus-icon-color: $color, |
| 30 | + unselected-hover-icon-color: $color, |
| 31 | + |
| 32 | + selected-focus-state-layer-color: $on-surface, |
| 33 | + selected-pressed-state-layer-color: $on-surface, |
| 34 | + unselected-focus-state-layer-color: $on-surface, |
| 35 | + unselected-hover-state-layer-color: $on-surface, |
| 36 | + unselected-pressed-state-layer-color: $on-surface, |
| 37 | + |
| 38 | + disabled-selected-icon-color: $disabled-color, |
| 39 | + disabled-unselected-icon-color: $disabled-color, |
| 40 | + |
| 41 | + unselected-icon-color: $border-color, |
| 42 | + unselected-pressed-icon-color: $border-color, |
| 43 | + )); |
32 | 44 | } |
33 | 45 |
|
34 | 46 | // Apply ripple colors to the MatRipple element and the MDC ripple element when the |
|
55 | 67 | $accent: theming.get-color-from-palette(map.get($config, accent)); |
56 | 68 | $warn: theming.get-color-from-palette(map.get($config, warn)); |
57 | 69 |
|
58 | | - // Save original values of MDC global variables. We need to save these so we can restore the |
59 | | - // variables to their original values and prevent unintended side effects from using this mixin. |
60 | | - $orig-border-color: mdc-checkbox-theme.$border-color; |
61 | | - $orig-disabled-color: mdc-checkbox-theme.$disabled-color; |
62 | | - |
63 | 70 | @include mdc-helpers.mat-using-mdc-theme($config) { |
64 | | - mdc-checkbox-theme.$border-color: rgba( |
65 | | - mdc-theme-color.prop-value(on-surface), |
66 | | - 0.54 |
67 | | - ); |
68 | | - mdc-checkbox-theme.$disabled-color: rgba( |
69 | | - mdc-theme-color.prop-value(on-surface), |
70 | | - 0.26 |
71 | | - ); |
72 | | - |
73 | 71 | .mat-mdc-checkbox { |
74 | | - @include private-checkbox-styles-with-color(primary); |
75 | 72 | @include mdc-form-field.core-styles($query: mdc-helpers.$mat-theme-styles-query); |
76 | 73 | @include ripple-theme.theme(( |
77 | 74 | foreground: ( |
|
87 | 84 | // class for accent and warn style, and applying the appropriate overrides below. Since we |
88 | 85 | // don't use MDC's ripple, we also need to set the color for our replacement ripple. |
89 | 86 | &.mat-primary { |
90 | | - @include private-checkbox-styles-with-color(primary); |
| 87 | + @include private-checkbox-styles-with-color($primary, primary); |
91 | 88 | @include _selected-ripple-colors($primary, primary); |
92 | 89 | } |
93 | 90 |
|
94 | 91 | &.mat-accent { |
95 | | - @include private-checkbox-styles-with-color(secondary); |
| 92 | + @include private-checkbox-styles-with-color($accent, secondary); |
96 | 93 | @include _selected-ripple-colors($accent, secondary); |
97 | 94 | } |
98 | 95 |
|
99 | 96 | &.mat-warn { |
100 | | - @include private-checkbox-styles-with-color(error); |
| 97 | + @include private-checkbox-styles-with-color($warn, error); |
101 | 98 | @include _selected-ripple-colors($warn, error); |
102 | 99 | } |
103 | 100 | } |
104 | 101 | } |
105 | | - |
106 | | - // Restore original values of MDC global variables. |
107 | | - mdc-checkbox-theme.$border-color: $orig-border-color; |
108 | | - mdc-checkbox-theme.$disabled-color: $orig-disabled-color; |
109 | 102 | } |
110 | 103 |
|
111 | 104 | @mixin typography($config-or-theme) { |
|
0 commit comments