From 079dd9ae0042fa512e8f072cd9cd520c0a98c84c Mon Sep 17 00:00:00 2001 From: MeAkib Date: Mon, 29 Sep 2025 01:07:48 +0600 Subject: [PATCH] fix(material/radio): add missing disabled styles Adds proper cursor, pointer-events, and high-contrast opacity for `.mdc-radio--disabled`. Fixes #31937 --- src/material/checkbox/_checkbox-common.scss | 2 +- src/material/list/_list-item-hcm-indicator.scss | 2 +- src/material/radio/_radio-common.scss | 15 ++++++++++++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/material/checkbox/_checkbox-common.scss b/src/material/checkbox/_checkbox-common.scss index 1c9a87d4751f..05033731ea5b 100644 --- a/src/material/checkbox/_checkbox-common.scss +++ b/src/material/checkbox/_checkbox-common.scss @@ -65,7 +65,7 @@ $_fallback-size: 40px; pointer-events: none; @include cdk.high-contrast { - opacity: 0.5; + color: GrayText; } } diff --git a/src/material/list/_list-item-hcm-indicator.scss b/src/material/list/_list-item-hcm-indicator.scss index 86fafc2ddccf..2e9c3e9c1e99 100644 --- a/src/material/list/_list-item-hcm-indicator.scss +++ b/src/material/list/_list-item-hcm-indicator.scss @@ -1,6 +1,6 @@ @use '@angular/cdk'; -// Renders a circle indicator when Windows Hich Constrast mode (HCM) is enabled. In some +// Renders a circle indicator when Windows High Contrast mode (HCM) is enabled. In some // situations, such as a selected option, the list item communicates the selected state by changing // its background color. Since that doesn't work in HCM, this mixin provides an alternative by // rendering a circle. diff --git a/src/material/radio/_radio-common.scss b/src/material/radio/_radio-common.scss index 517a2f3cc734..9f9c24ae409b 100644 --- a/src/material/radio/_radio-common.scss +++ b/src/material/radio/_radio-common.scss @@ -77,6 +77,15 @@ $fallbacks: m3-radio.get-tokens(); } } } + + .mdc-radio--disabled { + cursor: default; + pointer-events: none; + + @include cdk.high-contrast { + color: GrayText; + } + } } .mdc-radio__background { @@ -149,7 +158,8 @@ $fallbacks: m3-radio.get-tokens(); width: token-utils.slot(radio-state-layer-size, $fallbacks); height: token-utils.slot(radio-state-layer-size, $fallbacks); - &:checked, &:disabled { + &:checked, + &:disabled { + .mdc-radio__background { transition: _enter-transition(opacity), _enter-transition(transform); @@ -237,8 +247,7 @@ $fallbacks: m3-radio.get-tokens(); pointer-events: auto; // stylelint-disable selector-combinator-space-before - .mdc-radio__native-control:not(:checked) + .mdc-radio__background - > .mdc-radio__outer-circle { + .mdc-radio__native-control:not(:checked) + .mdc-radio__background > .mdc-radio__outer-circle { border-color: token-utils.slot(radio-disabled-unselected-icon-color, $fallbacks); opacity: token-utils.slot(radio-disabled-unselected-icon-opacity, $fallbacks); }