86 lines
2.5 KiB
JavaScript
86 lines
2.5 KiB
JavaScript
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
const burgerBtn = document.getElementById('burger-btn');
|
|
const mobileMenu = document.getElementById('mobile-menu');
|
|
let isMenuOpen = false;
|
|
|
|
function toggleMenu() {
|
|
isMenuOpen = !isMenuOpen;
|
|
const icon = burgerBtn.querySelector('i');
|
|
|
|
if (isMenuOpen) {
|
|
mobileMenu.classList.remove('hidden');
|
|
mobileMenu.style.maxHeight = '400px';
|
|
mobileMenu.style.opacity = '1';
|
|
|
|
if (icon) {
|
|
icon.setAttribute('data-lucide', 'x');
|
|
lucide.createIcons();
|
|
}
|
|
burgerBtn.setAttribute('aria-expanded', 'true');
|
|
} else {
|
|
mobileMenu.style.maxHeight = '0';
|
|
mobileMenu.style.opacity = '0';
|
|
setTimeout(() => {
|
|
mobileMenu.classList.add('hidden');
|
|
}, 300);
|
|
|
|
if (icon) {
|
|
icon.setAttribute('data-lucide', 'menu');
|
|
lucide.createIcons();
|
|
}
|
|
burgerBtn.setAttribute('aria-expanded', 'false');
|
|
}
|
|
}
|
|
|
|
if (burgerBtn && mobileMenu) {
|
|
burgerBtn.addEventListener('click', function(e) {
|
|
e.stopPropagation();
|
|
toggleMenu();
|
|
});
|
|
|
|
|
|
const mobileLinks = mobileMenu.querySelectorAll('a');
|
|
mobileLinks.forEach(link => {
|
|
link.addEventListener('click', function() {
|
|
toggleMenu();
|
|
});
|
|
});
|
|
|
|
|
|
document.addEventListener('click', function(e) {
|
|
if (isMenuOpen && !mobileMenu.contains(e.target) && !burgerBtn.contains(e.target)) {
|
|
toggleMenu();
|
|
}
|
|
});
|
|
|
|
|
|
window.addEventListener('resize', function() {
|
|
if (window.innerWidth >= 768 && isMenuOpen) {
|
|
toggleMenu();
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
const header = document.querySelector('header');
|
|
if (header) {
|
|
window.addEventListener('scroll', function() {
|
|
if (window.scrollY > 10) {
|
|
header.classList.add('shadow-lg');
|
|
header.classList.remove('shadow-md');
|
|
} else {
|
|
header.classList.add('shadow-md');
|
|
header.classList.remove('shadow-lg');
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
const dateInput = document.getElementById('date');
|
|
if (dateInput) {
|
|
const today = new Date().toISOString().split('T')[0];
|
|
dateInput.setAttribute('min', today);
|
|
}
|
|
});
|