MediaWiki:Common.js: Difference between revisions
Appearance
Kate Evans (talk | contribs) 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(..." |
Kate Evans (talk | contribs) 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);
});
});