Alexander Zinchuk 8d5858bab4 Menu: Support nested items (#6522)
By @kotevcode
2026-01-13 01:14:23 +01:00

136 lines
2.6 KiB
SCSS

.Menu {
&.fluid .bubble {
width: auto;
min-width: 13.5rem;
}
.backdrop {
position: fixed;
z-index: var(--z-menu-backdrop);
top: -100vh;
right: -100vw;
bottom: -100vh;
left: -100vw;
}
.bubble {
--offset-y: calc(100% + 0.5rem);
--offset-x: 0;
--animation-start-scale: 0.85;
position: absolute;
z-index: var(--z-menu-bubble);
transform: scale(var(--animation-start-scale));
overflow: hidden;
overscroll-behavior: contain;
display: block;
min-width: 13.5rem;
margin: 0;
padding: 0.5rem 0;
border-radius: var(--border-radius-default);
color: var(--color-text);
list-style: none;
background-color: var(--color-background);
box-shadow: 0 0.25rem 0.5rem 0.125rem var(--color-default-shadow);
transition: opacity 150ms cubic-bezier(0.2, 0, 0.2, 1), transform 150ms cubic-bezier(0.2, 0, 0.2, 1) !important;
&.open {
transform: scale(1);
.active-view-transition & {
view-transition-name: open-menu-bubble;
}
}
&.closing {
transition: opacity 0.2s ease-in, transform 0.2s ease-in !important;
}
&.close-fast {
transition-duration: 70ms !important;
}
body.no-context-menu-animations & {
--animation-start-scale: 1 !important;
transition: opacity 0.15s !important;
}
&.top {
top: var(--offset-y);
}
&.bottom {
bottom: var(--offset-y);
}
&.left {
left: var(--offset-x);
}
&.right {
right: var(--offset-x);
}
&.with-footer {
padding-bottom: 0;
}
}
body.has-open-dialog &:not(.with-menu-transitions) .bubble {
transition: none !important;
}
.footer {
padding: 0.25rem 0.5rem;
font-size: 0.75rem;
line-height: 1.25;
color: var(--color-text-secondary);
text-align: center;
background: var(--color-chat-hover);
}
&.compact {
.bubble {
padding: 0.25rem 0;
background: var(--color-background-compact-menu);
backdrop-filter: blur(10px);
body.no-menu-blur & {
background: var(--color-background);
backdrop-filter: none;
}
}
.footer {
background: none;
}
&.no-blur .bubble {
background: var(--color-background);
}
}
.menu-loading-row {
width: calc(100% - 2rem);
margin: 0.125rem 1rem;
}
&.in-portal {
position: absolute;
z-index: var(--z-portal-menu);
}
}
// Hacky way to fix z-index issues with overlays in View Transitions
html::view-transition-group(open-menu-bubble) {
z-index: var(--z-portal-menu);
}