User:Guycn2/ToggleSidebar.js

From Meta, a Wikimedia project coordination wiki

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.
/*

Collapse/expand sidebar for 2010 vector

Written by: [[User:Guycn2]]

*/

mw.loader.using("mediawiki.util", function() {
	
	if (mw.config.get("skin") !== "vector") return; // Only for old vector
	const lang = mw.config.get("wgUserLanguage");
	const isRTL = $("body.rtl").length;
	let originalMargin;
	if (isRTL) {
		originalMargin = $(".mw-body").css("margin-right");
	} else {
		originalMargin = $(".mw-body").css("margin-left");
	}
	
	function toggleSidebar(e) {
		if (typeof e === "object") {
			e.preventDefault();
		}
		$("#mw-panel").toggle();
		let newMargin;
		if (isRTL) {
			newMargin =
				$(".mw-body").css("margin-right") === "0px"
				? originalMargin
				: "0";
		} else {
			newMargin =
				$(".mw-body").css("margin-left") === "0px"
				? originalMargin
				: "0";
		}
		const selectors =
			`.mw-body,
			#mw-head-base,
			#left-navigation,
			#mw-data-after-content,
			.mw-footer`;
		if (isRTL) {
			mw.util.addCSS(
				`${selectors} {
					margin-right: ${newMargin};
				}`
			);
		} else {
			mw.util.addCSS(
				`${selectors} {
					margin-left: ${newMargin};
				}`
			);
		}
	}
	
	mw.util.addPortletLink(
		"p-personal",
		"#",
		lang === "he" ? "תפריט צד" : "Toggle sidebar",
		"pt-toggle_sidebar",
		lang === "he"
			? "הצגה או הסתרה של תפריט הצד"
			: "Expand or collapse sidebar",
		"",
		$("#pt-darkmode").length === 0 ? "#pt-watchlist" : "#pt-darkmode"
	).onclick = toggleSidebar;
	
	if (window.orientation !== undefined) {
		// On mobile devices, collapse sidebar by default when page loads
		$(document).ready(toggleSidebar);
	}
	
});