Skip to content

Commit 2455a42

Browse files
authored
fix(material/stepper): Update token values for M3 and add color variant support (#28430)
1 parent 5733100 commit 2455a42

File tree

5 files changed

+75
-14
lines changed

5 files changed

+75
-14
lines changed

src/dev-app/theme-m3.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
@include mat.option-color($theme, $color-variant: $color-variant);
77
@include mat.progress-spinner-color($theme, $color-variant: $color-variant);
88
@include mat.pseudo-checkbox-color($theme, $color-variant: $color-variant);
9+
@include mat.stepper-color($theme, $color-variant: $color-variant);
910

1011
&.mat-icon {
1112
@include mat.icon-color($theme, $color-variant: $color-variant);

src/material-experimental/theming/_custom-tokens.scss

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,7 +1077,7 @@
10771077
/// @param {Boolean} $exclude-hardcoded Whether to exclude hardcoded token values
10781078
/// @return {Map} A set of custom tokens for the mat-stepper
10791079
@function stepper($systems, $exclude-hardcoded) {
1080-
@return mat.private-merge-all(
1080+
@return (
10811081
(
10821082
container-color: map.get($systems, md-sys-color, surface),
10831083
line-color: map.get($systems, md-sys-color, outline-variant),
@@ -1091,9 +1091,11 @@
10911091
),
10921092
header-label-text-color: map.get($systems, md-sys-color, on-surface-variant),
10931093
header-optional-label-text-color: map.get($systems, md-sys-color, on-surface-variant),
1094-
header-selected-state-label-text-color: map.get($systems, md-sys-color, on-surface),
1095-
header-icon-background-color: map.get($systems, md-sys-color, inverse-surface),
1096-
header-icon-foreground-color: map.get($systems, md-sys-color, inverse-on-surface),
1094+
header-selected-state-label-text-color: map.get($systems, md-sys-color, on-surface-variant),
1095+
header-icon-background-color: map.get($systems, md-sys-color, on-surface-variant),
1096+
header-icon-foreground-color: map.get($systems, md-sys-color, surface),
1097+
header-edit-state-icon-background-color: map.get($systems, md-sys-color, primary),
1098+
header-edit-state-icon-foreground-color: map.get($systems, md-sys-color, on-primary),
10971099
header-error-state-label-text-color: map.get($systems, md-sys-color, error),
10981100
header-error-state-icon-foreground-color: map.get($systems, md-sys-color, error),
10991101
header-error-state-icon-background-color: _hardcode(transparent, $exclude-hardcoded),
@@ -1102,10 +1104,40 @@
11021104
header-label-text-size: map.get($systems, md-sys-typescale, title-small-size),
11031105
header-label-text-weight: map.get($systems, md-sys-typescale, title-small-weight),
11041106
header-error-state-label-text-size: map.get($systems, md-sys-typescale, title-small-size),
1105-
header-selected-state-label-text-size: map.get($systems, md-sys-typescale, title-small-szie),
1107+
header-focus-state-layer-shape: map.get($systems, md-sys-shape, corner-medium),
1108+
header-hover-state-layer-shape: map.get($systems, md-sys-shape, corner-medium),
1109+
header-selected-state-label-text-size: map.get($systems, md-sys-typescale, title-small-size),
11061110
header-selected-state-label-text-weight: map.get(
11071111
$systems, md-sys-typescale, title-small-weight),
1108-
),
1112+
header-selected-state-icon-background-color: map.get($systems, md-sys-color, primary),
1113+
header-selected-state-icon-foreground-color: map.get($systems, md-sys-color, on-primary),
1114+
), (
1115+
// Color variants
1116+
primary: (
1117+
header-edit-state-icon-background-color: map.get($systems, md-sys-color, primary),
1118+
header-edit-state-icon-foreground-color: map.get($systems, md-sys-color, on-primary),
1119+
header-selected-state-icon-background-color: map.get($systems, md-sys-color, primary),
1120+
header-selected-state-icon-foreground-color: map.get($systems, md-sys-color, on-primary),
1121+
),
1122+
secondary: (
1123+
header-edit-state-icon-background-color: map.get($systems, md-sys-color, secondary),
1124+
header-edit-state-icon-foreground-color: map.get($systems, md-sys-color, on-secondary),
1125+
header-selected-state-icon-background-color: map.get($systems, md-sys-color, secondary),
1126+
header-selected-state-icon-foreground-color: map.get($systems, md-sys-color, on-secondary),
1127+
),
1128+
tertiary: (
1129+
header-edit-state-icon-background-color: map.get($systems, md-sys-color, tertiary),
1130+
header-edit-state-icon-foreground-color: map.get($systems, md-sys-color, on-tertiary),
1131+
header-selected-state-icon-background-color: map.get($systems, md-sys-color, tertiary),
1132+
header-selected-state-icon-foreground-color: map.get($systems, md-sys-color, on-tertiary),
1133+
),
1134+
error: (
1135+
header-edit-state-icon-background-color: map.get($systems, md-sys-color, error),
1136+
header-edit-state-icon-foreground-color: map.get($systems, md-sys-color, on-error),
1137+
header-selected-state-icon-background-color: map.get($systems, md-sys-color, error),
1138+
header-selected-state-icon-foreground-color: map.get($systems, md-sys-color, on-error),
1139+
)
1140+
)
11091141
);
11101142
}
11111143

src/material/core/tokens/m2/mat/_stepper.scss

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,12 @@ $prefix: (mat, stepper);
1010
// Tokens that can't be configured through Angular Material's current theming API,
1111
// but may be in a future version of the theming API.
1212
@function get-unthemable-tokens() {
13-
@return ();
13+
@return (
14+
// Border radius for step header on focus
15+
header-focus-state-layer-shape: 0,
16+
// Border radius for step header on hover
17+
header-hover-state-layer-shape: 0,
18+
);
1419
}
1520

1621
// Tokens that can be configured through Angular Material's color theming API.

src/material/stepper/_stepper-theme.scss

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,28 @@
1-
@use 'sass:map';
21
@use '../core/theming/theming';
32
@use '../core/theming/inspection';
43
@use '../core/typography/typography';
54
@use '../core/style/sass-utils';
65
@use '../core/tokens/token-utils';
76
@use '../core/tokens/m2/mat/stepper' as tokens-mat-stepper;
87

8+
/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)
9+
/// for mat-stepper.
10+
/// @param {Map} $theme The theme to generate base styles for.
911
@mixin base($theme) {
1012
@if inspection.get-theme-version($theme) == 1 {
1113
@include _theme-from-tokens(inspection.get-theme-tokens($theme, base));
1214
}
1315
@else {}
1416
}
1517

