From 3f394769dba92d57467f44d36419190a0d636a97 Mon Sep 17 00:00:00 2001 From: Manuel Cillero Date: Fri, 10 Oct 2025 10:55:51 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A7=20Revisi=C3=B3n=20del=20estado=20d?= =?UTF-8?q?e=20los=20men=C3=BAs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/base/component/menu/item.rs | 6 +++--- static/css/menu.css | 5 +++++ static/js/menu.js | 23 +++++++++++------------ 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/base/component/menu/item.rs b/src/base/component/menu/item.rs index c9f7903..c634218 100644 --- a/src/base/component/menu/item.rs +++ b/src/base/component/menu/item.rs @@ -137,14 +137,14 @@ impl Item { ..Default::default() } } - /* - pub fn megamenu(label: L10n, megamenu: Megamenu) -> Self { + + pub fn megamenu(label: L10n, megamenu: menu::Megamenu) -> Self { Item { item_kind: ItemKind::Megamenu(label, MegamenuGroups::with(megamenu)), ..Default::default() } } - */ + // **< Item BUILDER >*************************************************************************** #[builder_fn] diff --git a/static/css/menu.css b/static/css/menu.css index 6522f4a..428ba15 100644 --- a/static/css/menu.css +++ b/static/css/menu.css @@ -342,6 +342,11 @@ opacity: 1; visibility: visible; } + .menu.menu--closing .menu__children { + margin-top: 0 !important; + opacity: 0 !important; + visibility: hidden !important; + } } @media (prefers-reduced-motion: reduce) { diff --git a/static/js/menu.js b/static/js/menu.js index 1f09bfe..dca8e4d 100644 --- a/static/js/menu.js +++ b/static/js/menu.js @@ -1,12 +1,12 @@ +const getTitle = (li) => li.querySelector('.menu__label')?.textContent.trim() ?? ''; + function menu__showChildren(nav, children) { const li = children[0]; const submenu = li.querySelector('.menu__children'); submenu.classList.add('active'); submenu.style.animation = 'slideLeft 0.5s ease forwards'; - const labelEl = li.querySelector('.menu__label'); - const title = labelEl ? labelEl.textContent.trim() : (li.querySelector('a')?.textContent?.trim() ?? ''); - nav.querySelector('.menu__title').innerHTML = title; + nav.querySelector('.menu__title').textContent = getTitle(li);; nav.querySelector('.menu__header').classList.add('active'); } @@ -20,9 +20,7 @@ function menu__hideChildren(nav, children) { children.shift(); if (children.length > 0) { - const a = children[0].querySelector('a'); - const title = (a && a.textContent ? a.textContent.trim() : ''); - nav.querySelector('.menu__title').textContent = title; + nav.querySelector('.menu__title').textContent = getTitle(children[0]); } else { nav.querySelector('.menu__header').classList.remove('active'); nav.querySelector('.menu__title').textContent = ''; @@ -38,7 +36,7 @@ function menu__reset(menu, nav, overlay) { menu__toggle(nav, overlay); setTimeout(() => { nav.querySelector('.menu__header').classList.remove('active'); - nav.querySelector('.menu__title').innerHTML = ''; + nav.querySelector('.menu__title').textContent = ''; menu.querySelectorAll('.menu__children').forEach(submenu => { submenu.classList.remove('active'); submenu.style.removeProperty('animation'); @@ -85,12 +83,13 @@ document.querySelectorAll('.menu').forEach(menu => { menu__toggle(menuNav, menuOverlay); }); - window.onresize = function () { + let resizeTimeout; + window.addEventListener('resize', () => { if (menuNav.classList.contains('active')) { - var fontSizeRoot = parseFloat(getComputedStyle(document.documentElement).fontSize); - if (this.innerWidth >= 62 * fontSizeRoot) { + clearTimeout(resizeTimeout); + resizeTimeout = setTimeout(() => { menuChildren = menu__reset(menu, menuNav, menuOverlay); - } + }, 150); } - }; + }); });