// Main application JavaScript // This file contains general application functionality /** * Toggle sidebar visibility (open/close) */ function toggleSidebar() { const sidebar = document.getElementById('site-sidebar'); const contentCol = sidebar ? sidebar.nextElementSibling || sidebar.parentElement.querySelector('.content-column') : null; const icon = document.querySelector('.sidebar-toggle-btn i'); if (!sidebar) return; sidebar.classList.toggle('sidebar-hidden'); // Adjust content column width and toggle icon if (sidebar.classList.contains('sidebar-hidden')) { if (contentCol) { contentCol.classList.remove('col-lg-9', 'col-md-8'); contentCol.classList.add('col-12'); } if (icon) { icon.classList.remove('bi-layout-sidebar-inset'); icon.classList.add('bi-layout-sidebar'); } sessionStorage.setItem('sidebarHidden', 'true'); } else { if (contentCol) { contentCol.classList.remove('col-12'); contentCol.classList.add('col-lg-9', 'col-md-8'); } if (icon) { icon.classList.remove('bi-layout-sidebar'); icon.classList.add('bi-layout-sidebar-inset'); } sessionStorage.setItem('sidebarHidden', 'false'); } } /** * Restore sidebar state from sessionStorage on page load */ function restoreSidebarState() { if (sessionStorage.getItem('sidebarHidden') === 'true') { const sidebar = document.getElementById('site-sidebar'); if (sidebar) { toggleSidebar(); } } } // Initialize application when DOM is ready document.addEventListener('DOMContentLoaded', function() { console.log('CodePress CMS initialized'); // Restore sidebar state restoreSidebarState(); // Handle nested dropdowns for touch devices const dropdownSubmenus = document.querySelectorAll('.dropdown-submenu'); dropdownSubmenus.forEach(function(submenu) { const toggle = submenu.querySelector('.dropdown-toggle'); const dropdown = submenu.querySelector('.dropdown-menu'); if (toggle && dropdown) { // Prevent default link behavior toggle.addEventListener('click', function(e) { e.preventDefault(); e.stopPropagation(); // Close other submenus at the same level const parent = submenu.parentElement; parent.querySelectorAll('.dropdown-submenu').forEach(function(sibling) { if (sibling !== submenu) { sibling.querySelector('.dropdown-menu').classList.remove('show'); } }); // Toggle current submenu dropdown.classList.toggle('show'); }); // Close submenu when clicking outside document.addEventListener('click', function(e) { if (!submenu.contains(e.target)) { dropdown.classList.remove('show'); } }); } }); });