MediaWiki:Common.js: Difference between revisions
mNo edit summary Tag: Manual revert |
mNo edit summary |
||
| Line 107: | Line 107: | ||
update(); | update(); | ||
}); | }); | ||
}); | |||
/* ========================================================= | |||
OOO Browser controller (left click -> right panel) | |||
Requires: | |||
- .ooo-browser__item with data-target="panelId" | |||
- .ooo-browser__info with id="panelId" | |||
- .is-active on one item + one panel for default | |||
========================================================= */ | |||
document.addEventListener("click", function (e) { | |||
const item = e.target.closest(".ooo-browser__item"); | |||
if (!item) return; | |||
const browser = item.closest(".ooo-browser"); | |||
if (!browser) return; | |||
const target = item.getAttribute("data-target"); | |||
if (!target) return; | |||
// Activate selected item (left) | |||
browser.querySelectorAll(".ooo-browser__item").forEach(el => { | |||
el.classList.remove("is-active"); | |||
}); | |||
item.classList.add("is-active"); | |||
// Activate matching panel (right) | |||
browser.querySelectorAll(".ooo-browser__info").forEach(el => { | |||
el.classList.remove("is-active"); | |||
}); | |||
const panel = browser.querySelector("#" + CSS.escape(target)); | |||
if (panel) panel.classList.add("is-active"); | |||
}); | }); | ||