66
77$_mdc-slots : (tokens-mdc-switch .$prefix , tokens-mdc-switch .get-token-slots ());
88$_mat-slots : (tokens-mat-switch .$prefix , tokens-mat-switch .get-token-slots ());
9+ $_interactive-disabled-selector : ' .mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled' ;
910
1011.mdc-switch {
1112 align-items : center ;
@@ -20,11 +21,15 @@ $_mat-slots: (tokens-mat-switch.$prefix, tokens-mat-switch.get-token-slots());
2021 padding : 0 ;
2122 position : relative ;
2223
23- & : disabled {
24+ & .mdc-switch-- disabled {
2425 cursor : default ;
2526 pointer-events : none ;
2627 }
2728
29+ & .mat-mdc-slide-toggle-disabled-interactive {
30+ pointer-events : auto ;
31+ }
32+
2833 @include token-utils .use-tokens ($_mdc-slots ...) {
2934 @include token-utils .create-token-slot (width , track- width);
3035 }
@@ -39,7 +44,7 @@ $_mat-slots: (tokens-mat-switch.$prefix, tokens-mat-switch.get-token-slots());
3944 @include token-utils .create-token-slot (height , track- height);
4045 @include token-utils .create-token-slot (border-radius , track- shape);
4146
42- .mdc-switch : disabled & {
47+ .mdc-switch-- disabled.mdc-switch & {
4348 @include token-utils .create-token-slot (opacity , disabled- track- opacity);
4449 }
4550 }
@@ -117,7 +122,10 @@ $_mat-slots: (tokens-mat-switch.$prefix, tokens-mat-switch.get-token-slots());
117122 @include token-utils .create-token-slot (background , unselected- pressed- track- color);
118123 }
119124
120- .mdc-switch :disabled & {
125+ #{$_interactive-disabled-selector } :hover:not (:focus ):not (:active ) & ,
126+ #{$_interactive-disabled-selector } :focus:not (:active ) & ,
127+ #{$_interactive-disabled-selector } :active & ,
128+ .mdc-switch.mdc-switch--disabled & {
121129 @include token-utils .create-token-slot (background , disabled- unselected- track- color);
122130 }
123131 }
@@ -161,7 +169,10 @@ $_mat-slots: (tokens-mat-switch.$prefix, tokens-mat-switch.get-token-slots());
161169 @include token-utils .create-token-slot (background , selected- pressed- track- color);
162170 }
163171
164- .mdc-switch :disabled & {
172+ #{$_interactive-disabled-selector } :hover:not (:focus ):not (:active ) & ,
173+ #{$_interactive-disabled-selector } :focus:not (:active ) & ,
174+ #{$_interactive-disabled-selector } :active & ,
175+ .mdc-switch.mdc-switch--disabled & {
165176 @include token-utils .create-token-slot (background , disabled- selected- track- color);
166177 }
167178 }
@@ -310,7 +321,10 @@ $_mat-slots: (tokens-mat-switch.$prefix, tokens-mat-switch.get-token-slots());
310321 @include token-utils .create-token-slot (background , selected- pressed- handle- color);
311322 }
312323
313- .mdc-switch--selected :disabled & {
324+ #{$_interactive-disabled-selector } .mdc-switch--selected :hover:not (:focus ):not (:active ) & ,
325+ #{$_interactive-disabled-selector } .mdc-switch--selected :focus:not (:active ) & ,
326+ #{$_interactive-disabled-selector } .mdc-switch--selected :active & ,
327+ .mdc-switch--selected.mdc-switch--disabled & {
314328 @include token-utils .create-token-slot (background , disabled- selected- handle- color);
315329 }
316330
@@ -330,7 +344,7 @@ $_mat-slots: (tokens-mat-switch.$prefix, tokens-mat-switch.get-token-slots());
330344 @include token-utils .create-token-slot (background , unselected- pressed- handle- color);
331345 }
332346
333- .mdc-switch--unselected : disabled & {
347+ .mdc-switch--unselected.mdc-switch-- disabled & {
334348 @include token-utils .create-token-slot (background , disabled- unselected- handle- color);
335349 }
336350 }
@@ -354,7 +368,10 @@ $_mat-slots: (tokens-mat-switch.$prefix, tokens-mat-switch.get-token-slots());
354368 @include token-utils .create-token-slot (box-shadow , handle- elevation- shadow);
355369 }
356370
357- .mdc-switch :disabled & {
371+ #{$_interactive-disabled-selector } :hover:not (:focus ):not (:active ) & ,
372+ #{$_interactive-disabled-selector } :focus:not (:active ) & ,
373+ #{$_interactive-disabled-selector } :active & ,
374+ .mdc-switch.mdc-switch--disabled & {
358375 @include token-utils .create-token-slot (box-shadow , disabled- handle- elevation- shadow);
359376 }
360377 }
@@ -376,10 +393,14 @@ $_mat-slots: (tokens-mat-switch.$prefix, tokens-mat-switch.get-token-slots());
376393 content : ' ' ;
377394 opacity : 0 ;
378395
379- .mdc-switch : disabled & {
396+ .mdc-switch-- disabled & {
380397 display : none ;
381398 }
382399
400+ .mat-mdc-slide-toggle-disabled-interactive & {
401+ display : block ;
402+ }
403+
383404 .mdc-switch :hover & {
384405 opacity : 0.04 ;
385406 transition : 75ms opacity cubic-bezier (0 , 0 , 0.2 , 1 );
@@ -391,6 +412,9 @@ $_mat-slots: (tokens-mat-switch.$prefix, tokens-mat-switch.get-token-slots());
391412 }
392413
393414 @include token-utils .use-tokens ($_mdc-slots ...) {
415+ #{$_interactive-disabled-selector } :enabled:focus & ,
416+ #{$_interactive-disabled-selector } :enabled:active & ,
417+ #{$_interactive-disabled-selector } :enabled:hover:not (:focus ) & ,
394418 .mdc-switch--unselected :enabled:hover:not (:focus ) & {
395419 @include token-utils .create-token-slot (background , unselected- hover- state- layer- color);
396420 }
@@ -429,11 +453,11 @@ $_mat-slots: (tokens-mat-switch.$prefix, tokens-mat-switch.get-token-slots());
429453 z-index : 1 ;
430454
431455 @include token-utils .use-tokens ($_mdc-slots ...) {
432- .mdc-switch--unselected : disabled & {
456+ .mdc-switch--disabled.mdc-switch--unselected & {
433457 @include token-utils .create-token-slot (opacity , disabled- unselected- icon- opacity);
434458 }
435459
436- .mdc-switch--selected : disabled & {
460+ .mdc-switch--disabled.mdc-switch--selected & {
437461 @include token-utils .create-token-slot (opacity , disabled- selected- icon- opacity);
438462 }
439463 }
@@ -456,7 +480,7 @@ $_mat-slots: (tokens-mat-switch.$prefix, tokens-mat-switch.get-token-slots());
456480 @include token-utils .create-token-slot (fill , unselected- icon- color);
457481 }
458482
459- .mdc-switch--unselected : disabled & {
483+ .mdc-switch--unselected.mdc-switch-- disabled & {
460484 @include token-utils .create-token-slot (fill , disabled- unselected- icon- color);
461485 }
462486
@@ -466,7 +490,7 @@ $_mat-slots: (tokens-mat-switch.$prefix, tokens-mat-switch.get-token-slots());
466490 @include token-utils .create-token-slot (fill , selected- icon- color);
467491 }
468492
469- .mdc-switch--selected : disabled & {
493+ .mdc-switch--selected.mdc-switch-- disabled & {
470494 @include token-utils .create-token-slot (fill , disabled- selected- icon- color);
471495 }
472496 }
0 commit comments