From a0e7845bce5fe7505836bf225fc46f6dc020439d Mon Sep 17 00:00:00 2001 From: Tony Air Date: Sat, 30 Dec 2023 12:59:52 +0200 Subject: [PATCH] FIX: Dropdown toggler --- package.json | 2 +- src/js/ui/dropdown.js | 26 +++++++++++++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 7ca1d59..e8bf985 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@a2nt/ss-bootstrap-ui-webpack-boilerplate-react", - "version": "5.2.2", + "version": "5.2.3", "description": "This UI Kit allows you to build Bootstrap 5 webapp with some extra UI features. It's easy to extend and easy to convert HTML templates to CMS templates.", "author": "Tony Air ", "license": "BSD-2-Clause", diff --git a/src/js/ui/dropdown.js b/src/js/ui/dropdown.js index 08f246c..b98738c 100644 --- a/src/js/ui/dropdown.js +++ b/src/js/ui/dropdown.js @@ -18,16 +18,21 @@ const DropdownHoverUI = ((window) => { if (next) { next.classList.remove(...ACTIVECLS) } + el.classList.remove('show') }) } const Toggle = (el) => { - HideAll() + console.log(`${NAME}: nav toggle`) const menu = el.querySelector('.dropdown-menu') - if (menu) { - menu.classList.toggle('show') + const isOpenned = menu.classList.contains('show') + + HideAll() + + if (menu && !isOpenned) { + menu.classList.add('show') } } @@ -60,13 +65,22 @@ const DropdownHoverUI = ((window) => { const hoverableEls = document.querySelectorAll('[data-bs-toggle="hover"]') const attachHoverEvents = (el) => { + if (el.classList.contains(`${NAME}-hover-active`)) { + return + } + el.addEventListener('mouseover', Show, false) el.addEventListener('mouseleave', Hide, false) el.classList.add(`${NAME}-active`) + el.classList.add(`${NAME}-hover-active`) } const attachClickEvents = (el) => { + if (el.classList.contains(`${NAME}-click-active`)) { + return + } + el.addEventListener('click', (e) => { e.preventDefault() @@ -86,7 +100,7 @@ const DropdownHoverUI = ((window) => { window.app.Router.openURL(href) } - el.dataset.firstClick = true + if (parent) { // big screen click @@ -102,12 +116,14 @@ const DropdownHoverUI = ((window) => { window.app.Router.openURL(href) } - console.log(`${NAME}: nav toggle`) Toggle(parent) } + + el.dataset.firstClick = true }) el.classList.add(`${NAME}-active`) + el.classList.add(`${NAME}-click-active`) } // Hide all for outside clicks