Skip to content

Commit f8db6f7

Browse files
dfreedmcopybara-github
authored andcommitted
chore(iconbutton): Focus ring matches icon shape
PiperOrigin-RevId: 497255853
1 parent e76d330 commit f8db6f7

File tree

7 files changed

+85
-3
lines changed

7 files changed

+85
-3
lines changed

iconbutton/lib/_filled-icon-button.scss

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
@use 'sass:map';
1010
@use '../../ripple/ripple';
1111
@use '../../sass/theme';
12+
@use '../../focus/focus-ring';
1213
@use '../../tokens';
1314
@use './shared';
1415

@@ -20,6 +21,7 @@ $_custom-property-prefix: 'filled-icon-button';
2021
$tokens
2122
);
2223
$tokens: shared.flatten-disabled-colors($tokens, $variant: 'filled');
24+
$tokens: shared.resolve-shape-tokens($tokens);
2325
$tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
2426

2527
@include theme.emit-theme-vars($tokens);
@@ -28,12 +30,24 @@ $_custom-property-prefix: 'filled-icon-button';
2830
@mixin styles() {
2931
$tokens: tokens.md-comp-filled-icon-button-values();
3032
$tokens: shared.flatten-disabled-colors($tokens, $variant: 'filled');
33+
$tokens: shared.resolve-shape-tokens($tokens);
3134
$tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
3235

3336
:host {
3437
@each $token, $value in $tokens {
3538
--_#{$token}: #{$value};
3639
}
40+
41+
@include focus-ring.theme(
42+
(
43+
shape: (
44+
var(--_container-shape-start-start),
45+
var(--_container-shape-start-end),
46+
var(--_container-shape-end-end),
47+
var(--_container-shape-end-start),
48+
),
49+
)
50+
);
3751
}
3852

3953
.md3-icon-button {

iconbutton/lib/_filled-tonal-icon-button.scss

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
@use 'sass:map';
1010
@use '../../ripple/ripple';
11+
@use '../../focus/focus-ring';
1112
@use '../../sass/theme';
1213
@use '../../tokens';
1314
@use './shared';
@@ -20,6 +21,7 @@ $_custom-property-prefix: 'filled-tonal-icon-button';
2021
$tokens
2122
);
2223
$tokens: shared.flatten-disabled-colors($tokens, $variant: 'filled-tonal');
24+
$tokens: shared.resolve-shape-tokens($tokens);
2325
$tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
2426

2527
@include theme.emit-theme-vars($tokens);
@@ -28,12 +30,24 @@ $_custom-property-prefix: 'filled-tonal-icon-button';
2830
@mixin styles() {
2931
$tokens: tokens.md-comp-filled-tonal-icon-button-values();
3032
$tokens: shared.flatten-disabled-colors($tokens, $variant: 'filled-tonal');
33+
$tokens: shared.resolve-shape-tokens($tokens);
3134
$tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
3235

3336
:host {
3437
@each $token, $value in $tokens {
3538
--_#{$token}: #{$value};
3639
}
40+
41+
@include focus-ring.theme(
42+
(
43+
shape: (
44+
var(--_container-shape-start-start),
45+
var(--_container-shape-start-end),
46+
var(--_container-shape-end-end),
47+
var(--_container-shape-end-start),
48+
),
49+
)
50+
);
3751
}
3852

3953
.md3-icon-button {

iconbutton/lib/_outlined-icon-button.scss

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
@use '../../sass/color';
1313
@use '../../sass/theme';
1414
@use '../../tokens';
15+
@use '../../focus/focus-ring';
1516
@use './shared';
1617

1718
$_custom-property-prefix: 'outlined-icon-button';
@@ -28,6 +29,7 @@ $_custom-property-prefix: 'outlined-icon-button';
2829
);
2930
$tokens: theme.validate-theme($reference, $tokens);
3031
$tokens: shared.flatten-disabled-colors($tokens, $variant: 'outlined');
32+
$tokens: shared.resolve-shape-tokens($tokens);
3133
$tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
3234

3335
@include theme.emit-theme-vars($tokens);
@@ -45,12 +47,24 @@ $_custom-property-prefix: 'outlined-icon-button';
4547
)
4648
);
4749
$tokens: shared.flatten-disabled-colors($tokens, $variant: 'outlined');
50+
$tokens: shared.resolve-shape-tokens($tokens);
4851
$tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
4952

5053
:host {
5154
@each $token, $value in $tokens {
5255
--_#{$token}: #{$value};
5356
}
57+
58+
@include focus-ring.theme(
59+
(
60+
shape: (
61+
var(--_container-shape-start-start),
62+
var(--_container-shape-start-end),
63+
var(--_container-shape-end-end),
64+
var(--_container-shape-end-start),
65+
),
66+
)
67+
);
5468
}
5569

