|
20 | 20 | display: flex;
|
21 | 21 | justify-content: center;
|
22 | 22 | align-items: center;
|
| 23 | + } |
23 | 24 |
|
24 |
| - transition: background-color 67ms linear; |
25 |
| - background-color: var(--_selected-track-color); |
| 25 | + // Separate node for background/outline colors to support opacity changes. |
| 26 | + .track::before { |
| 27 | + content: ''; |
| 28 | + display: flex; |
| 29 | + position: absolute; |
| 30 | + height: 100%; |
| 31 | + width: 100%; |
| 32 | + border-radius: inherit; |
| 33 | + box-sizing: border-box; |
| 34 | + transition-property: opacity, background-color; |
| 35 | + transition-timing-function: linear; |
| 36 | + transition-duration: 67ms; |
26 | 37 | }
|
27 |
| - .switch:disabled .track { |
| 38 | + |
| 39 | + .switch:disabled .track::before, |
| 40 | + .switch:disabled .track::after { |
28 | 41 | transition: none;
|
| 42 | + opacity: var(--_disabled-track-opacity); |
| 43 | + } |
| 44 | + |
| 45 | + .switch--selected .track::before { |
| 46 | + background-color: var(--_selected-track-color); |
29 | 47 | }
|
30 | 48 |
|
31 |
| - .switch--selected:hover .track { |
| 49 | + .switch--selected:hover .track::before { |
32 | 50 | background-color: var(--_selected-hover-track-color);
|
33 | 51 | }
|
34 | 52 |
|
35 |
| - .switch--selected:focus-visible .track { |
| 53 | + .switch--selected:focus-visible .track::before { |
36 | 54 | background-color: var(--_selected-focus-track-color);
|
37 | 55 | }
|
38 | 56 |
|
39 |
| - .switch--selected:active .track { |
| 57 | + .switch--selected:active .track::before { |
40 | 58 | background-color: var(--_selected-pressed-track-color);
|
41 | 59 | }
|
42 | 60 |
|
43 |
| - .switch--selected:disabled .track { |
| 61 | + .switch--selected:disabled .track::before { |
44 | 62 | background-color: var(--_disabled-selected-track-color);
|
45 | 63 | }
|
46 | 64 |
|
47 |
| - .track::before { |
48 |
| - content: ''; |
49 |
| - display: flex; |
50 |
| - position: absolute; |
51 |
| - height: 100%; |
52 |
| - width: 100%; |
53 |
| - border-radius: inherit; |
54 |
| - box-sizing: border-box; |
55 |
| - border-style: solid; |
56 |
| - |
57 |
| - transition-property: opacity, background-color; |
58 |
| - transition-timing-function: linear; |
59 |
| - transition-duration: 67ms; |
60 |
| - |
61 |
| - border-width: var(--_track-outline-width); |
| 65 | + .switch--unselected .track::before { |
62 | 66 | background-color: var(--_unselected-track-color);
|
63 | 67 | border-color: var(--_unselected-track-outline-color);
|
64 |
| - } |
65 |
| - .switch:disabled .track::before { |
66 |
| - transition: none; |
67 |
| - } |
68 |
| - |
69 |
| - .switch--selected .track::before { |
70 |
| - // When selected, turn off ::before |
71 |
| - opacity: 0; |
| 68 | + border-style: solid; |
| 69 | + border-width: var(--_track-outline-width); |
72 | 70 | }
|
73 | 71 |
|
74 | 72 | .switch--unselected:hover .track::before {
|
|
0 commit comments