Skip to content

Commit 4eb3040

Browse files
committed
Menu actions
1 parent 8cc7dcf commit 4eb3040

File tree

3 files changed

+36
-27
lines changed

3 files changed

+36
-27
lines changed

web/scripts/build.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ async function buildVersionsMenuList(versions, currentVersion) {
8989
async function buildVersionMenu(versions, currentVersion) {
9090
const innerMenu = await buildVersionsMenuList(versions, currentVersion);
9191

92-
return `<div class="dropdown versions-menu"><a href="#" class="current">${currentVersion}</a>${innerMenu}</div>`;
92+
return `<div class="dropdown versions-menu"><div class="dropdown-wrapper"><a href="#" class="current">${currentVersion}</a>${innerMenu}</div><div class="backdrop"></div></div>`;
9393
}
9494

9595
async function build() {

web/src/js/main.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,15 @@ hljs.registerLanguage('sh', bash);
1212

1313
document.addEventListener('DOMContentLoaded', function(_event) {
1414
const menuSwitcher = document.getElementById('menu-switcher');
15-
const menuBackdrop = document.querySelectorAll(".menu .backdrop")[0];
15+
const menuBackdrop = document.querySelector(".menu > .backdrop");
1616
const menu = document.getElementsByClassName('menu')[0];
1717
const collapsibleTrigger = document.querySelectorAll(".collapsible > a");
18-
const dropdownTriggers = document.querySelectorAll(".dropdown > a");
18+
const dropdownTriggers = document.querySelectorAll(".dropdown .dropdown-wrapper > a");
1919
const currentVersion = document.querySelector('.versions-menu a.current');
20+
const dropdownBackdrop = document.querySelector('.dropdown .backdrop');
2021

2122
function toggleMenu() {
22-
if (menu.classList.contains('active')) {
23-
menu.classList.remove('active');
24-
} else {
25-
menu.classList.add('active');
26-
}
23+
menu.classList.toggle('active');
2724
}
2825

2926
menuBackdrop.addEventListener('click',function(_e) {
@@ -45,13 +42,17 @@ document.addEventListener('DOMContentLoaded', function(_event) {
4542
dropdownTriggers.forEach(el => {
4643
el.addEventListener('click', function(e) {
4744
e.preventDefault();
48-
this.parentElement.classList.toggle('active');
45+
this.parentElement.parentElement.classList.toggle('active');
4946
})
5047
})
5148

5249
currentVersion.addEventListener('click', function(e) {
5350
e.preventDefault();
5451
});
5552

53+
dropdownBackdrop.addEventListener('click', function(e) {
54+
this.parentElement.classList.remove('active');
55+
})
56+
5657
hljs.highlightAll();
5758
});

web/src/scss/parts/header.scss

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ nav {
6060
align-items: center;
6161
overflow-y: auto;
6262

63-
.backdrop {
63+
& > .backdrop {
6464
display: block;
6565
}
6666

@@ -191,35 +191,39 @@ nav {
191191
}
192192

193193
.dropdown {
194-
position: relative;
195-
196194
a {
197195
white-space: nowrap;
198196
}
199197

200-
& > a::after {
201-
content: '';
202-
display: inline-block;
203-
width: 5px;
204-
height: 5px;
205-
margin: -4px 0 0 0.5rem;
206-
vertical-align: middle;
207-
border-right: 2px solid rgba(248, 248, 242, .7);
208-
border-bottom: 2px solid rgba(248, 248, 242, .7);
209-
rotate: 45deg;
210-
}
198+
.dropdown-wrapper {
199+
position: relative;
200+
201+
& > a::after {
202+
content: '';
203+
display: inline-block;
204+
width: 5px;
205+
height: 5px;
206+
margin: -4px 0 0 0.5rem;
207+
vertical-align: middle;
208+
border-right: 2px solid rgba(248, 248, 242, .7);
209+
border-bottom: 2px solid rgba(248, 248, 242, .7);
210+
rotate: 45deg;
211+
}
211212

212-
.dropdown-block {
213-
display: none;
213+
.dropdown-block {
214+
display: none;
214215

215-
a {
216-
display: block;
216+
a {
217+
display: block;
218+
}
217219
}
218220
}
221+
219222
&.active {
220223
.dropdown-block {
221224
display: block;
222225
position: absolute;
226+
z-index: 1;
223227
left: 0;
224228
border: 1px solid $border-color-light;
225229
padding: 0.5rem 1rem;
@@ -236,6 +240,10 @@ nav {
236240
font-weight: 500;
237241
}
238242
}
243+
244+
.backdrop {
245+
display: block;
246+
}
239247
}
240248
}
241249
}

0 commit comments

Comments
 (0)