MediaWiki:Gadget-navboxToggle.js

From [N8]
Revision as of 17:17, 13 August 2020 by Banri (talk | contribs) (Created page with "(function ($) { // loaded on all targets even though this is mobile only, so exit out if desktop // see <https://phabricator.wikimedia.org/T173309> if (!$('body').hasClass(...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
(function ($) {
	// loaded on all targets even though this is mobile only, so exit out if desktop
	// see <https://phabricator.wikimedia.org/T173309>
	if (!$('body').hasClass('skin-minerva')) {
		return;
	}
	var navtoggle = function () {
		if ($('.navbox.mw-collapsible').length) {
			var $arrow = $('<div>')
				.addClass('mw-ui-icon mw-ui-icon-mf-arrow mw-ui-icon-element indicator');
			var $navigationText = $('<span>')
				.addClass('mw-headline')
				.text('Navigation');
			var $toggleBar = $('<h2>')
				.attr('id', 'navbox-fake-collapsible-heading')
				.addClass('section-heading collapsible-heading')
				.append($arrow)
				.append($navigationText);
	
			$toggleBar.on('click', function () {
				// flip arrow
				$('#navbox-fake-collapsible-heading > .mw-ui-icon').toggleClass('mf-mw-ui-icon-rotate-flip');
				// collapse navboxes
				$('.navbox.mw-collapsible').toggle();
			});
	
			// pull out navboxes so they don't get collapsed by the previous section
			var $navboxes = $('.navbox.mw-collapsible').detach();
			// default to hidden
			$navboxes.toggle();
			// append everything to the end of the content section
			$('.mw-parser-output').first().append($toggleBar).append($navboxes);
		}
	};
	
	function init() {
		var tout = setTimeout(clearInterval, 30000, checksections);
		var checksections = setInterval( function () {
			if ( $('.mw-parser-output .collapsible-block[aria-expanded]').length ) {
				navtoggle();
				clearTimeout(tout);
				clearInterval(checksections);
			}
		}, 500);
	}
	
	$(init);
	
})(jQuery);