@@ -4,10 +4,76 @@ import '@fortawesome/fontawesome-free/css/all.min.css';
44import UI from './Modules/UI'
55import TodoApp from './Modules/TodoApp' ;
66document . addEventListener ( 'DOMContentLoaded' , ( ) => {
7- const ui = new UI ( ) ;
8- ui . loadHomepage ( ) ;
9- } ) ;
7+ const ui = new UI ( ) ;
8+ ui . loadHomepage ( ) ;
9+
10+ // Setup mobile sidebar functionality
11+ setupMobileSidebar ( ) ;
12+
13+ // Update date display
1014 const dateTimeEle = document . getElementById ( "currentDatetime" ) ;
1115 const currDate = new Date ( ) ;
1216 dateTimeEle . innerText = currDate . toLocaleDateString ( ) ;
13- // mainMenu(); //use to call the consoleApp(uncomment import statement).
17+ } ) ;
18+
19+ function setupMobileSidebar ( ) {
20+ // Create hamburger menu element
21+ const hamburgerMenu = document . createElement ( 'i' ) ;
22+ hamburgerMenu . className = 'fas fa-bars hamburger-menu' ;
23+
24+ // Add hamburger to header's left section
25+ const headerLeftSection = document . querySelector ( '.header-left-section' ) ;
26+ headerLeftSection . insertBefore ( hamburgerMenu , headerLeftSection . firstChild ) ;
27+
28+ // Create overlay element
29+ const overlay = document . createElement ( 'div' ) ;
30+ overlay . className = 'sidebar-overlay' ;
31+ document . body . appendChild ( overlay ) ;
32+
33+ // Add click event for hamburger menu
34+ hamburgerMenu . addEventListener ( 'click' , toggleSidebar ) ;
35+
36+ // Add click event for overlay to close sidebar
37+ overlay . addEventListener ( 'click' , closeSidebar ) ;
38+
39+ // Function to toggle sidebar
40+ function toggleSidebar ( ) {
41+ const sidebar = document . querySelector ( '.sidebar' ) ;
42+
43+ sidebar . classList . toggle ( 'open' ) ;
44+ overlay . classList . toggle ( 'active' ) ;
45+
46+ // Toggle hamburger icon between bars and X
47+ if ( sidebar . classList . contains ( 'open' ) ) {
48+ hamburgerMenu . className = 'fas fa-times hamburger-menu' ;
49+ } else {
50+ hamburgerMenu . className = 'fas fa-bars hamburger-menu' ;
51+ }
52+ }
53+
54+ // Function to close sidebar
55+ function closeSidebar ( ) {
56+ const sidebar = document . querySelector ( '.sidebar' ) ;
57+ sidebar . classList . remove ( 'open' ) ;
58+ overlay . classList . remove ( 'active' ) ;
59+ hamburgerMenu . className = 'fas fa-bars hamburger-menu' ;
60+ }
61+
62+ // Close sidebar when clicking on a project (better UX on mobile)
63+ const projectsList = document . querySelector ( '.projects-list' ) ;
64+ projectsList . addEventListener ( 'click' , function ( e ) {
65+ if ( window . innerWidth <= 768 ) {
66+ // Check if clicked element is a project button or part of it
67+ if ( e . target . closest ( '.button-project' ) ) {
68+ closeSidebar ( ) ;
69+ }
70+ }
71+ } ) ;
72+
73+ // Close sidebar when window resizes above mobile breakpoint
74+ window . addEventListener ( 'resize' , function ( ) {
75+ if ( window . innerWidth > 768 ) {
76+ closeSidebar ( ) ;
77+ }
78+ } ) ;
79+ }
0 commit comments