39 lines
1.3 KiB
JavaScript
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); |