'use strict'; // sidebar submenu collapsible js document.querySelectorAll(".sidebar-menu .dropdown").forEach(function (dropdown) { dropdown.addEventListener("click", function () { var item = this; // Close all sibling dropdowns item.parentNode.querySelectorAll(".dropdown").forEach(function (sibling) { if (sibling !== item) { sibling.querySelector(".sidebar-submenu").style.display = 'none'; sibling.classList.remove("dropdown-open"); sibling.classList.remove("open"); } }); // Toggle the current dropdown var submenu = item.querySelector(".sidebar-submenu"); submenu.style.display = (submenu.style.display === 'block') ? 'none' : 'block'; item.classList.toggle("dropdown-open"); }); }); // Toggle sidebar visibility and active class const sidebarToggle = document.querySelector(".sidebar-toggle"); if(sidebarToggle) { sidebarToggle.addEventListener("click", function() { this.classList.toggle("active"); document.querySelector(".sidebar").classList.toggle("active"); document.querySelector(".dashboard-main").classList.toggle("active"); }); } // Open sidebar in mobile view and add overlay const sidebarMobileToggle = document.querySelector(".sidebar-mobile-toggle"); if(sidebarMobileToggle) { sidebarMobileToggle.addEventListener("click", function() { document.querySelector(".sidebar").classList.add("sidebar-open"); document.body.classList.add("overlay-active"); }); } // Close sidebar and remove overlay const sidebarColseBtn = document.querySelector(".sidebar-close-btn"); if(sidebarColseBtn){ sidebarColseBtn.addEventListener("click", function() { document.querySelector(".sidebar").classList.remove("sidebar-open"); document.body.classList.remove("overlay-active"); }); } //to keep the current page active document.addEventListener("DOMContentLoaded", function () { var nk = window.location.href; var links = document.querySelectorAll("ul#sidebar-menu a"); links.forEach(function (link) { if (link.href === nk) { link.classList.add("active-page"); // anchor var parent = link.parentElement; parent.classList.add("active-page"); // li // Traverse up the DOM tree and add classes to parent elements while (parent && parent.tagName !== "BODY") { if (parent.tagName === "LI") { parent.classList.add("show"); parent.classList.add("open"); } parent = parent.parentElement; } } }); }); // 1. Penentuan Tema Awal (Taruh di paling atas) // Kita hapus pengecekan matchMedia agar tidak ikut settingan Windows/HP if (localStorage.getItem('color-theme') === 'dark') { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } // 2. Inisialisasi Icon var themeToggleDarkIcon = document.getElementById('theme-toggle-dark-icon'); var themeToggleLightIcon = document.getElementById('theme-toggle-light-icon'); if (themeToggleDarkIcon && themeToggleLightIcon) { if (localStorage.getItem('color-theme') === 'dark') { themeToggleLightIcon.classList.remove('hidden'); themeToggleDarkIcon.classList.add('hidden'); // Pastikan icon bulan sembunyi } else { themeToggleDarkIcon.classList.remove('hidden'); themeToggleLightIcon.classList.add('hidden'); // Pastikan icon matahari sembunyi } } // 3. Logika Klik Tombol var themeToggleBtn = document.getElementById('theme-toggle'); if (themeToggleBtn) { themeToggleBtn.addEventListener('click', function() { // Toggle Icon themeToggleDarkIcon.classList.toggle('hidden'); themeToggleLightIcon.classList.toggle('hidden'); // Logika Perpindahan if (localStorage.getItem('color-theme')) { if (localStorage.getItem('color-theme') === 'light') { document.documentElement.classList.add('dark'); localStorage.setItem('color-theme', 'dark'); } else { document.documentElement.classList.remove('dark'); localStorage.setItem('color-theme', 'light'); } } else { // Jika storage kosong (User baru pertama kali buka web) if (document.documentElement.classList.contains('dark')) { document.documentElement.classList.remove('dark'); localStorage.setItem('color-theme', 'light'); } else { document.documentElement.classList.add('dark'); localStorage.setItem('color-theme', 'dark'); } } }); }