@@ -180,48 +180,78 @@ document.addEventListener('DOMContentLoaded', () => {
180180 } ) ;
181181} ) ;
182182
183- // Mobile menu toggle (if needed in future)
184- const createMobileMenu = ( ) => {
185- const nav = document . querySelector ( '.nav-container ') ;
186- const navLinks = document . querySelector ( '.nav-links ' ) ;
183+ // Mobile menu toggle function
184+ function toggleMobileMenu ( ) {
185+ const navLinks = document . getElementById ( 'navLinks ') ;
186+ const toggleButton = document . querySelector ( '.mobile-menu-toggle ' ) ;
187187
188- if ( window . innerWidth <= 768 ) {
189- if ( ! document . querySelector ( '.mobile-menu-toggle' ) ) {
190- const toggleButton = document . createElement ( 'button' ) ;
191- toggleButton . className = 'mobile-menu-toggle' ;
192- toggleButton . innerHTML = '☰' ;
193- toggleButton . style . cssText = `
194- display: block;
195- background: none;
196- border: none;
197- font-size: 24px;
198- color: #374151;
199- cursor: pointer;
200- ` ;
201-
202- toggleButton . addEventListener ( 'click' , ( ) => {
203- navLinks . classList . toggle ( 'mobile-open' ) ;
204- } ) ;
188+ navLinks . classList . toggle ( 'active' ) ;
189+ toggleButton . classList . toggle ( 'active' ) ;
190+
191+ // Log mobile menu action
192+ if ( currentLogger ) {
193+ currentLogger . info ( 'Mobile menu toggled' , {
194+ isOpen : navLinks . classList . contains ( 'active' )
195+ } ) ;
196+ }
197+ }
198+
199+ // Close mobile menu when clicking on a nav link
200+ document . addEventListener ( 'DOMContentLoaded' , ( ) => {
201+ const navLinks = document . querySelectorAll ( '.nav-link' ) ;
202+ const navMenu = document . getElementById ( 'navLinks' ) ;
203+ const toggleButton = document . querySelector ( '.mobile-menu-toggle' ) ;
204+
205+ navLinks . forEach ( link => {
206+ link . addEventListener ( 'click' , ( ) => {
207+ if ( navMenu . classList . contains ( 'active' ) ) {
208+ navMenu . classList . remove ( 'active' ) ;
209+ if ( toggleButton ) {
210+ toggleButton . classList . remove ( 'active' ) ;
211+ }
212+
213+ if ( currentLogger ) {
214+ currentLogger . info ( 'Mobile menu closed via navigation link' ) ;
215+ }
216+ }
217+ } ) ;
218+ } ) ;
219+
220+ // Close mobile menu when clicking outside
221+ document . addEventListener ( 'click' , ( e ) => {
222+ const isClickInsideNav = e . target . closest ( '.nav-container' ) ;
223+ if ( ! isClickInsideNav && navMenu . classList . contains ( 'active' ) ) {
224+ navMenu . classList . remove ( 'active' ) ;
225+ if ( toggleButton ) {
226+ toggleButton . classList . remove ( 'active' ) ;
227+ }
205228
206- nav . appendChild ( toggleButton ) ;
229+ if ( currentLogger ) {
230+ currentLogger . info ( 'Mobile menu closed via outside click' ) ;
231+ }
207232 }
208- }
209- } ;
233+ } ) ;
234+ } ) ;
210235
211236// Performance optimization: Debounced resize handler
212237let resizeTimeout ;
213238window . addEventListener ( 'resize' , ( ) => {
214239 clearTimeout ( resizeTimeout ) ;
215240 resizeTimeout = setTimeout ( ( ) => {
216- createMobileMenu ( ) ;
241+ // Close mobile menu if window is resized to desktop size
242+ if ( window . innerWidth > 768 ) {
243+ const navMenu = document . getElementById ( 'navLinks' ) ;
244+ const toggleButton = document . querySelector ( '.mobile-menu-toggle' ) ;
245+ if ( navMenu && navMenu . classList . contains ( 'active' ) ) {
246+ navMenu . classList . remove ( 'active' ) ;
247+ if ( toggleButton ) {
248+ toggleButton . classList . remove ( 'active' ) ;
249+ }
250+ }
251+ }
217252 } , 250 ) ;
218253} ) ;
219254
220- // Initialize
221- document . addEventListener ( 'DOMContentLoaded' , ( ) => {
222- createMobileMenu ( ) ;
223- } ) ;
224-
225255// Add some interactive effects to buttons
226256document . querySelectorAll ( '.btn' ) . forEach ( btn => {
227257 btn . addEventListener ( 'mouseenter' , ( ) => {
0 commit comments