60 lines
1.8 KiB
JavaScript
60 lines
1.8 KiB
JavaScript
(function () {
|
|
var workspace = document.querySelector(".workspace");
|
|
var sidebarToggle = document.getElementById("sidebarToggle");
|
|
var mobileSidebarToggle = document.getElementById("mobileSidebarToggle");
|
|
var userMenu = document.getElementById("userMenu");
|
|
var userMenuTrigger = document.getElementById("userMenuTrigger");
|
|
|
|
if (!workspace) {
|
|
return;
|
|
}
|
|
|
|
function isMobile() {
|
|
return window.matchMedia("(max-width: 980px)").matches;
|
|
}
|
|
|
|
function toggleSidebar() {
|
|
var state = workspace.getAttribute("data-sidebar-state");
|
|
if (isMobile()) {
|
|
workspace.setAttribute("data-sidebar-state", state === "open" ? "closed" : "open");
|
|
return;
|
|
}
|
|
workspace.setAttribute("data-sidebar-state", state === "collapsed" ? "open" : "collapsed");
|
|
}
|
|
|
|
function syncSidebarState() {
|
|
if (isMobile()) {
|
|
if (workspace.getAttribute("data-sidebar-state") === "collapsed") {
|
|
workspace.setAttribute("data-sidebar-state", "closed");
|
|
}
|
|
} else if (workspace.getAttribute("data-sidebar-state") === "closed") {
|
|
workspace.setAttribute("data-sidebar-state", "open");
|
|
}
|
|
}
|
|
|
|
if (sidebarToggle) {
|
|
sidebarToggle.addEventListener("click", toggleSidebar);
|
|
}
|
|
|
|
if (mobileSidebarToggle) {
|
|
mobileSidebarToggle.addEventListener("click", toggleSidebar);
|
|
}
|
|
|
|
if (userMenu && userMenuTrigger) {
|
|
userMenuTrigger.addEventListener("click", function () {
|
|
var isOpen = userMenu.classList.toggle("open");
|
|
userMenuTrigger.setAttribute("aria-expanded", isOpen ? "true" : "false");
|
|
});
|
|
|
|
document.addEventListener("click", function (event) {
|
|
if (!userMenu.contains(event.target)) {
|
|
userMenu.classList.remove("open");
|
|
userMenuTrigger.setAttribute("aria-expanded", "false");
|
|
}
|
|
});
|
|
}
|
|
|
|
window.addEventListener("resize", syncSidebarState);
|
|
syncSidebarState();
|
|
})();
|