16-
@mixin color($theme) {
18+
/// Outputs color theme styles for mat-stepper.
19+
/// @param {Map} $theme The theme to generate color styles for.
20+
/// @param {ArgList} Additional optional arguments (only supported for M3 themes):
21+
/// $color-variant: The color variant to use for the stepper: primary, secondary,
22+
/// tertiary, or error (If not specified, primary color values will be used).
23+
@mixin color($theme, $options...) {
1724
@if inspection.get-theme-version($theme) == 1 {
18-
@include _theme-from-tokens(inspection.get-theme-tokens($theme, color));
25+
@include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);
1926
}
2027
@else {
2128
@include sass-utils.current-selector-or-root() {
@@ -35,6 +42,8 @@
3542
}
3643
}
3744

45+
/// Outputs typography theme styles for mat-stepper.
46+
/// @param {Map} $theme The theme to generate typography styles for.
3847
@mixin typography($theme) {
3948
@if inspection.get-theme-version($theme) == 1 {
4049
@include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));
@@ -47,6 +56,8 @@
4756
}
4857
}
4958

59+
/// Outputs density theme styles for mat-stepper.
60+
/// @param {Map} $theme The theme to generate density styles for.
5061
@mixin density($theme) {
5162
@if inspection.get-theme-version($theme) == 1 {
5263
@include _theme-from-tokens(inspection.get-theme-tokens($theme, density));
@@ -59,10 +70,15 @@
5970
}
6071
}
6172

62-
@mixin theme($theme) {
73+
/// Outputs all (base, color, typography, and density) theme styles for mat-stepper.
74+
/// @param {Map} $theme The theme to generate color styles for.
75+
/// @param {ArgList} Additional optional arguments (only supported for M3 themes):
76+
/// $color-variant: The color variant to use for the stepper: primary, secondary,
77+
/// tertiary, or error (If not specified, primary color values will be used).
78+
@mixin theme($theme, $options...) {
6379
@include theming.private-check-duplicate-theme-styles($theme, 'mat-stepper') {
6480
@if inspection.get-theme-version($theme) == 1 {
65-
@include _theme-from-tokens(inspection.get-theme-tokens($theme));
81+
@include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);
6682
}
6783
@else {
6884
@include base($theme);
@@ -79,9 +95,14 @@
7995
}
8096
}
8197

82-
@mixin _theme-from-tokens($tokens) {
98+
@mixin _theme-from-tokens($tokens, $options...) {
8399
@if ($tokens != ()) {
100+
$mat-stepper-tokens: token-utils.get-tokens-for(
101+
$tokens,
102+
tokens-mat-stepper.$prefix,
103+
$options...
104+
);
84105
@include token-utils.create-token-values(
85-
tokens-mat-stepper.$prefix, map.get($tokens, tokens-mat-stepper.$prefix));
106+
tokens-mat-stepper.$prefix, $mat-stepper-tokens);
86107
}
87108
}

src/material/stepper/step-header.scss

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,13 @@
2828
&:hover:not([aria-disabled]),
2929
&:hover[aria-disabled='false'] {
3030
@include token-utils.create-token-slot(background-color, header-hover-state-layer-color);
31+
@include token-utils.create-token-slot(border-radius, header-hover-state-layer-shape);
3132
}
3233

3334
&.cdk-keyboard-focused,
3435
&.cdk-program-focused {
3536
@include token-utils.create-token-slot(background-color, header-focus-state-layer-color);
37+
@include token-utils.create-token-slot(border-radius, header-focus-state-layer-shape);
3638
}
3739
}
3840

0 commit comments

Comments
 (0)