Skip to content

Commit 05f9ac5

Browse files
authored
refactor: update badge styles to not increase parent component height (#11892)
1 parent 988a472 commit 05f9ac5

72 files changed

Lines changed: 30 additions & 6 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎dev/playground/button.html‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
window.Vaadin.featureFlags.accessibleDisabledButtons = true;
1414
</script>
1515
<script type="module">
16+
import '@vaadin/badge';
1617
import '@vaadin/button';
1718
import '@vaadin/icon';
1819
import '@vaadin/icons';
@@ -95,5 +96,24 @@ <h2 class="heading">Custom Layout</h2>
9596
A really long label that should truncate
9697
</vaadin-button>
9798
</section>
99+
100+
<section class="section">
101+
<h2 class="heading">With Badge</h2>
102+
<vaadin-button theme="primary">
103+
Inbox
104+
<vaadin-badge slot="suffix" number="12" theme="filled"></vaadin-badge>
105+
</vaadin-button>
106+
<vaadin-button>
107+
Inbox
108+
<vaadin-badge slot="suffix" number="12"></vaadin-badge>
109+
</vaadin-button>
110+
<vaadin-button theme="tertiary">
111+
Inbox
112+
<vaadin-badge slot="suffix" number="12"></vaadin-badge>
113+
</vaadin-button>
114+
<vaadin-button aria-label="Inbox (12)">
115+
<vaadin-badge number="12"></vaadin-badge>
116+
</vaadin-button>
117+
</section>
98118
</body>
99119
</html>

‎packages/aura/src/components/button.css‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,22 +39,22 @@ Increase padding, but only for buttons that don't have an icon in the default sl
3939
Buttons that place an icon in the default slot are assumed to be icon-only buttons.
4040
*/
4141
/* prettier-ignore */
42-
:is(vaadin-button, vaadin-upload-button, vaadin-menu-bar-button, vaadin-crud-edit):not(:has(> :is(vaadin-icon, svg, i[class*='fa-'], vaadin-avatar):not([slot]))) {
42+
:is(vaadin-button, vaadin-upload-button, vaadin-menu-bar-button, vaadin-crud-edit):not(:has(> :is(vaadin-icon, vaadin-badge, svg, i[class*='fa-'], vaadin-avatar):not([slot]))) {
4343
--vaadin-button-padding: var(--vaadin-padding-block-container)
4444
var(--vaadin-padding-m);
4545
}
4646

4747
/* Decrease padding when an icon is placed in the prefix or suffix slot */
4848
:is(vaadin-button, vaadin-upload-button, vaadin-menu-bar-button)[theme~='tertiary'],
4949
:is(vaadin-button, vaadin-upload-button, vaadin-menu-bar-button):has(
50-
> [slot='prefix']:is(vaadin-icon, svg, i[class*='fa-'], vaadin-avatar)
50+
> [slot='prefix']:is(vaadin-icon, vaadin-badge, svg, i[class*='fa-'], vaadin-avatar)
5151
) {
5252
padding-inline-start: var(--vaadin-padding-s);
5353
}
5454

5555
:is(vaadin-button, vaadin-upload-button, vaadin-menu-bar-button)[theme~='tertiary'],
5656
:is(vaadin-button, vaadin-upload-button, vaadin-menu-bar-button):has(
57-
> [slot='suffix']:is(vaadin-icon, svg, i[class*='fa-'], vaadin-avatar)
57+
> [slot='suffix']:is(vaadin-icon, vaadin-badge, svg, i[class*='fa-'], vaadin-avatar)
5858
),
5959
vaadin-menu-bar-button[aria-haspopup='true']:not([slot='overflow']) {
6060
padding-inline-end: var(--vaadin-padding-s);

‎packages/badge/src/styles/vaadin-badge-base-styles.js‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ export const badgeStyles = css`
1515
box-sizing: border-box;
1616
gap: var(--vaadin-badge-gap, 0.25em);
1717
padding: var(--vaadin-badge-padding, 0 calc(0.5lh - 0.25em));
18-
font-family: var(--vaadin-badge-font-family, inherit);
1918
font-size: var(--vaadin-badge-font-size, 0.875rem);
19+
font-family: var(--vaadin-badge-font-family, inherit);
2020
font-weight: var(--vaadin-badge-font-weight, 500);
21-
line-height: var(--vaadin-badge-line-height, round(1em * 1.5, 0.125rem));
21+
line-height: var(--vaadin-badge-line-height, 1lh);
2222
color: var(--vaadin-badge-text-color, var(--vaadin-text-color));
2323
background: var(--vaadin-badge-background, transparent);
2424
border: var(--vaadin-badge-border-width, 1px) solid var(--vaadin-badge-border-color, var(--vaadin-border-color));
@@ -27,8 +27,10 @@ export const badgeStyles = css`
2727
white-space: nowrap;
2828
--vaadin-icon-size: 1em;
2929
/* prevent from stretching */
30-
height: calc(1lh + var(--vaadin-badge-border-width, 1px) * 2);
30+
height: round(1lh + var(--vaadin-badge-border-width, 1px) * 2, 0.125rem);
3131
flex: none;
32+
/* Only reserve 1lh of space (treat border as an outline) */
33+
margin: calc(var(--vaadin-badge-border-width, 1px) * -1);
3234
}
3335
3436
:host([hidden]) {
@@ -66,6 +68,7 @@ export const badgeStyles = css`
6668
width: round(0.5em, 0.125rem);
6769
height: round(0.5em, 0.125rem);
6870
padding: 0;
71+
margin: 0;
6972
}
7073
7174
@media (forced-colors: active) {
-49 Bytes
-15 Bytes
8 Bytes
4 Bytes
4 Bytes
-81 Bytes
-12 Bytes

0 commit comments

Comments
 (0)