Jump to content

User:Guycn2/ToggleSidebar.js

From Meta, a Wikimedia project coordination wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

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);
	}
	
});