@@ -583,18 +583,83 @@ class FunctionsDocs {
583
583
const sidebarOverlay = document . getElementById ( 'sidebarOverlay' ) ;
584
584
585
585
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' ) ;
591
603
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
592
611
}
593
612
} ) ;
594
613
595
- sidebarOverlay . addEventListener ( 'click' , ( ) => {
614
+ // Close sidebar when clicking overlay
615
+ sidebarOverlay . addEventListener ( 'click' , ( e ) => {
616
+ // console.log('Overlay clicked, hiding sidebar');
596
617
sidebar . classList . add ( '-translate-x-full' ) ;
597
618
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
598
663
} ) ;
599
664
}
600
665
0 commit comments