Skip to content

Commit 21fb3f7

Browse files
committed
fix(material/button): consistent disabled interactive fab
close #32146
1 parent 732a0d7 commit 21fb3f7

File tree

6 files changed

+69
-37
lines changed

6 files changed

+69
-37
lines changed

src/components-examples/material/button/button-disabled-interactive/button-disabled-interactive-example.html

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,29 @@
88
matButton="elevated"
99
disabled
1010
matTooltip="This is a tooltip!">Default disabled button</button>
11+
12+
<button matFab disabled disabledInteractive matTooltip="This is a tooltip!">
13+
<mat-icon>add</mat-icon>
14+
</button>
15+
16+
<button matFab disabled matTooltip="This is a tooltip!">
17+
<mat-icon>add</mat-icon>
18+
</button>
19+
20+
<button matFab disabled disabledInteractive extended matTooltip="This is a tooltip!">
21+
<mat-icon>add</mat-icon>
22+
Disabled FAB allowing interactivity
23+
</button>
24+
25+
<button matFab disabled extended matTooltip="This is a tooltip!">
26+
<mat-icon>add</mat-icon>
27+
Default disabled FAB
28+
</button>
29+
30+
<button matMiniFab disabled disabledInteractive matTooltip="This is a tooltip!">
31+
<mat-icon>add</mat-icon>
32+
</button>
33+
34+
<button matMiniFab disabled matTooltip="This is a tooltip!">
35+
<mat-icon>add</mat-icon>
36+
</button>
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {Component} from '@angular/core';
2-
import {MatButton} from '@angular/material/button';
2+
import {MatButton, MatFabButton, MatMiniFabButton} from '@angular/material/button';
3+
import {MatIcon} from '@angular/material/icon';
34
import {MatTooltip} from '@angular/material/tooltip';
45

