Refactor mobile menu implementation in Header component: update button ID, enhance toggle functionality with detailed logging, and streamline event listeners for improved user experience.
This commit is contained in:
@@ -94,7 +94,7 @@ import '../styles/main.css';
|
|||||||
</a>
|
</a>
|
||||||
|
|
||||||
<!-- Mobile menu button -->
|
<!-- Mobile menu button -->
|
||||||
<button class="mobile-menu-btn" onclick="toggleMobileMenu()">
|
<button class="mobile-menu-btn" id="mobile-menu-btn">
|
||||||
<svg class="mobile-menu-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
<svg class="mobile-menu-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path>
|
||||||
</svg>
|
</svg>
|
||||||
@@ -130,27 +130,48 @@ import '../styles/main.css';
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
function toggleMobileMenu() {
|
function toggleMobileMenu() {
|
||||||
|
console.log('toggleMobileMenu function called');
|
||||||
const menu = document.getElementById('mobile-menu');
|
const menu = document.getElementById('mobile-menu');
|
||||||
|
console.log('Menu element:', menu);
|
||||||
if (menu) {
|
if (menu) {
|
||||||
|
const wasHidden = menu.classList.contains('mobile-menu-hidden');
|
||||||
menu.classList.toggle('mobile-menu-hidden');
|
menu.classList.toggle('mobile-menu-hidden');
|
||||||
console.log('Mobile menu toggled:', !menu.classList.contains('mobile-menu-hidden'));
|
const isNowHidden = menu.classList.contains('mobile-menu-hidden');
|
||||||
|
console.log('Menu was hidden:', wasHidden, 'Menu is now hidden:', isNowHidden);
|
||||||
|
console.log('Menu classes:', menu.className);
|
||||||
|
} else {
|
||||||
|
console.log('Menu element not found!');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close mobile menu when clicking outside
|
// Initialize mobile menu functionality
|
||||||
document.addEventListener('click', function(event) {
|
|
||||||
const mobileMenu = document.getElementById('mobile-menu');
|
|
||||||
const mobileMenuBtn = document.querySelector('.mobile-menu-btn');
|
|
||||||
|
|
||||||
if (mobileMenu && mobileMenuBtn &&
|
|
||||||
!mobileMenu.contains(event.target as Node) &&
|
|
||||||
!mobileMenuBtn.contains(event.target as Node)) {
|
|
||||||
mobileMenu.classList.add('mobile-menu-hidden');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Close mobile menu when clicking on a mobile nav link
|
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
console.log('DOM loaded, setting up mobile menu');
|
||||||
|
|
||||||
|
// Add click event to mobile menu button
|
||||||
|
const mobileMenuBtn = document.getElementById('mobile-menu-btn');
|
||||||
|
console.log('Mobile menu button:', mobileMenuBtn);
|
||||||
|
if (mobileMenuBtn) {
|
||||||
|
mobileMenuBtn.addEventListener('click', function(e) {
|
||||||
|
console.log('Mobile menu button clicked!');
|
||||||
|
e.preventDefault();
|
||||||
|
toggleMobileMenu();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close mobile menu when clicking outside
|
||||||
|
document.addEventListener('click', function(event) {
|
||||||
|
const mobileMenu = document.getElementById('mobile-menu');
|
||||||
|
const mobileMenuBtn = document.getElementById('mobile-menu-btn');
|
||||||
|
|
||||||
|
if (mobileMenu && mobileMenuBtn &&
|
||||||
|
!mobileMenu.contains(event.target as Node) &&
|
||||||
|
!mobileMenuBtn.contains(event.target as Node)) {
|
||||||
|
mobileMenu.classList.add('mobile-menu-hidden');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Close mobile menu when clicking on a mobile nav link
|
||||||
const mobileNavLinks = document.querySelectorAll('.mobile-nav-link');
|
const mobileNavLinks = document.querySelectorAll('.mobile-nav-link');
|
||||||
mobileNavLinks.forEach(link => {
|
mobileNavLinks.forEach(link => {
|
||||||
link.addEventListener('click', function() {
|
link.addEventListener('click', function() {
|
||||||
@@ -160,13 +181,10 @@ import '../styles/main.css';
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
// Add active state to current page
|
// Add active state to current page
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
|
||||||
const currentPath = window.location.pathname;
|
const currentPath = window.location.pathname;
|
||||||
const navLinks = document.querySelectorAll('.nav-link');
|
const navLinks = document.querySelectorAll('.nav-link');
|
||||||
const mobileNavLinks = document.querySelectorAll('.mobile-nav-link');
|
|
||||||
|
|
||||||
// Desktop navigation active state
|
// Desktop navigation active state
|
||||||
navLinks.forEach(link => {
|
navLinks.forEach(link => {
|
||||||
@@ -561,10 +579,6 @@ import '../styles/main.css';
|
|||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mobile-menu-hidden {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 1024px) {
|
@media (min-width: 1024px) {
|
||||||
.mobile-menu {
|
.mobile-menu {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
|
Reference in New Issue
Block a user