update ui and add new audio components
This commit is contained in:
@@ -140,6 +140,28 @@
|
||||
return Boolean(target.closest(AUTO_COLLAPSE_ENTRY_SELECTOR));
|
||||
}
|
||||
|
||||
function getAutoCollapseLayoutFromTarget(target) {
|
||||
if (!(target instanceof Element)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (target.closest(AUTO_COLLAPSE_IGNORE_SELECTOR)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const entry = target.closest(AUTO_COLLAPSE_ENTRY_SELECTOR);
|
||||
if (!(entry instanceof Element)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const panel = entry.closest("aside.planet-list-panel, aside.tarot-list-panel, aside.kab-tree-panel");
|
||||
if (!(panel instanceof HTMLElement)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return resolveLayoutTarget(panel);
|
||||
}
|
||||
|
||||
function scheduleAutoCollapse(layout) {
|
||||
if (!(layout instanceof HTMLElement)) {
|
||||
return;
|
||||
@@ -151,46 +173,35 @@
|
||||
}
|
||||
|
||||
function initializeSidebarAutoCollapse() {
|
||||
const layouts = document.querySelectorAll(".planet-layout, .tarot-layout, .kab-layout");
|
||||
if (!document.body || document.body.dataset.sidebarAutoCollapseReady === "1") {
|
||||
return;
|
||||
}
|
||||
|
||||
layouts.forEach((layout) => {
|
||||
document.body.dataset.sidebarAutoCollapseReady = "1";
|
||||
|
||||
document.addEventListener("click", (event) => {
|
||||
const target = event.target instanceof Element ? event.target : null;
|
||||
const layout = getAutoCollapseLayoutFromTarget(target);
|
||||
if (!(layout instanceof HTMLElement)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const panel = Array.from(layout.children).find((child) => (
|
||||
child instanceof HTMLElement
|
||||
&& child.matches("aside.planet-list-panel, aside.tarot-list-panel, aside.kab-tree-panel")
|
||||
));
|
||||
scheduleAutoCollapse(layout);
|
||||
}, true);
|
||||
|
||||
if (!(panel instanceof HTMLElement) || panel.dataset.sidebarAutoCollapseReady === "1") {
|
||||
document.addEventListener("keydown", (event) => {
|
||||
if (event.key !== "Enter" && event.key !== " ") {
|
||||
return;
|
||||
}
|
||||
|
||||
panel.dataset.sidebarAutoCollapseReady = "1";
|
||||
const target = event.target instanceof Element ? event.target : null;
|
||||
const layout = getAutoCollapseLayoutFromTarget(target);
|
||||
if (!(layout instanceof HTMLElement)) {
|
||||
return;
|
||||
}
|
||||
|
||||
panel.addEventListener("click", (event) => {
|
||||
const target = event.target instanceof Element ? event.target : null;
|
||||
if (!shouldAutoCollapseFromEvent(panel, target)) {
|
||||
return;
|
||||
}
|
||||
|
||||
scheduleAutoCollapse(layout);
|
||||
});
|
||||
|
||||
panel.addEventListener("keydown", (event) => {
|
||||
if (event.key !== "Enter" && event.key !== " ") {
|
||||
return;
|
||||
}
|
||||
|
||||
const target = event.target instanceof Element ? event.target : null;
|
||||
if (!shouldAutoCollapseFromEvent(panel, target)) {
|
||||
return;
|
||||
}
|
||||
|
||||
scheduleAutoCollapse(layout);
|
||||
});
|
||||
});
|
||||
scheduleAutoCollapse(layout);
|
||||
}, true);
|
||||
}
|
||||
|
||||
function initializeSidebarPopouts() {
|
||||
@@ -361,6 +372,7 @@
|
||||
|
||||
const nextOpen = Boolean(isOpen);
|
||||
topbarEl.classList.toggle("is-menu-open", nextOpen);
|
||||
document.body.classList.toggle("topbar-menu-open", nextOpen);
|
||||
menuToggleEl.setAttribute("aria-expanded", nextOpen ? "true" : "false");
|
||||
menuToggleEl.textContent = nextOpen ? "Close" : "Menu";
|
||||
menuToggleEl.setAttribute("aria-label", nextOpen ? "Close navigation menu" : "Open navigation menu");
|
||||
|
||||
Reference in New Issue
Block a user