MediaWiki:Common.js: Difference between revisions
From Artifacts of Capitalism
No edit summary Tag: Reverted |
No edit summary Tag: Reverted |
||
| Line 1: | Line 1: | ||
mw.loader.using('mediawiki.util').then(function () { | |||
function $(s, r){ return (r||document).querySelector(s); } | |||
var toggler = document.querySelector('.p-navbar .navbar-toggler'); | |||
if (!toggler) return; | |||
var | |||
var toggler | // Resolve the collapse element the button controls | ||
var targetSel = | |||
toggler.getAttribute('data-target') || | |||
toggler.getAttribute('data-bs-target') || | |||
(toggler.getAttribute('aria-controls') ? ('#' + toggler.getAttribute('aria-controls')) : null); | |||
var collapse = targetSel ? document.querySelector(targetSel) : document.querySelector('.p-navbar .navbar-collapse'); | |||
if (!collapse) return; | |||
// | // Toggle drawer | ||
toggler.addEventListener('click', function (e) { | |||
e.preventDefault(); | |||
var willOpen = !collapse.classList.contains('show'); | |||
collapse.classList.toggle('show', willOpen); | |||
document.body.classList.toggle('offcanvas-open', willOpen); | |||
toggler.setAttribute('aria-expanded', String(willOpen)); | |||
}); | |||
// Close when clicking outside or pressing Esc | |||
document.addEventListener('click', function (e) { | document.addEventListener('click', function (e) { | ||
if ( | if (!collapse.classList.contains('show')) return; | ||
var inside = collapse.contains(e.target) || | var inside = collapse.contains(e.target) || toggler.contains(e.target); | ||
if (!inside) { | if (!inside) { | ||
collapse.classList.remove('show'); | collapse.classList.remove('show'); | ||
document.body.classList.remove('offcanvas-open'); | document.body.classList.remove('offcanvas-open'); | ||
toggler.setAttribute('aria-expanded', 'false'); | |||
} | |||
}); | |||
document.addEventListener('keydown', function (e) { | |||
if (e.key === 'Escape' && collapse.classList.contains('show')) { | |||
collapse.classList.remove('show'); | |||
document.body.classList.remove('offcanvas-open'); | |||
toggler.setAttribute('aria-expanded', 'false'); | |||
} | } | ||
}); | }); | ||
}); | }); | ||
Revision as of 23:56, 23 August 2025
mw.loader.using('mediawiki.util').then(function () {
function $(s, r){ return (r||document).querySelector(s); }
var toggler = document.querySelector('.p-navbar .navbar-toggler');
if (!toggler) return;
// Resolve the collapse element the button controls
var targetSel =
toggler.getAttribute('data-target') ||
toggler.getAttribute('data-bs-target') ||
(toggler.getAttribute('aria-controls') ? ('#' + toggler.getAttribute('aria-controls')) : null);
var collapse = targetSel ? document.querySelector(targetSel) : document.querySelector('.p-navbar .navbar-collapse');
if (!collapse) return;
// Toggle drawer
toggler.addEventListener('click', function (e) {
e.preventDefault();
var willOpen = !collapse.classList.contains('show');
collapse.classList.toggle('show', willOpen);
document.body.classList.toggle('offcanvas-open', willOpen);
toggler.setAttribute('aria-expanded', String(willOpen));
});
// Close when clicking outside or pressing Esc
document.addEventListener('click', function (e) {
if (!collapse.classList.contains('show')) return;
var inside = collapse.contains(e.target) || toggler.contains(e.target);
if (!inside) {
collapse.classList.remove('show');
document.body.classList.remove('offcanvas-open');
toggler.setAttribute('aria-expanded', 'false');
}
});
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape' && collapse.classList.contains('show')) {
collapse.classList.remove('show');
document.body.classList.remove('offcanvas-open');
toggler.setAttribute('aria-expanded', 'false');
}
});
});