1
+ @use ' @angular/cdk' ;
1
2
@use ' ./m3-radio' ;
2
3
@use ' ../core/tokens/token-utils' ;
3
4
@@ -47,9 +48,14 @@ $fallbacks: m3-radio.get-tokens();
47
48
}
48
49
49
50
& :hover > .mdc-radio__native-control :enabled:checked + .mdc-radio__background {
50
- > .mdc-radio__outer-circle ,
51
+ $token : ' radio-selected-hover-icon-color' ;
52
+
53
+ > .mdc-radio__outer-circle {
54
+ border-color : token-utils .slot ($token , $fallbacks );
55
+ }
56
+
51
57
> .mdc-radio__inner-circle {
52
- border -color : token-utils .slot (radio-selected-hover-icon-color , $fallbacks );
58
+ background -color : token-utils .slot ($token , $fallbacks , currentColor );
53
59
}
54
60
}
55
61
@@ -60,9 +66,14 @@ $fallbacks: m3-radio.get-tokens();
60
66
}
61
67
62
68
& :active > .mdc-radio__native-control :enabled:checked + .mdc-radio__background {
63
- > .mdc-radio__outer-circle ,
69
+ $token : ' radio-selected-pressed-icon-color' ;
70
+
71
+ > .mdc-radio__outer-circle {
72
+ border-color : token-utils .slot ($token , $fallbacks );
73
+ }
74
+
64
75
> .mdc-radio__inner-circle {
65
- border -color : token-utils .slot (radio-selected-pressed-icon-color , $fallbacks );
76
+ background -color : token-utils .slot ($token , $fallbacks , currentColor );
66
77
}
67
78
}
68
79
}
@@ -113,11 +124,16 @@ $fallbacks: m3-radio.get-tokens();
113
124
box-sizing : border-box ;
114
125
width : 100% ;
115
126
height : 100% ;
116
- transform : scale (0 , 0 );
117
- border-width : 10px ;
118
- border-style : solid ;
127
+ transform : scale (0 );
119
128
border-radius : 50% ;
120
- transition : _exit-transition (transform ), _exit-transition (border-color );
129
+ transition : _exit-transition (transform ), _exit-transition (background-color );
130
+
131
+ @include cdk .high-contrast {
132
+ // Override the color, because solid colors don't show up by default in
133
+ // high contrast mode. We need !important here, because the various state
134
+ // selectors are really specific and duplicating them will be brittle.
135
+ background-color : CanvasText !important ;
136
+ }
121
137
}
122
138
123
139
.mdc-radio__native-control {
@@ -142,7 +158,7 @@ $fallbacks: m3-radio.get-tokens();
142
158
}
143
159
144
160
> .mdc-radio__inner-circle {
145
- transition : _enter-transition (transform ), _enter-transition (border -color );
161
+ transition : _enter-transition (transform ), _enter-transition (background -color );
146
162
}
147
163
}
148
164
}
@@ -162,12 +178,18 @@ $fallbacks: m3-radio.get-tokens();
162
178
}
163
179
164
180
+ .mdc-radio__background {
181
+ $color-token : ' radio-disabled-selected-icon-color' ;
182
+ $opacity-token : token-utils .slot (radio-disabled-selected-icon-opacity , $fallbacks );
165
183
cursor : default ;
166
184
167
- > .mdc-radio__inner-circle ,
168
185
> .mdc-radio__outer-circle {
169
- border-color : token-utils .slot (radio-disabled-selected-icon-color , $fallbacks );
170
- opacity : token-utils .slot (radio-disabled-selected-icon-opacity , $fallbacks );
186
+ border-color : token-utils .slot ($color-token , $fallbacks );
187
+ opacity : $opacity-token ;
188
+ }
189
+
190
+ > .mdc-radio__inner-circle {
191
+ background-color : token-utils .slot ($color-token , $fallbacks , currentColor );
192
+ opacity : $opacity-token ;
171
193
}
172
194
}
173
195
}
@@ -178,25 +200,35 @@ $fallbacks: m3-radio.get-tokens();
178
200
}
179
201
180
202
& :checked + .mdc-radio__background {
181
- > .mdc-radio__outer-circle ,
203
+ $token : ' radio-selected-icon-color' ;
204
+
205
+ > .mdc-radio__outer-circle {
206
+ border-color : token-utils .slot ($token , $fallbacks );
207
+ }
208
+
182
209
> .mdc-radio__inner-circle {
183
- border -color : token-utils .slot (radio-selected-icon-color , $fallbacks );
210
+ background -color : token-utils .slot ($token , $fallbacks , currentColor );
184
211
}
185
212
}
186
213
187
214
@if ($is-interactive ) {
188
215
& :focus:checked + .mdc-radio__background {
189
- > .mdc-radio__inner-circle ,
216
+ $token : ' radio-selected-focus-icon-color' ;
217
+
190
218
> .mdc-radio__outer-circle {
191
- border-color : token-utils .slot (radio-selected-focus-icon-color , $fallbacks );
219
+ border-color : token-utils .slot ($token , $fallbacks );
220
+ }
221
+
222
+ > .mdc-radio__inner-circle {
223
+ background-color : token-utils .slot ($token , $fallbacks , currentColor );
192
224
}
193
225
}
194
226
}
195
227
}
196
228
197
229
& :checked + .mdc-radio__background > .mdc-radio__inner-circle {
198
230
transform : scale (0.5 );
199
- transition : _enter-transition (transform ), _enter-transition (border -color );
231
+ transition : _enter-transition (transform ), _enter-transition (background -color );
200
232
}
201
233
}
202
234
@@ -215,10 +247,17 @@ $fallbacks: m3-radio.get-tokens();
215
247
& :hover .mdc-radio__native-control :checked + .mdc-radio__background ,
216
248
.mdc-radio__native-control :checked:focus + .mdc-radio__background ,
217
249
.mdc-radio__native-control + .mdc-radio__background {
218
- > .mdc-radio__inner-circle ,
250
+ $color-token : ' radio-disabled-selected-icon-color' ;
251
+ $opacity-token : token-utils .slot (radio-disabled-selected-icon-opacity , $fallbacks );
252
+
219
253
> .mdc-radio__outer-circle {
220
- border-color : token-utils .slot (radio-disabled-selected-icon-color , $fallbacks );
221
- opacity : token-utils .slot (radio-disabled-selected-icon-opacity , $fallbacks );
254
+ border-color : token-utils .slot ($color-token , $fallbacks );
255
+ opacity : $opacity-token ;
256
+ }
257
+
258
+ > .mdc-radio__inner-circle {
259
+ background-color : token-utils .slot ($color-token , $fallbacks , currentColor );
260
+ opacity : $opacity-token ;
222
261
}
223
262
}
224
263
}
0 commit comments