MediaWiki:Common.js
An Avatar.Global Resource
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */
(function () {
function makeCollapsible(ul) {
if (!ul || ul.dataset.smwCollapsibleDone) return;
ul.dataset.smwCollapsibleDone = "1";
// Wrap the UL so CSS can target it cleanly
var wrapper = document.createElement("div");
wrapper.className = "smw-collapsible";
ul.parentNode.insertBefore(wrapper, ul);
wrapper.appendChild(ul);
// Create a toggle button
var btn = document.createElement("button");
btn.type = "button";
btn.className = "smw-collapsible-toggle";
btn.setAttribute("aria-expanded", "false");
btn.textContent = "Show list";
wrapper.insertBefore(btn, ul);
btn.addEventListener("click", function () {
var open = wrapper.classList.toggle("is-open");
btn.setAttribute("aria-expanded", open ? "true" : "false");
btn.textContent = open ? "Hide list" : "Show list";
});
}
function init($content) {
// Adjust this selector if you only want *some* SMW lists collapsible.
var root = $content && $content[0] ? $content[0] : document;
root.querySelectorAll("ul.smw-format.ul-format").forEach(makeCollapsible);
}
// MediaWiki-friendly hook (runs on normal page loads + AJAX content)
if (window.mw && mw.hook) {
mw.hook("wikipage.content").add(init);
} else {
// Fallback
document.addEventListener("DOMContentLoaded", function () { init(); });
}
})();
