diff --git a/button/internal/_elevation.scss b/button/internal/_elevation.scss
index 1899999e44..53dd28f7e2 100644
--- a/button/internal/_elevation.scss
+++ b/button/internal/_elevation.scss
@@ -20,7 +20,7 @@ $_md-sys-motion: tokens.md-sys-motion-values();
transition-timing-function: map.get($_md-sys-motion, 'emphasized-easing');
}
- :host([disabled]) md-elevation {
+ :host(:disabled) md-elevation {
transition: none;
}
@@ -59,7 +59,7 @@ $_md-sys-motion: tokens.md-sys-motion-values();
);
}
- :host([disabled]) md-elevation {
+ :host(:disabled) md-elevation {
@include elevation.theme(
(
'level': var(--_disabled-container-elevation),
diff --git a/button/internal/_icon.scss b/button/internal/_icon.scss
index e2156e5be5..f03eceb05c 100644
--- a/button/internal/_icon.scss
+++ b/button/internal/_icon.scss
@@ -31,7 +31,7 @@
color: var(--_pressed-icon-color);
}
- :host([disabled]) ::slotted([slot='icon']) {
+ :host(:disabled) ::slotted([slot='icon']) {
color: var(--_disabled-icon-color);
opacity: var(--_disabled-icon-opacity);
}
diff --git a/button/internal/_outlined-button.scss b/button/internal/_outlined-button.scss
index 0cf7e0bcc9..3719764320 100644
--- a/button/internal/_outlined-button.scss
+++ b/button/internal/_outlined-button.scss
@@ -57,20 +57,20 @@
border-color: var(--_pressed-outline-color);
}
- :host([disabled]) .outline {
+ :host(:disabled) .outline {
border-color: var(--_disabled-outline-color);
opacity: var(--_disabled-outline-opacity);
}
@media (forced-colors: active) {
- :host([disabled]) .background {
+ :host(:disabled) .background {
// Only outlined buttons change their border when disabled to distinguish
// them from other buttons that add a border for increased visibility in
// HCM.
border-color: GrayText;
}
- :host([disabled]) .outline {
+ :host(:disabled) .outline {
opacity: 1;
}
}
diff --git a/button/internal/_shared.scss b/button/internal/_shared.scss
index 40e6b88899..af74a23007 100644
--- a/button/internal/_shared.scss
+++ b/button/internal/_shared.scss
@@ -71,7 +71,7 @@
);
}
- :host([disabled]) {
+ :host(:disabled) {
cursor: default;
pointer-events: none;
}
@@ -139,12 +139,12 @@
text-overflow: inherit;
}
- :host([disabled]) .label {
+ :host(:disabled) .label {
color: var(--_disabled-label-text-color);
opacity: var(--_disabled-label-text-opacity);
}
- :host([disabled]) .background {
+ :host(:disabled) .background {
background-color: var(--_disabled-container-color);
opacity: var(--_disabled-container-opacity);
}
@@ -157,7 +157,7 @@
border: 1px solid CanvasText;
}
- :host([disabled]) {
+ :host(:disabled) {
--_disabled-icon-color: GrayText;
--_disabled-icon-opacity: 1;
--_disabled-container-opacity: 1;
diff --git a/checkbox/internal/_checkbox.scss b/checkbox/internal/_checkbox.scss
index 71d039de71..1957320666 100644
--- a/checkbox/internal/_checkbox.scss
+++ b/checkbox/internal/_checkbox.scss
@@ -56,7 +56,7 @@ $_checkmark-bottom-left: 7px, -14px;
cursor: pointer;
}
- :host([disabled]) {
+ :host(:disabled) {
cursor: default;
}
diff --git a/checkbox/internal/checkbox.ts b/checkbox/internal/checkbox.ts
index ce4942af06..82af4a411c 100644
--- a/checkbox/internal/checkbox.ts
+++ b/checkbox/internal/checkbox.ts
@@ -118,15 +118,20 @@ export class Checkbox extends checkboxBaseClass {
super.update(changed);
}
+ private get isControlDisabled() {
+ return this.disabled || this.matches(':disabled');
+ }
+
protected override render() {
const prevNone = !this.prevChecked && !this.prevIndeterminate;
const prevChecked = this.prevChecked && !this.prevIndeterminate;
const prevIndeterminate = this.prevIndeterminate;
const isChecked = this.checked && !this.indeterminate;
const isIndeterminate = this.indeterminate;
+ const disabled = this.isControlDisabled;
const containerClasses = classMap({
- 'disabled': this.disabled,
+ 'disabled': disabled,
'selected': isChecked || isIndeterminate,
'unselected': !isChecked && !isIndeterminate,
'checked': isChecked,
@@ -149,7 +154,7 @@ export class Checkbox extends checkboxBaseClass {
aria-checked=${isIndeterminate ? 'mixed' : nothing}
aria-label=${ariaLabel || nothing}
aria-invalid=${ariaInvalid || nothing}
- ?disabled=${this.disabled}
+ ?disabled=${disabled}
?required=${this.required}
.indeterminate=${this.indeterminate}
.checked=${this.checked}
@@ -159,7 +164,7 @@ export class Checkbox extends checkboxBaseClass {
-
+