// auxiliary function closes the user profile menu function closeUserControls() { let userControls = document.querySelector("#user-controls"); if (userControls) userControls.removeAttribute("open"); } function closeLeftMenu() { let leftMenu = document.querySelector("#main__menu"); if (leftMenu) leftMenu.removeAttribute("open"); } function closeRightMenu() { let rightMenu = document.querySelectorAll(".jsRightMenu"); if (Array.from(rightMenu).filter(el => el.hasAttribute("open")).length > 0) { Array.from(document.querySelectorAll(".views-container")).forEach(vC => vC.classList.toggle("sidebar-is-closed") ); Array.from(rightMenu).forEach(el => el.removeAttribute("open")); } } function openRightMenu() { let rightMenu = document.querySelectorAll(".jsRightMenu"); Array.from(rightMenu).forEach(el => el.setAttribute("open", "")); Array.from(document.querySelectorAll(".views-container")).forEach(vC => vC.classList.toggle("sidebar-is-closed") ); } document.addEventListener("DOMContentLoaded", function(event) { //- View change event window.addEventListener("navigate", event => { closeLeftMenu(); closeUserControls(); }); // Document -> close menu document.addEventListener("click", event => { if (!event.target.closest("#user-controls")) { closeUserControls(); } if ( !event.target.closest("#main__menu") && event.target.id != "toggleMainMenu" ) { closeLeftMenu(); } if ( !event.target.className.includes("jsMobileSidebarOpenButton") && !event.target.className.includes("jsOffsiteToggle") ) { closeRightMenu(); } }); // listen for keypress document.onkeydown = e => { e = e || window.event; if (e.key === "Escape" || e.key === "Esc") { closeUserControls(); closeLeftMenu(); closeRightMenu(); } }; document.querySelector("#toggleMainMenu").addEventListener("click", event => { let leftMenu = document.querySelector("#main__menu"); if (leftMenu.hasAttribute("open")) { closeLeftMenu(); } else { leftMenu.setAttribute("open", ""); } }); const rightMenus = Array.from(document.querySelectorAll("nav.jsRightMenu")); rightMenus.forEach(rightMenu => { const btnRightMenu = rightMenu.querySelector("li.jsOffsiteToggle"); btnRightMenu.addEventListener("click", e => { if (rightMenu.hasAttribute("open")) { closeRightMenu(); } else { openRightMenu(); } }); }); Array.from(document.querySelectorAll(".jsMobileSidebarOpenButton")).forEach( el => { el.addEventListener("click", event => { openRightMenu(); }); } ); });