MediaWiki:Common.js: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
(27 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
/* Any JavaScript here will be loaded for all users on every page load. */ | /* Any JavaScript here will be loaded for all users on every page load. */ | ||
/* | |||
(function () { | (function () { | ||
var | var notice = document.getElementById("bg3wiki-downtime-notice"); | ||
if (notice && new Date().getMonth() + 1 == 9) { | |||
notice.style.display = 'block'; | |||
notice.style. | |||
} | } | ||
})(); | })(); | ||
*/ | |||
// | // Fix for popups because we mess with body height. | ||
( | new MutationObserver(function(mutList, _obs) { | ||
const nodes = mutList[0].addedNodes; | |||
if (nodes.length == 0) { | |||
return; | |||
} | |||
const node = nodes[0]; | |||
if (!node.classList || !node.classList.contains("mwe-popups")) { | |||
return; | |||
} | |||
const style = node.style; | |||
const offset = window.scrollY + "px"; | |||
style.position = 'fixed'; | |||
if (style.top != 'auto') { | |||
style.top = "calc(" + style.top + " - " + offset + ")"; | |||
})(); | } | ||
if (style.bottom != 'auto') { | |||
style.bottom = "calc(" + style.bottom + " + " + offset + ")"; | |||
} | |||
}).observe(document.body, { childList: true }); | |||
/** | |||
* Add support to mw-collapsible for autocollapse, innercollapse and outercollapse | |||
* | |||
* Maintainers: TheDJ. See https://en.wikipedia.org/wiki/MediaWiki:Common.js for more information. | |||
*/ | |||
function mwCollapsibleSetup( $collapsibleContent ) { | |||
var $element, | |||
$toggle, | |||
autoCollapseThreshold = 2; | |||
$.each( $collapsibleContent, function ( index, element ) { | |||
$element = $( element ); | |||
if ( $element.hasClass( 'collapsible' ) ) { | |||
$element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) ); | |||
} | |||
if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) { | |||
$element.data( 'mw-collapsible' ).collapse(); | |||
} else if ( $element.hasClass( 'innercollapse' ) ) { | |||
if ( $element.parents( '.outercollapse' ).length > 0 ) { | |||
$element.data( 'mw-collapsible' ).collapse(); | |||
} | |||
} | |||
// because of colored backgrounds, style the link in the text color | |||
// to ensure accessible contrast | |||
$toggle = $element.find( '.mw-collapsible-toggle' ); | |||
if ( $toggle.length ) { | |||
// Make the toggle inherit text color (Updated for T333357 2023-04-29) | |||
if ( $toggle.parent()[ 0 ].style.color ) { | |||
$toggle.css( 'color', 'inherit' ); | |||
$toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' ); | |||
} | |||
} | |||
} ); | |||
} | |||
mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup ); |
Latest revision as of 13:41, 3 September 2024
/* Any JavaScript here will be loaded for all users on every page load. */
/*
(function () {
var notice = document.getElementById("bg3wiki-downtime-notice");
if (notice && new Date().getMonth() + 1 == 9) {
notice.style.display = 'block';
}
})();
*/
// Fix for popups because we mess with body height.
new MutationObserver(function(mutList, _obs) {
const nodes = mutList[0].addedNodes;
if (nodes.length == 0) {
return;
}
const node = nodes[0];
if (!node.classList || !node.classList.contains("mwe-popups")) {
return;
}
const style = node.style;
const offset = window.scrollY + "px";
style.position = 'fixed';
if (style.top != 'auto') {
style.top = "calc(" + style.top + " - " + offset + ")";
}
if (style.bottom != 'auto') {
style.bottom = "calc(" + style.bottom + " + " + offset + ")";
}
}).observe(document.body, { childList: true });
/**
* Add support to mw-collapsible for autocollapse, innercollapse and outercollapse
*
* Maintainers: TheDJ. See https://en.wikipedia.org/wiki/MediaWiki:Common.js for more information.
*/
function mwCollapsibleSetup( $collapsibleContent ) {
var $element,
$toggle,
autoCollapseThreshold = 2;
$.each( $collapsibleContent, function ( index, element ) {
$element = $( element );
if ( $element.hasClass( 'collapsible' ) ) {
$element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) );
}
if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) {
$element.data( 'mw-collapsible' ).collapse();
} else if ( $element.hasClass( 'innercollapse' ) ) {
if ( $element.parents( '.outercollapse' ).length > 0 ) {
$element.data( 'mw-collapsible' ).collapse();
}
}
// because of colored backgrounds, style the link in the text color
// to ensure accessible contrast
$toggle = $element.find( '.mw-collapsible-toggle' );
if ( $toggle.length ) {
// Make the toggle inherit text color (Updated for T333357 2023-04-29)
if ( $toggle.parent()[ 0 ].style.color ) {
$toggle.css( 'color', 'inherit' );
$toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' );
}
}
} );
}
mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup );