Jump to content

MediaWiki:Common.js: Difference between revisions

From OceanWiki
Created page with "Any JavaScript here will be loaded for all users on every page load.: // Pin Vector 2022 sidebar (and tools) for anonymous users by default if (!mw.config.get('wgUserName')) { const observer = new MutationObserver((mutationsList, observer) => { for (const mutation of mutationsList) { if (mutation.target.classList.contains('vector-animations-ready')) { // Pin main menu const mainPin = document.querySelector(..."
 
No edit summary
 
Line 30: Line 30:
     });
     });
}
}
/* ============================================================
  Data Types page: auto-expand collapsible section on anchor nav
 
  When a breadcrumb link sends the user to Data_Types#SomeSection,
  this finds the collapsible div with that id and expands it,
  then scrolls it into view.
  ============================================================ */
$(function () {
    // Only run on the Data Types page
    if (mw.config.get('wgPageName') !== 'Data_Types') return;
    var hash = window.location.hash;
    if (!hash) return;
    mw.loader.using('jquery.makeCollapsible').done(function () {
        var id = decodeURIComponent(hash.slice(1));
        var el = document.getElementById(id);
        if (!el) return;
        var $target = $(el);
        if (!$target.hasClass('mw-collapsible')) return;
        // Small delay so makeCollapsible finishes initializing first
        setTimeout(function () {
            if ($target.hasClass('mw-collapsed')) {
                $target.find('.mw-collapsible-toggle').first().trigger('click');
            }
            el.scrollIntoView({ behavior: 'smooth', block: 'start' });
        }, 100);
    });
});

Latest revision as of 14:42, 27 May 2026

/* Any JavaScript here will be loaded for all users on every page load. */


// Pin Vector 2022 sidebar (and tools) for anonymous users by default
if (!mw.config.get('wgUserName')) {
    const observer = new MutationObserver((mutationsList, observer) => {
        for (const mutation of mutationsList) {
            if (mutation.target.classList.contains('vector-animations-ready')) {
                // Pin main menu
                const mainPin = document.querySelector(
                    '[data-event-name="pinnable-header.vector-main-menu.pin"]'
                );
                if (mainPin) mainPin.click();

                // (Optional) also pin page tools on the right
                const toolsPin = document.querySelector(
                    '[data-event-name="pinnable-header.vector-page-tools.pin"]'
                );
                if (toolsPin) toolsPin.click();

                observer.disconnect();
                break;
            }
        }
    });

    observer.observe(document.documentElement, {
        attributes: true,
        attributeFilter: ['class']
    });
}

/* ============================================================
   Data Types page: auto-expand collapsible section on anchor nav
   
   When a breadcrumb link sends the user to Data_Types#SomeSection,
   this finds the collapsible div with that id and expands it,
   then scrolls it into view.
   ============================================================ */
$(function () {
    // Only run on the Data Types page
    if (mw.config.get('wgPageName') !== 'Data_Types') return;

    var hash = window.location.hash;
    if (!hash) return;

    mw.loader.using('jquery.makeCollapsible').done(function () {
        var id = decodeURIComponent(hash.slice(1));
        var el = document.getElementById(id);
        if (!el) return;

        var $target = $(el);
        if (!$target.hasClass('mw-collapsible')) return;

        // Small delay so makeCollapsible finishes initializing first
        setTimeout(function () {
            if ($target.hasClass('mw-collapsed')) {
                $target.find('.mw-collapsible-toggle').first().trigger('click');
            }
            el.scrollIntoView({ behavior: 'smooth', block: 'start' });
        }, 100);
    });
});