Easy_solution/assets/js/hoverable-collapse.js

39 lines
1.3 KiB
JavaScript

//Open submenu on hover in compact sidebar mode and horizontal menu mode
function initSubMenu(){
var sidebar = document.querySelectorAll('.sidebar .nav-item')
sidebar.forEach(element => {
element.addEventListener('mouseenter', eventMenu)
element.addEventListener('mouseleave', eventMenu)
})
}
function eventMenu(e){
var body = document.querySelector('body');
var sidebarIconOnly = body.classList.contains("sidebar-icon-only");
var sidebarFixed = body.classList.contains("sidebar-fixed");
if (!('ontouchstart' in document.documentElement)) {
if (sidebarIconOnly) {
var menuItem = this;
if (e.type === 'mouseenter') {
menuItem.classList.add('hover-open')
} else {
menuItem.classList.remove('hover-open')
}
}
}
}
// Exécuter l'initialisation au chargement de la page
document.addEventListener('DOMContentLoaded', initSubMenu);
// Support pour différents systèmes de navigation
if (typeof Turbo !== 'undefined') {
document.addEventListener('turbo:load', initSubMenu);
document.addEventListener('turbo:render', initSubMenu);
}
// Support pour les applications SPA qui utilisent l'historique de navigation
window.addEventListener('popstate', initSubMenu);