MediaWiki:Common.js: Difference between revisions

MediaWiki interface page
No edit summary
No edit summary
Line 23: Line 23:
var hookHandler = function (btn) {
var hookHandler = function (btn) {
var movedata = btn.parentElement;
var movedata = btn.parentElement;
while (movedata && !sharedParent.classList.contains('movedata'))
while (movedata && !movedata.classList.contains('movedata'))
movedata = sharedParent.parentElement;
movedata = movedata.parentElement;
if (!movedata) return;
if (!movedata) return;
btn.movedata = movedata;
btn.movedata = movedata;

Revision as of 11:35, 30 January 2024

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

$(document).on('mmv-setup-overlay', function () {
	$('html').addClass('mw-mmv-lightbox-linger');
});

$(document).on('mmv-cleanup-overlay', function () {
	setTimeout(function () {
		$('html').removeClass('mw-mmv-lightbox-linger');
	}, 20)
});

function autoplayIt() {
	var clickHandler = function() {
		var btn = this;
		var expanding = btn.getAttribute('aria-expanded');	
		btn.movedata.querySelectorAll('video').forEach(expanding
			? function (el) { el.play(); }
			: function (el) { el.stop(); }
		);
	};
	
	var hookHandler = function (btn) {
		var movedata = btn.parentElement;	
		while (movedata && !movedata.classList.contains('movedata'))
			movedata = movedata.parentElement;		
		if (!movedata) return;
		btn.movedata = movedata;
		btn.addEventListener('click', clickHandler);
	};

	mw.hook('wikipage.collapsibleContent').add(hookHandler);
	document.querySelectorAll('.movedata .mw-collapsible-toggle').forEach(function(el) {
		hookHandler(el);
	});
}

function tipIt() {
	mw.loader.using('wavu.tippy', function () {
		document.querySelectorAll('.tooltip-label').forEach(function(el) {
			tippy(el, {
				content: el.nextElementSibling.innerHTML,
				allowHTML: true,
				interactive: true,
				arrow: false
			});
		});
	});
}

if (document.readyState === "loading") {
	document.addEventListener("DOMContentLoaded", autoplayIt);
	document.addEventListener("DOMContentLoaded", tipIt);
} else {
	tipIt();
	autoplayIt();
}