2025-11-19 21:21:47 +03:00

94 lines
3.2 KiB
JavaScript

// Mobile Menu Script
document.addEventListener('DOMContentLoaded', function() {
console.log('Mobile menu script loaded'); // Для отладки
const mobileMenuBtn = document.getElementById('mobileMenuBtn');
const mobileMenuClose = document.getElementById('mobileMenuClose');
const mobileMenuOverlay = document.getElementById('mobileMenuOverlay');
const mobileMenu = document.getElementById('mobileMenu');
const mobileThemeToggle = document.getElementById('mobile-theme-toggle');
const mainThemeToggle = document.getElementById('theme-toggle');
// Проверяем, что элементы существуют
if (!mobileMenuBtn || !mobileMenu) {
console.error('Mobile menu elements not found');
return;
}
console.log('Mobile menu elements found:', {
mobileMenuBtn,
mobileMenuClose,
mobileMenuOverlay,
mobileMenu,
mobileThemeToggle,
mainThemeToggle
});
// Открытие мобильного меню
mobileMenuBtn.addEventListener('click', function() {
console.log('Opening mobile menu');
mobileMenu.classList.add('active');
mobileMenuOverlay.style.display = 'block';
document.body.style.overflow = 'hidden';
});
// Закрытие мобильного меню
function closeMobileMenu() {
console.log('Closing mobile menu');
mobileMenu.classList.remove('active');
mobileMenuOverlay.style.display = 'none';
document.body.style.overflow = '';
}
if (mobileMenuClose) {
mobileMenuClose.addEventListener('click', closeMobileMenu);
}
if (mobileMenuOverlay) {
mobileMenuOverlay.addEventListener('click', closeMobileMenu);
}
// Закрытие меню при клике на ссылку
const mobileNavLinks = document.querySelectorAll('.mobile-nav-link');
mobileNavLinks.forEach(link => {
link.addEventListener('click', closeMobileMenu);
});
// Синхронизация переключателей темы
function syncThemeToggles() {
if (mobileThemeToggle && mainThemeToggle) {
mobileThemeToggle.checked = mainThemeToggle.checked;
}
}
if (mainThemeToggle) {
mainThemeToggle.addEventListener('change', function() {
console.log('Main theme toggle changed:', this.checked);
syncThemeToggles();
});
}
if (mobileThemeToggle) {
mobileThemeToggle.addEventListener('change', function() {
console.log('Mobile theme toggle changed:', this.checked);
if (mainThemeToggle) {
mainThemeToggle.checked = this.checked;
// Триггерим событие change
const event = new Event('change');
mainThemeToggle.dispatchEvent(event);
}
});
}
// Инициализация синхронизации
syncThemeToggles();
// Закрытие меню по ESC
document.addEventListener('keydown', function(event) {
if (event.key === 'Escape') {
closeMobileMenu();
}
});
console.log('Mobile menu script initialized successfully');
});