|
5 | 5 | @import '@material/theme/functions.import'; |
6 | 6 | @import '../mdc-helpers/mdc-helpers'; |
7 | 7 |
|
| 8 | +// Mixin that includes the checkbox theme styles with a given palette. |
| 9 | +// By default, the MDC checkbox always uses the `secondary` palette. |
| 10 | +@mixin _mdc-checkbox-styles-with-color($color) { |
| 11 | + $orig-mdc-checkbox-mark-color: $mdc-checkbox-mark-color; |
| 12 | + $mdc-checkbox-mark-color: mdc-theme-prop-value(on-#{$color}) !global; |
| 13 | + $orig-mdc-checkbox-baseline-theme-color: $mdc-checkbox-baseline-theme-color; |
| 14 | + $mdc-checkbox-baseline-theme-color: $color !global; |
| 15 | + |
| 16 | + @include mdc-checkbox-without-ripple($query: $mat-theme-styles-query); |
| 17 | + |
| 18 | + $mdc-checkbox-mark-color: $orig-mdc-checkbox-mark-color !global; |
| 19 | + $mdc-checkbox-baseline-theme-color: $orig-mdc-checkbox-baseline-theme-color !global; |
| 20 | +} |
| 21 | + |
8 | 22 | @mixin mat-mdc-checkbox-color($config-or-theme) { |
9 | 23 | $config: mat-get-color-config($config-or-theme); |
10 | 24 | $primary: mat-color(map-get($config, primary)); |
|
13 | 27 |
|
14 | 28 | // Save original values of MDC global variables. We need to save these so we can restore the |
15 | 29 | // variables to their original values and prevent unintended side effects from using this mixin. |
16 | | - $orig-mdc-checkbox-mark-color: $mdc-checkbox-mark-color; |
17 | | - $orig-mdc-checkbox-baseline-theme-color: $mdc-checkbox-baseline-theme-color; |
18 | 30 | $orig-mdc-checkbox-border-color: $mdc-checkbox-border-color; |
19 | 31 | $orig-mdc-checkbox-disabled-color: $mdc-checkbox-disabled-color; |
20 | 32 |
|
21 | 33 | @include mat-using-mdc-theme($config) { |
22 | | - $mdc-checkbox-mark-color: mdc-theme-prop-value(on-primary) !global; |
23 | | - $mdc-checkbox-baseline-theme-color: primary !global; |
24 | 34 | $mdc-checkbox-border-color: rgba(mdc-theme-prop-value(on-surface), 0.54) !global; |
25 | 35 | $mdc-checkbox-disabled-color: rgba(mdc-theme-prop-value(on-surface), 0.26) !global; |
26 | 36 |
|
27 | | - @include mdc-checkbox-without-ripple($query: $mat-theme-styles-query); |
| 37 | + @include _mdc-checkbox-styles-with-color(primary); |
28 | 38 | @include mdc-form-field-core-styles($query: $mat-theme-styles-query); |
29 | 39 |
|
30 | 40 | // MDC's checkbox doesn't support a `color` property. We add support for it by adding a CSS |
|
41 | 51 | } |
42 | 52 |
|
43 | 53 | &.mat-accent { |
44 | | - $mdc-checkbox-mark-color: mdc-theme-prop-value(on-secondary) !global; |
45 | | - $mdc-checkbox-baseline-theme-color: secondary !global; |
46 | | - |
47 | | - @include mdc-checkbox-without-ripple($query: $mat-theme-styles-query); |
| 54 | + @include _mdc-checkbox-styles-with-color(secondary); |
48 | 55 |
|
49 | 56 | .mdc-checkbox--selected ~ .mat-mdc-checkbox-ripple .mat-ripple-element { |
50 | 57 | background: $accent; |
51 | 58 | } |
52 | 59 | } |
53 | 60 |
|
54 | 61 | &.mat-warn { |
55 | | - $mdc-checkbox-mark-color: mdc-theme-prop-value(on-error) !global; |
56 | | - $mdc-checkbox-baseline-theme-color: error !global; |
57 | | - |
58 | | - @include mdc-checkbox-without-ripple($query: $mat-theme-styles-query); |
| 62 | + @include _mdc-checkbox-styles-with-color(error); |
59 | 63 |
|
60 | 64 | .mdc-checkbox--selected ~ .mat-mdc-checkbox-ripple .mat-ripple-element { |
61 | 65 | background: $warn; |
|
65 | 69 | } |
66 | 70 |
|
67 | 71 | // Restore original values of MDC global variables. |
68 | | - $mdc-checkbox-mark-color: $orig-mdc-checkbox-mark-color !global; |
69 | | - $mdc-checkbox-baseline-theme-color: $orig-mdc-checkbox-baseline-theme-color !global; |
70 | 72 | $mdc-checkbox-border-color: $orig-mdc-checkbox-border-color !global; |
71 | 73 | $mdc-checkbox-disabled-color: $orig-mdc-checkbox-disabled-color !global; |
72 | 74 | } |
|
0 commit comments