MediaWiki:Common.js

From bg3.wiki
Revision as of 20:22, 19 July 2024 by Taylan (talk | contribs)
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* 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.
(function () {
	var body = document.getElementsByTagName("body")[0];
	var callback = function(mutList, _obs) {
		var nodes = mutList[0].addedNodes;
		if (nodes.length == 0) {
			return;
		}
		var node = nodes[0];
		if (!node.classList || !node.classList.contains("mwe-popups")) {
			return;
		}
		var style = node.style;
		var 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 + ")";
		}
	};
	var observer = new MutationObserver(callback);
	observer.observe(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 );