56
/**
@@ -9,6 +10,6 @@ import {MatTooltip} from '@angular/material/tooltip';
910
selector: 'button-disabled-interactive-example',
1011
templateUrl: 'button-disabled-interactive-example.html',
1112
styleUrl: 'button-disabled-interactive-example.css',
12-
imports: [MatButton, MatTooltip],
13+
imports: [MatButton, MatFabButton, MatMiniFabButton, MatIcon, MatTooltip],
1314
})
1415
export class ButtonDisabledInteractiveExample {}

src/material/button/_m2-fab.scss

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,43 +20,41 @@
2020

2121
@return (
2222
base: (
23-
fab-container-elevation-shadow: elevation.get-box-shadow(6),
2423
fab-container-shape: 50%,
2524
fab-touch-target-size: $touch-target-size,
26-
fab-extended-container-elevation-shadow: elevation.get-box-shadow(6),
2725
fab-extended-container-height: 48px,
2826
fab-extended-container-shape: 24px,
29-
fab-extended-focus-container-elevation-shadow: elevation.get-box-shadow(8),
30-
fab-extended-hover-container-elevation-shadow: elevation.get-box-shadow(8),
31-
fab-extended-pressed-container-elevation-shadow: elevation.get-box-shadow(12),
32-
fab-focus-container-elevation-shadow: elevation.get-box-shadow(8),
33-
fab-hover-container-elevation-shadow: elevation.get-box-shadow(8),
34-
fab-pressed-container-elevation-shadow: elevation.get-box-shadow(12),
35-
fab-small-container-elevation-shadow: elevation.get-box-shadow(6),
3627
fab-small-container-shape: 50%,
3728
fab-small-touch-target-size: $touch-target-size,
38-
fab-small-focus-container-elevation-shadow: elevation.get-box-shadow(8),
39-
fab-small-hover-container-elevation-shadow: elevation.get-box-shadow(8),
40-
fab-small-pressed-container-elevation-shadow: elevation.get-box-shadow(12),
4129
),
4230
color: (
4331
fab-container-color: map.get($system, surface),
44-
fab-disabled-state-container-color: $disabled-container,
45-
fab-disabled-state-foreground-color: $disabled,
46-
fab-disabled-state-layer-color: map.get($system, on-surface-variant),
32+
fab-container-elevation-shadow: elevation.get-box-shadow(6),
4733
fab-focus-state-layer-opacity: map.get($system, focus-state-layer-opacity),
4834
fab-foreground-color: map.get($system, on-surface),
4935
fab-hover-state-layer-opacity: map.get($system, hover-state-layer-opacity),
5036
fab-pressed-state-layer-opacity: map.get($system, pressed-state-layer-opacity),
37+
fab-disabled-container-color: $disabled-container,
38+
fab-disabled-container-elevation-shadow: elevation.get-box-shadow(0),
39+
fab-disabled-label-text-color: $disabled,
40+
fab-disabled-state-layer-color: map.get($system, on-surface-variant),
41+
fab-extended-container-elevation-shadow: elevation.get-box-shadow(6),
42+
fab-extended-focus-container-elevation-shadow: elevation.get-box-shadow(8),
43+
fab-extended-hover-container-elevation-shadow: elevation.get-box-shadow(8),
44+
fab-extended-pressed-container-elevation-shadow: elevation.get-box-shadow(12),
45+
fab-focus-container-elevation-shadow: elevation.get-box-shadow(8),
46+
fab-hover-container-elevation-shadow: elevation.get-box-shadow(8),
47+
fab-pressed-container-elevation-shadow: elevation.get-box-shadow(12),
5148
fab-ripple-color: m3-utils.color-with-opacity(
5249
map.get($system, on-surface), map.get($system, pressed-state-layer-opacity)),
5350
fab-small-container-color: map.get($system, surface),
54-
fab-small-disabled-state-container-color: $disabled-container,
55-
fab-small-disabled-state-foreground-color: $disabled,
56-
fab-small-disabled-state-layer-color: map.get($system, on-surface-variant),
51+
fab-small-container-elevation-shadow: elevation.get-box-shadow(6),
52+
fab-small-focus-container-elevation-shadow: elevation.get-box-shadow(8),
5753
fab-small-focus-state-layer-opacity: map.get($system, focus-state-layer-opacity),
5854
fab-small-foreground-color: map.get($system, on-surface),
55+
fab-small-hover-container-elevation-shadow: elevation.get-box-shadow(8),
5956
fab-small-hover-state-layer-opacity: map.get($system, hover-state-layer-opacity),
57+
fab-small-pressed-container-elevation-shadow: elevation.get-box-shadow(12),
6058
fab-small-pressed-state-layer-opacity: map.get($system, pressed-state-layer-opacity),
6159
fab-small-ripple-color: m3-utils.color-with-opacity(
6260
map.get($system, on-surface), map.get($system, pressed-state-layer-opacity)),

src/material/button/_m3-fab.scss

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@
2626
color: (
2727
fab-container-color: map.get($system, primary-container),
2828
fab-container-elevation-shadow: elevation.get-box-shadow(map.get($system, level3)),
29-
fab-disabled-state-container-color:
30-
m3-utils.color-with-opacity(map.get($system, on-surface), 12%),
31-
fab-disabled-state-foreground-color:
32-
m3-utils.color-with-opacity(map.get($system, on-surface), 38%),
3329
fab-extended-container-elevation-shadow: elevation.get-box-shadow(map.get($system, level3)),
3430
fab-extended-focus-container-elevation-shadow:
3531
elevation.get-box-shadow(map.get($system, level3)),
@@ -41,16 +37,19 @@
4137
fab-foreground-color: map.get($system, on-primary-container),
4238
fab-hover-container-elevation-shadow: elevation.get-box-shadow(map.get($system, level4)),
4339
fab-hover-state-layer-opacity: map.get($system, hover-state-layer-opacity),
44-
fab-pressed-container-elevation-shadow: elevation.get-box-shadow(map.get($system, level3)),
4540
fab-pressed-state-layer-opacity: map.get($system, pressed-state-layer-opacity),
41+
fab-disabled-container-color:
42+
m3-utils.color-with-opacity(map.get($system, on-surface), 12%),
43+
fab-disabled-container-elevation-shadow:
44+
elevation.get-box-shadow(map.get($system, level0)),
45+
fab-disabled-label-text-color:
46+
m3-utils.color-with-opacity(map.get($system, on-surface), 38%),
47+
fab-disabled-state-layer-color: map.get($system, on-surface-variant),
48+
fab-pressed-container-elevation-shadow: elevation.get-box-shadow(map.get($system, level3)),
4649
fab-ripple-color: m3-utils.color-with-opacity(
4750
map.get($system, on-primary-container), map.get($system, pressed-state-layer-opacity)),
4851
fab-small-container-color: map.get($system, primary-container),
4952
fab-small-container-elevation-shadow: elevation.get-box-shadow(map.get($system, level3)),
50-
fab-small-disabled-state-container-color:
51-
m3-utils.color-with-opacity(map.get($system, on-surface), 12%),
52-
fab-small-disabled-state-foreground-color:
53-
m3-utils.color-with-opacity(map.get($system, on-surface), 38%),
5453
fab-small-focus-container-elevation-shadow:
5554
elevation.get-box-shadow(map.get($system, level3)),
5655
fab-small-focus-state-layer-opacity: map.get($system, focus-state-layer-opacity),
@@ -65,8 +64,6 @@
6564
map.get($system, on-primary-container), map.get($system, pressed-state-layer-opacity)),
6665
fab-small-state-layer-color: map.get($system, on-primary-container),
6766
fab-state-layer-color: map.get($system, on-primary-container),
68-
fab-disabled-state-layer-color: null,
69-
fab-small-disabled-state-layer-color: null,
7067
),
7168
typography: (
7269
fab-extended-label-text-font: map.get($system, label-large-font),

src/material/button/fab.scss

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,13 @@ $fallbacks: m3-fab.get-tokens();
116116
}
117117

118118
@include button-base.mat-private-button-disabled {
119-
color: token-utils.slot(fab-disabled-state-foreground-color, $fallbacks);
120-
background-color: token-utils.slot(fab-disabled-state-container-color, $fallbacks);
119+
color: token-utils.slot(fab-disabled-label-text-color, $fallbacks);
120+
background-color: token-utils.slot(fab-disabled-container-color, $fallbacks);
121+
122+
&.mat-mdc-button-disabled {
123+
box-shadow: token-utils.slot(
124+
fab-disabled-container-elevation-shadow, $fallbacks);
125+
}
121126
}
122127

123128
@include button-base.mat-private-button-touch-target(true, fab-touch-target-size,
@@ -150,15 +155,20 @@ $fallbacks: m3-fab.get-tokens();
150155
}
151156

152157
@include button-base.mat-private-button-disabled {
153-
color: token-utils.slot(fab-small-disabled-state-foreground-color, $fallbacks);
154-
background-color: token-utils.slot(fab-small-disabled-state-container-color, $fallbacks);
158+
color: token-utils.slot(fab-disabled-label-text-color, $fallbacks);
159+
background-color: token-utils.slot(fab-disabled-container-color, $fallbacks);
160+
161+
&.mat-mdc-button-disabled {
162+
box-shadow: token-utils.slot(
163+
fab-disabled-container-elevation-shadow, $fallbacks);
164+
}
155165
}
156166

157167
@include button-base.mat-private-button-touch-target(true,
158168
fab-small-touch-target-size, fab-small-touch-target-display, $fallbacks);
159169
@include button-base.mat-private-button-ripple(fab-small-ripple-color,
160170
fab-small-state-layer-color,
161-
fab-small-disabled-state-layer-color, fab-small-hover-state-layer-opacity,
171+
fab-disabled-state-layer-color, fab-small-hover-state-layer-opacity,
162172
fab-small-focus-state-layer-opacity, fab-small-pressed-state-layer-opacity, $fallbacks);
163173
}
164174

src/material/menu/_m3-menu.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
menu-item-with-icon-trailing-spacing: 12px,
2020
),
2121
color: (
22+
menu-container-elevation-shadow: elevation.get-box-shadow(2),
2223
menu-container-shape: map.get($system, corner-extra-small),
2324
menu-divider-color: map.get($system, surface-variant),
2425
menu-item-label-text-color: map.get($system, on-surface),
@@ -28,7 +29,6 @@
2829
menu-item-focus-state-layer-color: m3-utils.color-with-opacity(
2930
map.get($system, on-surface), map.get($system, focus-state-layer-opacity)),
3031
menu-container-color: map.get($system, surface-container),
31-
menu-container-elevation-shadow: elevation.get-box-shadow(2),
3232
),
3333
typography: (
3434
menu-item-label-text-font: map.get($system, label-large-font),

0 commit comments

Comments
 (0)