MediaWiki:Common.js: Difference between revisions

From bg3.wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(29 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 launchDayMaxPageId = 6545;
var notice = document.getElementById("bg3wiki-downtime-notice");
if (!mw.config.get("wgIsMainPage") &&
if (notice && new Date().getMonth() + 1 == 9) {
      mw.config.get("wgNamespaceNumber") == 0 &&
notice.style.display = 'block';
      mw.config.get("wgArticleId") <= launchDayMaxPageId
      ) {
    var uptodate = document.getElementById("bg3wiki-uptodate-notice");
    if (uptodate) {
    return;
    }
var notice = document.getElementById("siteNotice");
notice.style.border = "2px solid var(--bdr-hl)";
notice.style.padding = "5px";
notice.style.fontSize = "1.2em";
notice.innerHTML =
"<b>Warning: This page was created during Early Access. " +
"It may not be up to date with the release version.</b>";
}
}
})();
})();
*/


// Related to centering the content; fix for popups.
// Fix for popups because we mess with body height.
(function () {
new MutationObserver(function(mutList, _obs) {
  var body = document.getElementsByTagName("body")[0];
const nodes = mutList[0].addedNodes;
  var callback = function(mutList, _obs) {
if (nodes.length == 0) {
    var mut = mutList[0];
return;
    var mutNode = mut.addedNodes;
}
    if (mutNode.length !== 0 && mutNode[0].classList.contains("mwe-popups")) {
const node = nodes[0];
      var eleLeft = mutNode[0].style.left;
if (!node.classList || !node.classList.contains("mwe-popups")) {
      var marginLeft = window.getComputedStyle(body).getPropertyValue("margin-left");
return;
      // subtract the left margin from the computed value
}
      mutNode[0].style.left = "calc("+ eleLeft + " - "+ marginLeft + ")";
const style = node.style;
    }
const offset = window.scrollY + "px";
  };
style.position = 'fixed';
  var observer = new MutationObserver(callback);
if (style.top != 'auto') {
  observer.observe(body, { childList: true });
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 14: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 );