Skip to content

Commit 8210ead

Browse files
authored
feat: add dot theme variant to badge (#11162)
1 parent 97c663e commit 8210ead

File tree

13 files changed

+70
-13
lines changed

13 files changed

+70
-13
lines changed

dev/badge.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,13 @@ <h2 class="heading">Icon / number only</h2>
5454
<span>Completed</span>
5555
</vaadin-badge>
5656
</section>
57+
58+
<section class="section">
59+
<h2 class="heading">Dot</h2>
60+
<vaadin-badge number="3" theme="dot">
61+
<vaadin-icon slot="icon" icon="vaadin:check"></vaadin-icon>
62+
<span>Completed</span>
63+
</vaadin-badge>
64+
</section>
5765
</body>
5866
</html>

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,20 @@ export const badgeStyles = css`
5353
}
5454
5555
:host([theme~='icon-only']) :is([part='content'], [part='number']),
56-
:host([theme~='number-only']) :is([part='content'], [part='icon']) {
56+
:host([theme~='number-only']) :is([part='content'], [part='icon']),
57+
:host([theme~='dot']) [part] {
5758
width: 0;
5859
overflow: clip;
5960
}
6061
62+
:host([theme~='dot']) {
63+
min-width: 0;
64+
width: 1em;
65+
height: 1em;
66+
padding: 0;
67+
border-radius: 50%;
68+
}
69+
6170
@media (forced-colors: active) {
6271
:host {
6372
border: 1px solid;

packages/badge/test/visual/base/badge.test.ts

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,6 @@ describe('badge', () => {
3939
element.textContent = 'Messages';
4040
await visualDiff(div, 'number-content');
4141
});
42-
43-
it('number-only', async () => {
44-
const icon = document.createElement('vaadin-icon');
45-
icon.setAttribute('slot', 'icon');
46-
icon.icon = 'vaadin:check';
47-
element.appendChild(icon);
48-
element.append('Completed');
49-
element.setAttribute('theme', 'number-only');
50-
await visualDiff(div, 'number-only');
51-
});
5242
});
5343

5444
describe('icon', () => {
@@ -77,13 +67,31 @@ describe('badge', () => {
7767
element.append('Completed');
7868
await visualDiff(div, 'icon-number-content');
7969
});
70+
});
8071

81-
it('icon-only', async () => {
72+
describe('theme', () => {
73+
beforeEach(() => {
8274
element.number = 3;
75+
const icon = document.createElement('vaadin-icon');
76+
icon.setAttribute('slot', 'icon');
77+
icon.icon = 'vaadin:check';
8378
element.appendChild(icon);
8479
element.append('Completed');
80+
});
81+
82+
it('icon-only', async () => {
8583
element.setAttribute('theme', 'icon-only');
86-
await visualDiff(div, 'icon-only');
84+
await visualDiff(div, 'theme-icon-only');
85+
});
86+
87+
it('number-only', async () => {
88+
element.setAttribute('theme', 'number-only');
89+
await visualDiff(div, 'theme-number-only');
90+
});
91+
92+
it('dot', async () => {
93+
element.setAttribute('theme', 'dot');
94+
await visualDiff(div, 'theme-dot');
8795
});
8896
});
8997
});
244 Bytes
Loading

packages/badge/test/visual/base/screenshots/badge/baseline/icon-only.png renamed to packages/badge/test/visual/base/screenshots/badge/baseline/theme-icon-only.png

File renamed without changes.

packages/badge/test/visual/base/screenshots/badge/baseline/number-only.png renamed to packages/badge/test/visual/base/screenshots/badge/baseline/theme-number-only.png

File renamed without changes.

packages/badge/test/visual/lumo/badge.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,12 @@ describe('badge', () => {
101101
element.setAttribute('theme', 'small');
102102
await visualDiff(div, 'theme-small');
103103
});
104+
105+
it('dot', async () => {
106+
element.textContent = 'Badge';
107+
element.setAttribute('theme', 'dot');
108+
await visualDiff(div, 'theme-dot');
109+
});
104110
});
105111

106112
['success', 'error', 'warning', 'contrast'].forEach((variant) => {
@@ -116,6 +122,12 @@ describe('badge', () => {
116122
element.setAttribute('theme', `${variant} primary`);
117123
await visualDiff(div, `theme-${variant}-primary`);
118124
});
125+
126+
it(`${variant} dot`, async () => {
127+
element.textContent = 'Badge';
128+
element.setAttribute('theme', `${variant} dot`);
129+
await visualDiff(div, `theme-${variant}-dot`);
130+
});
119131
});
120132
});
121133
});
353 Bytes
Loading
335 Bytes
Loading
354 Bytes
Loading

0 commit comments

Comments
 (0)