5670
.md3-icon-button--outlined {

iconbutton/lib/_shared.scss

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
@use 'sass:map';
1313
@use '../../sass/color';
1414
@use '../../sass/touch-target';
15+
@use '../../sass/shape';
16+
@use '../../sass/resolvers';
1517
@use '../../tokens';
1618

1719
@mixin styles() {
@@ -46,7 +48,10 @@
4648
0px,
4749
calc((#{$touch-target-height} - var(--_container-size)) / 2)
4850
);
49-
border-radius: var(--_container-shape);
51+
border-start-start-radius: var(--_container-shape-start-start);
52+
border-start-end-radius: var(--_container-shape-start-end);
53+
border-end-start-radius: var(--_container-shape-end-start);
54+
border-end-end-radius: var(--_container-shape-end-end);
5055

5156
i,
5257
svg,
@@ -65,6 +70,11 @@
6570

6671
md-ripple {
6772
z-index: -1; // Place behind content
73+
// TODO(b/263517885): replace with ripple.theme(container-shape)
74+
border-start-start-radius: var(--_container-shape-start-start);
75+
border-start-end-radius: var(--_container-shape-start-end);
76+
border-end-start-radius: var(--_container-shape-end-start);
77+
border-end-end-radius: var(--_container-shape-end-end);
6878
}
6979

7080
.md3-icon-button--flip-icon .md3-icon-button__icon {
@@ -166,3 +176,11 @@
166176
)
167177
);
168178
}
179+
180+
@function resolve-shape-tokens($tokens, $property: 'container-shape') {
181+
@return shape.resolve-theme(
182+
$tokens,
183+
map.get(resolvers.$material, 'shape'),
184+
$property
185+
);
186+
}

iconbutton/lib/_standard-icon-button.scss

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
@use 'sass:map';
1010
@use '../../ripple/ripple';
1111
@use '../../sass/theme';
12+
@use '../../focus/focus-ring';
1213
@use '../../tokens';
1314
@use './shared';
1415

@@ -17,6 +18,7 @@ $_custom-property-prefix: 'icon-button';
1718
@mixin theme($tokens) {
1819
$tokens: theme.validate-theme(tokens.md-comp-icon-button-values(), $tokens);
1920
$tokens: shared.flatten-disabled-colors($tokens);
21+
$tokens: shared.resolve-shape-tokens($tokens, $property: 'state-layer-shape');
2022
$tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
2123

2224
@include theme.emit-theme-vars($tokens);
@@ -25,12 +27,24 @@ $_custom-property-prefix: 'icon-button';
2527
@mixin styles() {
2628
$tokens: tokens.md-comp-icon-button-values();
2729
$tokens: shared.flatten-disabled-colors($tokens);
30+
$tokens: shared.resolve-shape-tokens($tokens, $property: 'state-layer-shape');
2831
$tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
2932

3033
:host {
3134
@each $token, $value in $tokens {
3235
--_#{$token}: #{$value};
3336
}
37+
38+
@include focus-ring.theme(
39+
(
40+
shape: (
41+
var(--_state-layer-shape-start-start),
42+
var(--_state-layer-shape-start-end),
43+
var(--_state-layer-shape-end-end),
44+
var(--_state-layer-shape-end-start),
45+
),
46+
)
47+
);
3448
}
3549

3650
.md3-icon-button--standard {
@@ -102,4 +116,12 @@ $_custom-property-prefix: 'icon-button';
102116
)
103117
);
104118
}
119+
120+
md-ripple {
121+
// TODO(b/263517885): replace with ripple.theme(state-layer-shape)
122+
border-start-start-radius: var(--_state-layer-shape-start-start);
123+
border-start-end-radius: var(--_state-layer-shape-start-end);
124+
border-end-start-radius: var(--_state-layer-shape-end-start);
125+
border-end-end-radius: var(--_state-layer-shape-end-end);
126+
}
105127
}

iconbutton/lib/icon-button-toggle.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export class IconButtonToggle extends LitElement {
8080
};
8181

8282
protected readonly renderRipple = () => {
83-
return html`<md-ripple ?disabled="${this.disabled}" unbounded></md-ripple>`;
83+
return html`<md-ripple ?disabled="${this.disabled}"></md-ripple>`;
8484
};
8585

8686
protected override render(): TemplateResult {

iconbutton/lib/icon-button.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export class IconButton extends LitElement {
6363
};
6464

6565
protected readonly renderRipple = () => {
66-
return html`<md-ripple ?disabled="${this.disabled}" unbounded></md-ripple>`;
66+
return html`<md-ripple ?disabled="${this.disabled}"></md-ripple>`;
6767
};
6868

6969
protected override render(): TemplateResult {

0 commit comments

Comments
 (0)