MediaWiki:Common.js: Difference between revisions

MediaWiki interface page
No edit summary
No edit summary
 
(17 intermediate revisions by the same user not shown)
Line 10: Line 10:
}, 20)
}, 20)
});
});
function autoplayIt() {
var clickHandler = function() {
var btn = this;
var expanding = btn.getAttribute('aria-expanded');
btn.movedata.querySelectorAll('video').forEach(expanding === "true"
? function (el) { el.play(); }
: function (el) { el.pause(); el.currentTime = 0; }
);
};
var hookHandler = function (el) {
var btn = el.querySelector('.mw-collapsible-toggle');
btn.movedata = el;
btn.addEventListener('click', clickHandler);
};
mw.hook('wikipage.collapsibleContent').add(function($this) {
$this.filter('.movedata').each(function (i, el) { hookHandler(el) });
});
document.querySelectorAll('.movedata:has(.mw-collapsible-toggle)').forEach(function(el) {
hookHandler(el);
});
}


function tipIt() {
function tipIt() {
Line 18: Line 42:
allowHTML: true,
allowHTML: true,
interactive: true,
interactive: true,
arrow: false
arrow: false,
});
appendTo: document.body,
});
offset: [0, 0],
});
}
 
function autoplayMoveVideos() {
mw.loader.using('jquery.makeCollapsible', function () {
let cb = function (ev) {
let btn = this;
let expanding = btn.getAttribute('aria-expanded');
sharedParent = btn.parentElement;
while (sharedParent && !sharedParent.classList.contains('movedata'))
sharedParent = sharedParent.parentElement;
if (!sharedParent) return;
sharedParent.querySelectorAll('video').forEach(function (el) {
if (expanding) {
el.play();
} else {
el.stop();
}
});
});
};
document.querySelectorAll('.movedata .mw-collapsible-toggle').forEach(function (el) {
el.addEventListener('click', cb);
});
});
});
});
Line 48: Line 51:


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

Latest revision as of 10:17, 3 March 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 === "true"
			? function (el) { el.play(); }
			: function (el) { el.pause(); el.currentTime = 0; }
		);
	};
	
	var hookHandler = function (el) {
		var btn = el.querySelector('.mw-collapsible-toggle');
		btn.movedata = el;
		btn.addEventListener('click', clickHandler);
	};

	mw.hook('wikipage.collapsibleContent').add(function($this) {
		$this.filter('.movedata').each(function (i, el) { hookHandler(el) });
	});
	document.querySelectorAll('.movedata:has(.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,
				appendTo: document.body,
				offset: [0, 0],
			});
		});
	});
}

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