MediaWiki:Common.js: Difference between revisions

mNo edit summary
Tag: Reverted
mNo edit summary
 
(14 intermediate revisions by the same user not shown)
Line 108: Line 108:
   });
   });
});
});


/* =========================================================
/* =========================================================
   OOO FAQ – True Accordion Control
   OOO Anchor navigation (tabs + browser)
   ========================================================= */
   ========================================================= */


mw.hook('wikipage.content').add(function ($content) {
mw.hook('wikipage.content').add(function () {
 
  if (!location.hash) return;
 
  const id = location.hash.slice(1);
 
  setTimeout(function(){
 
    const item  = document.querySelector('.ooo-browser__item[data-target="'+id+'"]');
    const panel = document.getElementById(id);
 
    if (!item || !panel) return;
 
    const browser = item.closest('.ooo-browser');
    if (!browser) return;
 
    browser.querySelectorAll('.ooo-browser__item')
      .forEach(el => el.classList.remove('is-active'));
 
    browser.querySelectorAll('.ooo-browser__info')
      .forEach(el => el.classList.remove('is-active'));
 
    item.classList.add('is-active');
    panel.classList.add('is-active');
 
  },150);
 
});
 
/* =========================================================
  OOO Browser controller (click switching)
  ========================================================= */
 
document.addEventListener("click", function (e) {
 
  const item = e.target.closest(".ooo-browser__item");
  if (!item) return;


   $content.find('.ooo-faq__item').each(function () {
   const browser = item.closest(".ooo-browser");
    var $item = $(this);
  if (!browser) return;


    // Ensure collapsible initialized
  const target = item.getAttribute("data-target");
    if (!$item.hasClass('mw-collapsible')) return;
  if (!target) return;


    // Click handler for accordion behavior
  e.preventDefault();
    $item.on('click', '.ooo-faq__question', function () {


      // If already open, do nothing (allow collapse normally)
  browser.querySelectorAll(".ooo-browser__item")
      if (!$item.hasClass('mw-collapsed')) {
    .forEach(el => el.classList.remove("is-active"));


        // Close all other FAQ items
  browser.querySelectorAll(".ooo-browser__info")
        $content.find('.ooo-faq__item').not($item).each(function () {
    .forEach(el => el.classList.remove("is-active"));
          var $other = $(this);
          if (!$other.hasClass('mw-collapsed')) {
            $other.find('.mw-collapsible-toggle').trigger('click');
          }
        });


      }
  item.classList.add("is-active");


    });
const panel = browser.querySelector("#" + CSS.escape(target));
if (panel) panel.classList.add("is-active");


  });
/* update browser URL */
history.replaceState(null, null, "#" + target);


});
});