Skip to content

Commit 130afed

Browse files
authored
fix(material/slide-toggle): m3 slide-toggle track (#28539)
* fix(material/slide-toggle): m3 slide-toggle track * fixup! fix(material/slide-toggle): m3 slide-toggle track
1 parent b6e0b20 commit 130afed

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

src/material-experimental/theming/_custom-tokens.scss

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1171,6 +1171,16 @@
11711171
unselected-handle-horizontal-margin: 0 8px,
11721172
unselected-with-icon-handle-horizontal-margin: 0 4px,
11731173
unselected-pressed-handle-horizontal-margin: 0 2px,
1174+
// The hidden and visible track represent whichever track is visible or
1175+
// hidden in the ui. This could be the .mdc-switch__track :before or
1176+
// :after depending on whether the switch is selected or unselected.
1177+
//
1178+
// The m2 slide-toggle uses transforms to hide & show the tracks while
1179+
// the m3 slide-toggle uses opacity.
1180+
visible-track-opacity: 1,
1181+
hidden-track-opacity: 0,
1182+
visible-track-transition: opacity 75ms,
1183+
hidden-track-transition: opacity 75ms,
11741184
), ());
11751185
}
11761186

src/material/core/tokens/m2/mat/_switch.scss

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,18 @@ $prefix: (mat, switch);
1919
unselected-handle-horizontal-margin: 0,
2020
unselected-with-icon-handle-horizontal-margin: 0,
2121
unselected-pressed-handle-horizontal-margin: 0,
22+
23+
// The hidden and visible track represent whichever track is visible or
24+
// hidden in the ui. This could be the .mdc-switch__track :before or
25+
// :after depending on whether the switch is selected or unselected.
26+
//
27+
// The m2 slide-toggle uses transforms to hide & show the tracks while
28+
// the m3 slide-toggle uses opacity.
29+
30+
visible-track-opacity: 1,
31+
hidden-track-opacity: 1,
32+
visible-track-transition: transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1),
33+
hidden-track-transition: transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1),
2234
);
2335
}
2436

src/material/slide-toggle/slide-toggle.scss

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,37 @@
127127
margin 75ms cubic-bezier(0.4, 0, 0.2, 1);
128128
}
129129

130+
// The hidden and visible track represent whichever track is visible or
131+
// hidden in the ui. This could be the .mdc-switch__track :before or
132+
// :after depending on whether the switch is selected or unselected.
133+
//
134+
// The m2 slide-toggle uses transforms to hide & show the tracks while
135+
// the m3 slide-toggle uses opacity.
136+
137+
@include token-utils.use-tokens(m2-mat-switch.$prefix, m2-mat-switch.get-token-slots()) {
138+
.mdc-switch--selected .mdc-switch__track {
139+
&::before {
140+
@include token-utils.create-token-slot(opacity, hidden-track-opacity);
141+
@include token-utils.create-token-slot(transition, hidden-track-transition);
142+
}
143+
&::after {
144+
@include token-utils.create-token-slot(opacity, visible-track-opacity);
145+
@include token-utils.create-token-slot(transition, visible-track-transition);
146+
}
147+
}
148+
149+
.mdc-switch--unselected .mdc-switch__track {
150+
&::before {
151+
@include token-utils.create-token-slot(opacity, visible-track-opacity);
152+
@include token-utils.create-token-slot(transition, visible-track-transition);
153+
}
154+
&::after {
155+
@include token-utils.create-token-slot(opacity, hidden-track-opacity);
156+
@include token-utils.create-token-slot(transition, hidden-track-transition);
157+
}
158+
}
159+
}
160+
130161
@include token-utils.use-tokens(m2-mat-switch.$prefix, m2-mat-switch.get-token-slots()) {
131162
.mat-mdc-slide-toggle {
132163
.mdc-switch--unselected .mdc-switch__handle {

0 commit comments

Comments
 (0)