Skip to content

Commit b35c66a

Browse files
committed
refactor: merge button tokens
1 parent 6ac4c1a commit b35c66a

29 files changed

+904
-1937
lines changed

src/material/button/BUILD.bazel

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,9 @@ package(default_visibility = ["//visibility:public"])
1313
sass_library(
1414
name = "m3",
1515
srcs = [
16-
"_m3-extended-fab.scss",
16+
"_m3-button.scss",
1717
"_m3-fab.scss",
18-
"_m3-fab-small.scss",
19-
"_m3-filled-button.scss",
2018
"_m3-icon-button.scss",
21-
"_m3-outlined-button.scss",
22-
"_m3-protected-button.scss",
23-
"_m3-text-button.scss",
24-
"_m3-tonal-button.scss",
2519
],
2620
deps = [
2721
"//src/material/core/style:sass_utils",
@@ -32,15 +26,9 @@ sass_library(
3226
sass_library(
3327
name = "m2",
3428
srcs = [
35-
"_m2-extended-fab.scss",
29+
"_m2-button.scss",
3630
"_m2-fab.scss",
37-
"_m2-fab-small.scss",
38-
"_m2-filled-button.scss",
3931
"_m2-icon-button.scss",
40-
"_m2-outlined-button.scss",
41-
"_m2-protected-button.scss",
42-
"_m2-text-button.scss",
43-
"_m2-tonal-button.scss",
4432
],
4533
deps = [
4634
"//src/material/core/style:elevation",

src/material/button/_button-base.scss

Lines changed: 56 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -57,35 +57,37 @@
5757
}
5858
}
5959

60-
@mixin mat-private-button-ripple($prefix, $slots) {
61-
@include token-utils.use-tokens($prefix, $slots) {
62-
.mat-ripple-element {
63-
background-color: token-utils.slot(ripple-color);
64-
}
60+
@mixin mat-private-button-ripple(
61+
$ripple-color-token, $state-layer-color-token, $disabled-state-layer-color-token,
62+
$hover-state-layer-opacity-token, $focus-state-layer-opacity-token,
63+
$pressed-state-layer-opacity-token
64+
) {
65+
.mat-ripple-element {
66+
background-color: token-utils.slot($ripple-color-token);
67+
}
6568

66-
.mat-mdc-button-persistent-ripple::before {
67-
background-color: token-utils.slot(state-layer-color);
68-
}
69+
.mat-mdc-button-persistent-ripple::before {
70+
background-color: token-utils.slot($state-layer-color-token);
71+
}
6972

70-
&.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before {
71-
background-color: token-utils.slot(disabled-state-layer-color);
72-
}
73+
&.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before {
74+
background-color: token-utils.slot($disabled-state-layer-color-token);
75+
}
7376

74-
&:hover > .mat-mdc-button-persistent-ripple::before {
75-
opacity: token-utils.slot(hover-state-layer-opacity);
76-
}
77+
&:hover > .mat-mdc-button-persistent-ripple::before {
78+
opacity: token-utils.slot($hover-state-layer-opacity-token);
79+
}
7780

78-
&.cdk-program-focused,
79-
&.cdk-keyboard-focused,
80-
&.mat-mdc-button-disabled-interactive:focus {
81-
> .mat-mdc-button-persistent-ripple::before {
82-
opacity: token-utils.slot(focus-state-layer-opacity);
83-
}
81+
&.cdk-program-focused,
82+
&.cdk-keyboard-focused,
83+
&.mat-mdc-button-disabled-interactive:focus {
84+
> .mat-mdc-button-persistent-ripple::before {
85+
opacity: token-utils.slot($focus-state-layer-opacity-token);
8486
}
87+
}
8588

86-
&:active > .mat-mdc-button-persistent-ripple::before {
87-
opacity: token-utils.slot(pressed-state-layer-opacity);
88-
}
89+
&:active > .mat-mdc-button-persistent-ripple::before {
90+
opacity: token-utils.slot($pressed-state-layer-opacity-token);
8991
}
9092
}
9193

@@ -109,17 +111,12 @@
109111
}
110112
}
111113

112-
// Adds an elevation shadow to a button.
113-
@mixin mat-private-button-elevation($token-name) {
114-
// MDC outputs a variable that is the same as the token name, but suffixed with `-shadow`.
115-
box-shadow: token-utils.slot($token-name + '-shadow');
116-
}
117-
118-
@mixin mat-private-button-touch-target($is-square, $prefix, $slots) {
114+
@mixin mat-private-button-touch-target($is-square, $touch-target-display-token) {
119115
.mat-mdc-button-touch-target {
120116
position: absolute;
121117
top: 50%;
122118
height: 48px;
119+
display: token-utils.slot($touch-target-display-token);
123120

124121
@if $is-square {
125122
left: 50%;
@@ -130,52 +127,44 @@
130127
right: 0;
131128
transform: translateY(-50%);
132129
}
133-
134-
@include token-utils.use-tokens($prefix, $slots) {
135-
display: token-utils.slot(touch-target-display);
136-
}
137130
}
138131
}
139132

140-
@mixin mat-private-button-horizontal-layout($prefix, $slots, $has-with-icon-padding) {
141-
@include token-utils.use-tokens($prefix, $slots) {
142-
$icon-spacing: token-utils.slot(icon-spacing, true);
143-
$icon-offset: token-utils.slot(icon-offset, true);
144-
145-
@if ($has-with-icon-padding) {
146-
$with-icon-horizontal-padding:
147-
token-utils.slot(with-icon-horizontal-padding, true);
148-
149-
// stylelint-disable-next-line selector-class-pattern
150-
&:has(.material-icons, mat-icon, [matButtonIcon]) {
151-
padding: 0 $with-icon-horizontal-padding;
152-
}
153-
}
154-
155-
// MDC expects button icons to contain this HTML content:
156-
// ```html
157-
// <span class="mdc-button__icon material-icons">favorite</span>
158-
// ```
159-
// However, Angular Material expects a `mat-icon` instead. The following
160-
// styles will lay out the icons appropriately.
161-
& > .mat-icon {
162-
margin-right: $icon-spacing;
163-
margin-left: $icon-offset;
133+
@mixin mat-private-button-horizontal-layout(
134+
$icon-spacing-token, $icon-offset-token, $with-icon-horizontal-padding-token: null) {
135+
$icon-spacing: token-utils.slot($icon-spacing-token, true);
136+
$icon-offset: token-utils.slot($icon-offset-token, true);
164137

165-
[dir='rtl'] & {
166-
margin-right: $icon-offset;
167-
margin-left: $icon-spacing;
168-
}
138+
@if ($with-icon-horizontal-padding-token) {
139+
// stylelint-disable-next-line selector-class-pattern
140+
&:has(.material-icons, mat-icon, [matButtonIcon]) {
141+
padding: 0 token-utils.slot($with-icon-horizontal-padding-token, true);
169142
}
143+
}
170144

171-
.mdc-button__label + .mat-icon {
145+
// MDC expects button icons to contain this HTML content:
146+
// ```html
147+
// <span class="mdc-button__icon material-icons">favorite</span>
148+
// ```
149+
// However, Angular Material expects a `mat-icon` instead. The following
150+
// styles will lay out the icons appropriately.
151+
& > .mat-icon {
152+
margin-right: $icon-spacing;
153+
margin-left: $icon-offset;
154+
155+
[dir='rtl'] & {
172156
margin-right: $icon-offset;
173157
margin-left: $icon-spacing;
158+
}
159+
}
174160

175-
[dir='rtl'] & {
176-
margin-right: $icon-spacing;
177-
margin-left: $icon-offset;
178-
}
161+
.mdc-button__label + .mat-icon {
162+
margin-right: $icon-offset;
163+
margin-left: $icon-spacing;
164+
165+
[dir='rtl'] & {
166+
margin-right: $icon-spacing;
167+
margin-left: $icon-offset;
179168
}
180169
}
181170
}

0 commit comments

Comments
 (0)