30 lines
892 B
JavaScript
30 lines
892 B
JavaScript
/*
|
|
Navbar
|
|
========================================
|
|
*/
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
document.querySelectorAll('.dropdown').forEach(dropdown => {
|
|
const toggle = dropdown.querySelector('.dropdown-toggle')
|
|
const mode = dropdown.getAttribute('data-dropdown') || 'click'
|
|
|
|
if (mode === 'hover') {
|
|
dropdown.addEventListener('mouseenter', () => dropdown.classList.add('open'))
|
|
dropdown.addEventListener('mouseleave', () => dropdown.classList.remove('open'))
|
|
} else {
|
|
toggle.addEventListener('click', e => {
|
|
e.preventDefault()
|
|
dropdown.classList.toggle('open')
|
|
})
|
|
}
|
|
})
|
|
|
|
document.addEventListener('click', e => {
|
|
if (!e.target.closest('.dropdown-toggle')) {
|
|
document.querySelectorAll('.dropdown:not([data-dropdown="hover"])').forEach(dropdown => {
|
|
if (!dropdown.contains(e.target)) dropdown.classList.remove('open')
|
|
})
|
|
}
|
|
})
|
|
})
|