</div>
<!-- /.content-wrapper -->
<!-- Footer -->
<footer class="footer bg-white text-center py-3 mt-5">
<div class="container">
<span class="text-muted">Copyright © Popular Computer Institute <?php echo date('Y'); ?></span>
</div>
</footer>
<!-- Bootstrap 5 JS -->
<script src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"></script>
<!-- Custom JS -->
<script>
document.addEventListener('DOMContentLoaded', function() {
// Sidebar toggler
const sidebarToggler = document.getElementById('sidebarToggler');
const sidebar = document.getElementById('sidebar');
const mainContent = document.getElementById('mainContent');
if (sidebarToggler) {
sidebarToggler.addEventListener('click', function() {
sidebar.classList.toggle('collapsed');
mainContent.classList.toggle('expanded');
// Save state to localStorage for persistence
localStorage.setItem('sidebarCollapsed', sidebar.classList.contains('collapsed'));
});
}
// Apply saved state
const sidebarCollapsed = localStorage.getItem('sidebarCollapsed') === 'true';
if (sidebarCollapsed) {
sidebar.classList.add('collapsed');
mainContent.classList.add('expanded');
}
// Initialize tooltips if Bootstrap 5 is available
if (typeof bootstrap !== 'undefined' && bootstrap.Tooltip) {
const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl);
});
}
// Handle dropdown toggle
const dropdownToggleList = [].slice.call(document.querySelectorAll('.sidebar-dropdown .nav-link'));
dropdownToggleList.map(function (dropdownToggle) {
// Add hover functionality for collapsed mode
const dropdownItem = dropdownToggle.closest('.sidebar-dropdown');
if (dropdownItem) {
const submenuId = dropdownToggle.getAttribute('href');
if (submenuId && submenuId.charAt(0) === '#') {
const submenu = document.querySelector(submenuId);
// Show submenu on hover when sidebar is collapsed
dropdownItem.addEventListener('mouseenter', function() {
if (sidebar.classList.contains('collapsed')) {
if (submenu) {
submenu.classList.add('show');
submenu.classList.add('hover-show');
}
}
});
// Hide submenu when mouse leaves
dropdownItem.addEventListener('mouseleave', function() {
if (sidebar.classList.contains('collapsed')) {
if (submenu) {
submenu.classList.remove('show');
submenu.classList.remove('hover-show');
}
}
});
}
}
// Handle click for normal mode
dropdownToggle.addEventListener('click', function(e) {
const submenuId = this.getAttribute('href');
if (submenuId && submenuId.charAt(0) === '#') {
e.preventDefault();
// If sidebar is collapsed, don't do anything on click
// Let the hover effect handle it
if (sidebar.classList.contains('collapsed')) {
return;
}
const submenu = document.querySelector(submenuId);
if (submenu) {
submenu.classList.toggle('show');
this.setAttribute('aria-expanded', submenu.classList.contains('show'));
}
}
});
});
// Configure sidebar behavior on smaller screens
const handleResize = () => {
if (window.innerWidth < 992 && !sidebar.classList.contains('collapsed')) {
sidebar.classList.add('collapsed');
mainContent.classList.add('expanded');
}
};
// Initial check
handleResize();
// Add resize event listener
window.addEventListener('resize', handleResize);
});
</script>
</body>
</html>