Skip to content

Commit a2045f5

Browse files
asyncLizcopybara-github
authored andcommitted
feat(switch): add disabled track tokens
PiperOrigin-RevId: 530932722
1 parent 61550d2 commit a2045f5

File tree

2 files changed

+28
-43
lines changed

2 files changed

+28
-43
lines changed

switch/lib/_switch.scss

-13
Original file line numberDiff line numberDiff line change
@@ -192,19 +192,6 @@ $_forced-colors-theme: (
192192
(
193193
color-key: disabled-unselected-handle-color,
194194
opacity-key: disabled-unselected-handle-opacity
195-
),
196-
// Disabled Track
197-
(
198-
color-key: disabled-selected-track-color,
199-
opacity-key: disabled-track-opacity
200-
),
201-
(
202-
color-key: disabled-unselected-track-color,
203-
opacity-key: disabled-track-opacity
204-
),
205-
(
206-
color-key: disabled-unselected-track-outline-color,
207-
opacity-key: disabled-track-opacity
208195
)
209196
)
210197
);

switch/lib/_track.scss

+28-30
Original file line numberDiff line numberDiff line change
@@ -20,55 +20,53 @@
2020
display: flex;
2121
justify-content: center;
2222
align-items: center;
23+
}
2324

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;
2637
}
27-
.switch:disabled .track {
38+
39+
.switch:disabled .track::before,
40+
.switch:disabled .track::after {
2841
transition: none;
42+
opacity: var(--_disabled-track-opacity);
43+
}
44+
45+
.switch--selected .track::before {
46+
background-color: var(--_selected-track-color);
2947
}
3048

31-
.switch--selected:hover .track {
49+
.switch--selected:hover .track::before {
3250
background-color: var(--_selected-hover-track-color);
3351
}
3452

35-
.switch--selected:focus-visible .track {
53+
.switch--selected:focus-visible .track::before {
3654
background-color: var(--_selected-focus-track-color);
3755
}
3856

39-
.switch--selected:active .track {
57+
.switch--selected:active .track::before {
4058
background-color: var(--_selected-pressed-track-color);
4159
}
4260

43-
.switch--selected:disabled .track {
61+
.switch--selected:disabled .track::before {
4462
background-color: var(--_disabled-selected-track-color);
4563
}
4664

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 {
6266
background-color: var(--_unselected-track-color);
6367
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);
7270
}
7371

7472
.switch--unselected:hover .track::before {

0 commit comments

Comments
 (0)