MediaWiki:Common.js

From Artifacts of Capitalism
Revision as of 23:56, 23 August 2025 by Abrano (talk | contribs)

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.
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');
    }
  });
});