Skip to content

Commit 242ba0b

Browse files
author
Mathieu-ai
committed
feat: - mobile sidebar fix
1 parent 7b3a872 commit 242ba0b

File tree

3 files changed

+368
-273
lines changed

3 files changed

+368
-273
lines changed

docs/app.js

Lines changed: 71 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -583,18 +583,83 @@ class FunctionsDocs {
583583
const sidebarOverlay = document.getElementById('sidebarOverlay');
584584

585585
if (mobileMenuBtn && sidebar && sidebarOverlay) {
586-
mobileMenuBtn.addEventListener('click', () => {
587-
sidebar.classList.toggle('-translate-x-full');
588-
if (sidebar.classList.contains('-translate-x-full')) {
589-
sidebarOverlay.classList.add('opacity-0', 'pointer-events-none');
590-
} else {
586+
// Debug logging
587+
// console.log('Mobile menu elements found:', { mobileMenuBtn, sidebar, sidebarOverlay });
588+
589+
mobileMenuBtn.addEventListener('click', (e) => {
590+
e.preventDefault();
591+
e.stopPropagation();
592+
593+
// console.log('Mobile menu button clicked');
594+
595+
// Toggle sidebar visibility
596+
const isHidden = sidebar.classList.contains('-translate-x-full');
597+
// console.log('Sidebar is currently hidden:', isHidden);
598+
599+
if (isHidden) {
600+
// Show sidebar
601+
// console.log('Showing sidebar');
602+
sidebar.classList.remove('-translate-x-full');
591603
sidebarOverlay.classList.remove('opacity-0', 'pointer-events-none');
604+
document.body.style.overflow = 'hidden'; // Prevent body scroll
605+
} else {
606+
// Hide sidebar
607+
// console.log('Hiding sidebar');
608+
sidebar.classList.add('-translate-x-full');
609+
sidebarOverlay.classList.add('opacity-0', 'pointer-events-none');
610+
document.body.style.overflow = ''; // Restore body scroll
592611
}
593612
});
594613

595-
sidebarOverlay.addEventListener('click', () => {
614+
// Close sidebar when clicking overlay
615+
sidebarOverlay.addEventListener('click', (e) => {
616+
// console.log('Overlay clicked, hiding sidebar');
596617
sidebar.classList.add('-translate-x-full');
597618
sidebarOverlay.classList.add('opacity-0', 'pointer-events-none');
619+
document.body.style.overflow = '';
620+
});
621+
622+
// Close sidebar when clicking on sidebar links (mobile only)
623+
sidebar.addEventListener('click', (e) => {
624+
if (e.target.matches('.function-link, .category-name-btn, [data-category="all"], .tab-btn')) {
625+
// Only close on mobile
626+
if (window.innerWidth < 768) {
627+
// console.log('Sidebar link clicked on mobile, hiding sidebar');
628+
sidebar.classList.add('-translate-x-full');
629+
sidebarOverlay.classList.add('opacity-0', 'pointer-events-none');
630+
document.body.style.overflow = '';
631+
}
632+
}
633+
});
634+
635+
// Handle window resize - reset mobile menu state
636+
window.addEventListener('resize', () => {
637+
if (window.innerWidth >= 768) {
638+
// Desktop mode - reset mobile states
639+
// console.log('Switched to desktop mode, resetting sidebar');
640+
sidebar.classList.remove('-translate-x-full');
641+
sidebarOverlay.classList.add('opacity-0', 'pointer-events-none');
642+
document.body.style.overflow = '';
643+
}
644+
});
645+
646+
// Add visual feedback to mobile menu button
647+
mobileMenuBtn.addEventListener('mousedown', () => {
648+
mobileMenuBtn.style.transform = 'scale(0.95)';
649+
});
650+
651+
mobileMenuBtn.addEventListener('mouseup', () => {
652+
mobileMenuBtn.style.transform = 'scale(1)';
653+
});
654+
655+
mobileMenuBtn.addEventListener('mouseleave', () => {
656+
mobileMenuBtn.style.transform = 'scale(1)';
657+
});
658+
} else {
659+
console.error('Mobile menu elements not found:', {
660+
mobileMenuBtn: !!mobileMenuBtn,
661+
sidebar: !!sidebar,
662+
sidebarOverlay: !!sidebarOverlay
598663
});
599664
}
600665

0 commit comments

Comments
 (0)