From 7f82151cce4372ff54f8240f616cf45181f17c12 Mon Sep 17 00:00:00 2001 From: Manuel Cillero Date: Sat, 2 Mar 2024 22:06:28 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=B8=20Improve=20menu=20on=20links=20op?= =?UTF-8?q?ening=20in=20new=20window?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/base/js/menu.js | 44 +++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/static/base/js/menu.js b/static/base/js/menu.js index c09056d4..0565f194 100644 --- a/static/base/js/menu.js +++ b/static/base/js/menu.js @@ -13,7 +13,7 @@ function menu__hideChildren(nav, children) { submenu.style.animation = 'slideRight 0.5s ease forwards'; setTimeout(() => { submenu.classList.remove('active'); - submenu.style.removeProperty("animation"); + submenu.style.removeProperty('animation'); }, 300); children.shift(); @@ -31,13 +31,17 @@ function menu__toggle(nav, overlay) { overlay.classList.toggle('active'); } -function menu__reset(menu, nav) { - nav.querySelector('.menu__header').classList.remove('active'); - nav.querySelector('.menu__title').innerHTML = ''; - menu.querySelectorAll('.menu__subs').forEach(submenu => { - submenu.classList.remove('active'); - submenu.style.removeProperty("animation"); - }); +function menu__reset(menu, nav, overlay) { + menu__toggle(nav, overlay); + setTimeout(() => { + nav.querySelector('.menu__header').classList.remove('active'); + nav.querySelector('.menu__title').innerHTML = ''; + menu.querySelectorAll('.menu__subs').forEach(submenu => { + submenu.classList.remove('active'); + submenu.style.removeProperty('animation'); + }); + }, 300); + return []; } document.querySelectorAll('.menu__container').forEach(menu => { @@ -61,11 +65,14 @@ document.querySelectorAll('.menu__container').forEach(menu => { }); menu.querySelector('.menu__close').addEventListener('click', () => { - menu__toggle(menuNav, menuOverlay); - setTimeout(() => { - menu__reset(menu, menuNav); - menuChildren = []; - }, 300); + menuChildren = menu__reset(menu, menuNav, menuOverlay); + }); + + menu.querySelectorAll('.menu__link > a[target="_blank"]').forEach(link => { + link.addEventListener('click', (e) => { + menuChildren = menu__reset(menu, menuNav, menuOverlay); + e.target.blur(); + }); }); menu.querySelector('.menu__trigger').addEventListener('click', () => { @@ -77,13 +84,10 @@ document.querySelectorAll('.menu__container').forEach(menu => { }); window.onresize = function () { - if (this.innerWidth >= 992) { - if (menuNav.classList.contains('active')) { - menu__toggle(menuNav, menuOverlay); - setTimeout(() => { - menu__reset(menu, menuNav); - menuChildren = []; - }, 300); + if (menuNav.classList.contains('active')) { + var fontSizeRoot = parseFloat(getComputedStyle(document.documentElement).fontSize); + if (this.innerWidth >= 62 * fontSizeRoot) { + menuChildren = menu__reset(menu, menuNav, menuOverlay); } } };