Skip to content

Commit 9900f9d

Browse files
authored
feat: add aura item overlays styles (#10252)
1 parent a74db59 commit 9900f9d

File tree

6 files changed

+114
-4
lines changed

6 files changed

+114
-4
lines changed

dev/aura.html

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@
8989
const view = document.querySelector('.components-view');
9090

9191
// Menu Bar
92-
view.querySelector('vaadin-menu-bar').items = [
92+
const menuBar = view.querySelector('vaadin-menu-bar');
93+
menuBar.items = [
9394
{
9495
text: 'Actions',
9596
children: [
@@ -114,6 +115,15 @@
114115
],
115116
},
116117
];
118+
view.querySelector('#filled-menu-bar').addEventListener('change', (e) => {
119+
if (e.target.checked) {
120+
menuBar.setAttribute('theme', 'filled');
121+
menuBar.items[0].children[9].theme = 'danger filled';
122+
} else {
123+
menuBar.removeAttribute('theme');
124+
menuBar.items[0].children[9].theme = 'danger';
125+
}
126+
});
117127

118128
// Select
119129
view.querySelector('vaadin-select').renderer = (root) => {
@@ -579,8 +589,11 @@ <h1>Components</h1>
579589
</vaadin-radio-group>
580590
</div>
581591

582-
<div class="aura-surface component">
592+
<div class="aura-surface component column">
583593
<vaadin-menu-bar></vaadin-menu-bar>
594+
<vaadin-checkbox id="filled-menu-bar" label="Filled">
595+
<vaadin-tooltip slot="tooltip" text="Apply the filled variant on the menu items"></vaadin-tooltip>
596+
</vaadin-checkbox>
584597
</div>
585598

586599
<div class="aura-surface component wide">

packages/aura/aura.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@
1616
@import './src/components/dialog.css';
1717
@import './src/components/grid.css';
1818
@import './src/components/input-container.css';
19+
@import './src/components/item-overlay.css';
1920
@import './src/components/login.css';
2021
@import './src/components/master-detail-layout.css';
22+
@import './src/components/menu-bar.css';
2123
@import './src/components/message-input.css';
2224
@import './src/components/multi-select-combo-box.css';
2325
@import './src/components/notification.css';

packages/aura/src/color.css

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,10 @@
8282

8383
:where(:root, :host),
8484
vaadin-button,
85-
vaadin-menu-bar-button,
85+
vaadin-context-menu-item,
8686
vaadin-drawer-toggle,
87+
vaadin-menu-bar-button,
88+
vaadin-menu-bar-item,
8789
vaadin-checkbox::part(checkbox),
8890
vaadin-radio-button::part(radio),
8991
vaadin-side-nav-item::part(content) {

packages/aura/src/components/button.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ vaadin-drawer-toggle:empty {
5151
/* prettier-ignore */
5252
:is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle):has([slot='suffix']:is(vaadin-icon, svg, i[class*='fa-'], vaadin-avatar)),
5353
vaadin-drawer-toggle:empty,
54-
vaadin-menu-bar-button[aria-haspopup='true'] {
54+
vaadin-menu-bar-button[aria-haspopup='true']:not([slot='overflow']) {
5555
padding-inline-end: max(var(--vaadin-padding-s), round(var(--vaadin-radius-m) / 1.75, 1px));
5656
}
5757

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
:where(:root, :host) {
2+
--vaadin-item-overlay-padding: var(--vaadin-gap-xs);
3+
--vaadin-item-border-radius: calc(var(--vaadin-radius-m) - var(--vaadin-item-overlay-padding));
4+
--vaadin-item-checkmark-color: var(--aura-accent-text);
5+
}
6+
7+
:is(
8+
vaadin-avatar-group-menu-item,
9+
vaadin-combo-box-item,
10+
vaadin-context-menu-item,
11+
vaadin-time-picker-item,
12+
vaadin-item,
13+
vaadin-menu-bar-item,
14+
vaadin-multi-select-combo-box-item,
15+
vaadin-select-item[role]
16+
) {
17+
font-weight: var(--aura-font-weight-medium);
18+
--vaadin-item-checkmark-color: var(--aura-accent-text);
19+
20+
&::part(checkmark) {
21+
--vaadin-icon-visual-size: 75%;
22+
}
23+
24+
&::part(content) {
25+
display: flex;
26+
}
27+
28+
@media (any-hover: hover) {
29+
&:not([disabled], [aria-disabled='true']):hover {
30+
background: color-mix(in srgb, var(--aura-accent-color) 10%, transparent);
31+
32+
&[theme~='filled'] {
33+
background: var(--aura-accent-color);
34+
color: var(--aura-accent-contrast);
35+
--vaadin-text-color: var(--aura-accent-contrast);
36+
--vaadin-text-color-secondary: color-mix(in srgb, var(--aura-accent-contrast) 70%, transparent);
37+
--vaadin-text-color-disabled: color-mix(in srgb, var(--aura-accent-contrast) 50%, transparent);
38+
--vaadin-item-checkmark-color: var(--aura-accent-contrast);
39+
40+
> * {
41+
--aura-red: var(--aura-accent-contrast);
42+
--aura-red-text: var(--aura-accent-contrast);
43+
--aura-orange: var(--aura-accent-contrast);
44+
--aura-orange-text: var(--aura-accent-contrast);
45+
--aura-yellow: var(--aura-accent-contrast);
46+
--aura-yellow-text: var(--aura-accent-contrast);
47+
--aura-green: var(--aura-accent-contrast);
48+
--aura-green-text: var(--aura-accent-contrast);
49+
--aura-blue: var(--aura-accent-contrast);
50+
--aura-blue-text: var(--aura-accent-contrast);
51+
--aura-purple: var(--aura-accent-contrast);
52+
--aura-purple-text: var(--aura-accent-contrast);
53+
}
54+
}
55+
}
56+
}
57+
58+
&[aria-expanded='true']:not(:hover) {
59+
background: var(--vaadin-background-container-strong);
60+
}
61+
62+
&[theme~='danger'] {
63+
--aura-accent-light: var(--aura-red);
64+
--aura-accent-dark: var(--aura-red);
65+
color: var(--aura-red-text);
66+
}
67+
}
68+
69+
/* TODO is there a better selector? */
70+
[role='menu'] [role='separator'] {
71+
margin-block: var(--vaadin-gap-xs);
72+
margin-inline-start: calc(
73+
var(--vaadin-icon-size, 1lh) + var(--vaadin-item-gap, var(--vaadin-gap-s)) + var(--vaadin-gap-xs) * 2
74+
);
75+
border-color: var(--vaadin-border-color);
76+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
@container not style(--vaadin-menu-bar-gap) {
2+
vaadin-menu-bar:not([has-single-button]) vaadin-menu-bar-button:not([first-visible]) {
3+
border-inline-start-color: transparent;
4+
}
5+
}
6+
7+
@media (any-hover: hover) {
8+
/* Increase specificity to reset hover styles */
9+
vaadin-menu-bar-button vaadin-menu-bar-item:not([disabled]):not([tabindex]):hover {
10+
background: transparent;
11+
}
12+
}
13+
14+
vaadin-menu-bar-button[slot='overflow'] {
15+
font-family: system-ui, sans-serif;
16+
font-weight: 600;
17+
}

0 commit comments

Comments
 (0)