Skip to content

Commit 3c0c469

Browse files
authored
refactor: adjust aura menu item styles (#10535)
1 parent 03245e9 commit 3c0c469

File tree

5 files changed

+70
-26
lines changed

5 files changed

+70
-26
lines changed

dev/aura.html

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,26 @@
100100
}));
101101
};
102102

103+
function createMenuItemWithFeatures(text, iconName, badgeLabel) {
104+
const item = document.createElement('vaadin-menu-bar-item');
105+
const icon = document.createElement('vaadin-icon');
106+
const badge = document.createElement('span');
107+
108+
if (iconName) {
109+
icon.setAttribute('src', `./assets/lucide-icons/${iconName}.svg`);
110+
item.append(icon);
111+
}
112+
if (text) {
113+
item.append(document.createTextNode(text));
114+
}
115+
if (badgeLabel) {
116+
badge.classList.add('aura-badge', 'aura-accent-purple');
117+
badge.textContent = badgeLabel;
118+
item.append(badge);
119+
}
120+
return item;
121+
}
122+
103123
function initComponentsView() {
104124
const view = document.querySelector('.components-view');
105125

@@ -112,14 +132,22 @@
112132
{ text: 'Edit' },
113133
{ text: 'Duplicate' },
114134
{ component: 'hr' },
115-
{ text: 'Archive' },
135+
{ component: createMenuItemWithFeatures('Archive', 'layers', '2') },
116136
{
117137
text: 'More',
118138
children: [
119139
{ text: 'Move to Project…' },
120140
{ text: 'Move to Folder…' },
121141
{ component: 'hr' },
122-
{ text: 'Advanced Options…' },
142+
{
143+
text: 'Advanced Options',
144+
children: [
145+
{ text: 'Show All', checked: true },
146+
{ text: 'Show Hidden Items' },
147+
{ component: 'hr' },
148+
{ text: 'Open…' },
149+
],
150+
},
123151
],
124152
},
125153
{ component: 'hr' },

dev/aura/badge.css

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,15 @@
2525
/* TODO is there a way to solve this without explicitly listing the special cases */
2626
:is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle)[theme~='primary'],
2727
vaadin-tabs[theme~='filled'] > vaadin-tab[selected],
28-
vaadin-side-nav[theme~='filled'] > vaadin-side-nav-item[current] {
28+
vaadin-side-nav[theme~='filled'] > vaadin-side-nav-item[current],
29+
:is(
30+
vaadin-combo-box-item,
31+
vaadin-context-menu-item,
32+
vaadin-item,
33+
vaadin-menu-bar-item,
34+
vaadin-multi-select-combo-box-item,
35+
vaadin-select-item[role]
36+
)[theme~='filled']:not([disabled], [aria-disabled='true']):hover {
2937
> .aura-badge-filled:not(
3038
.aura-accent-red,
3139
.aura-accent-orange,

packages/aura/src/color.css

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,16 @@ vaadin-tab,
221221
/* Badges and other content that uses contrast color inside filled variants */
222222
:is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle)[theme~='primary'] > *,
223223
vaadin-tabs[theme~='filled'] > vaadin-tab[selected] > :not([slot='tooltip']),
224-
vaadin-side-nav[theme~='filled'] > vaadin-side-nav-item[current] > :not([slot='children']):not([slot='tooltip']) {
224+
vaadin-side-nav[theme~='filled'] > vaadin-side-nav-item[current] > :not([slot='children']):not([slot='tooltip']),
225+
:is(
226+
vaadin-combo-box-item,
227+
vaadin-context-menu-item,
228+
vaadin-item,
229+
vaadin-menu-bar-item,
230+
vaadin-multi-select-combo-box-item,
231+
vaadin-select-item[role]
232+
)[theme~='filled']:not([disabled], [aria-disabled='true']):hover
233+
> * {
225234
--vaadin-icon-color: currentColor;
226235
--vaadin-text-color: currentColor;
227236
--vaadin-text-color-secondary: color-mix(in srgb, currentColor 70%, transparent);

packages/aura/src/components/item-overlay.css

Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
--vaadin-item-overlay-padding: var(--vaadin-gap-xs);
44
--vaadin-item-border-radius: max(var(--vaadin-radius-s), var(--vaadin-radius-m) - var(--vaadin-item-overlay-padding));
55
--vaadin-item-checkmark-color: var(--aura-accent-text-color);
6+
--vaadin-item-gap: var(--vaadin-gap-s);
67
}
78

89
:is(
@@ -19,18 +20,31 @@
1920
--vaadin-item-checkmark-color: var(--aura-accent-text-color);
2021
-webkit-user-select: none;
2122
user-select: none;
23+
--_highlight-color: light-dark(
24+
oklch(from var(--aura-accent-color-light) min(0.9, l) c h / max(0.05, l / 4)),
25+
oklch(from var(--aura-accent-color-dark) max(0.6, l) c h / max(0.2, l / 4))
26+
);
27+
gap: 0;
2228

2329
&::part(checkmark) {
2430
--vaadin-icon-visual-size: 75%;
31+
margin-inline-start: calc(var(--vaadin-gap-xs) * -1);
32+
}
33+
34+
&[aria-haspopup='true']::after {
35+
--vaadin-icon-visual-size: 90%;
36+
margin-inline-end: calc(var(--vaadin-gap-xs) * -1);
2537
}
2638

2739
&::part(content) {
2840
display: flex;
41+
padding-inline: var(--vaadin-gap-xs);
42+
gap: var(--vaadin-item-gap);
2943
}
3044

3145
@media (any-hover: hover) {
3246
&:not([disabled], [aria-disabled='true']):hover {
33-
background: color-mix(in srgb, var(--aura-accent-color) 10%, transparent);
47+
background: var(--_highlight-color);
3448

3549
&[theme~='filled'] {
3650
background: var(--aura-accent-color);
@@ -40,29 +54,12 @@
4054
--vaadin-text-color-disabled: color-mix(in srgb, var(--aura-accent-contrast-color) 50%, transparent);
4155
--vaadin-icon-color: var(--aura-accent-contrast-color);
4256
--vaadin-item-checkmark-color: var(--aura-accent-contrast-color);
43-
44-
> * {
45-
--aura-accent-color: var(--aura-accent-contrast-color);
46-
--aura-accent-text-color: var(--aura-accent-contrast-color);
47-
--aura-red: var(--aura-accent-contrast-color);
48-
--aura-red-text: var(--aura-accent-contrast-color);
49-
--aura-orange: var(--aura-accent-contrast-color);
50-
--aura-orange-text: var(--aura-accent-contrast-color);
51-
--aura-yellow: var(--aura-accent-contrast-color);
52-
--aura-yellow-text: var(--aura-accent-contrast-color);
53-
--aura-green: var(--aura-accent-contrast-color);
54-
--aura-green-text: var(--aura-accent-contrast-color);
55-
--aura-blue: var(--aura-accent-contrast-color);
56-
--aura-blue-text: var(--aura-accent-contrast-color);
57-
--aura-purple: var(--aura-accent-contrast-color);
58-
--aura-purple-text: var(--aura-accent-contrast-color);
59-
}
6057
}
6158
}
6259
}
6360

6461
&:active {
65-
background: color-mix(in srgb, var(--aura-accent-color) 10%, transparent);
62+
background: var(--_highlight-color);
6663
}
6764

6865
&[aria-expanded='true']:not(:hover) {
@@ -83,8 +80,6 @@
8380
/* TODO is there a better selector? */
8481
[role='menu'] [role='separator'] {
8582
margin-block: var(--vaadin-gap-xs);
86-
margin-inline-start: calc(
87-
var(--vaadin-icon-size, 1lh) + var(--vaadin-item-gap, var(--vaadin-gap-s)) + var(--vaadin-gap-xs) * 2
88-
);
83+
margin-inline: calc(var(--vaadin-gap-xs) + var(--vaadin-padding-inline-container));
8984
border-color: var(--vaadin-border-color);
9085
}

packages/aura/src/components/menu-bar.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,7 @@ vaadin-menu-bar-button[slot='overflow'] {
1515
font-family: system-ui, sans-serif;
1616
font-weight: 600;
1717
}
18+
19+
vaadin-menu-bar-button[aria-haspopup='true']::part(suffix)::after {
20+
--vaadin-icon-visual-size: 90%;
21+
}

0 commit comments

Comments
 (0)