Warning: fopen(/www/sites/update.greasyfork.icu/index/store/forever/98bf5b10faed6a834a883b0046f49ebf.js): failed to open stream: No space left on device in /www/sites/update.greasyfork.icu/index/scriptControl.php on line 65
// ==UserScript==
// @name Yahoo Mail Sidebar Shrinker
// @namespace https://greasyfork.org/en/users/810921-guywmustang
// @version 1.0
// @description Shrink the side bar in Yahoo Mail
// @author guywmustang
// @match https://mail.yahoo.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=yahoo.com
// @grant none
// @run-at document-end
// @license MIT
// @downloadURL none
// ==/UserScript==
(function() {
'use strict';
function replaceCssClasses(elem, cssString) {
elem.classList = [];
cssString.split(' ').forEach((style) => elem.classList.add(style));
}
function handleClickToNewWindow(elem, url) {
elem.addEventListener("click", function(e) {
e.stopPropagation();
// alert(e.target + ": " + url);
window.open(url, "_blank");
});
}
function overrideSidebar() {
console.log("Overriding sidebar...");
// Remove the iframe, the hide button, etc
var rightRailElement = document.querySelector("div[data-test-id=mail-right-rail]")
// Hide the right arrow button
var hideAdButton = document.querySelector("div[data-test-id=right-rail-hidead-btn]")
hideAdButton.style.display = "none"
// Start changing class styles of the various child elements
var element1 = rightRailElement.querySelector(".Z_qc");
element1.classList.add("H_6D6F"); // Adds height: 100% style
// Remove the iframe grandparent div (to remove all traces of the bottom div)
var iframeParentDiv = rightRailElement.querySelector("iframe").parentElement.parentElement.remove();
// Change the styling on the elements
var commsPropertiesBar = rightRailElement.querySelector("div[data-test-id=comms-properties-bar]");
replaceCssClasses(commsPropertiesBar, "D_F en_0 gl_CI je_6Fd5 jb_6Fd5 N_6Fd5 X_6Fd5 H_6D6F k_w I_ZS20V7 m_ZYfqDw U_0 ab_C ek_BB");
var commsProperties = rightRailElement.querySelector("div[data-test-id=comms-properties]");
replaceCssClasses(commsProperties, "D_F W_A ab_C ek_BB Y_6EGz");
var paneIconCssClasses = "D_F r_P M_Z1bGli4 q_n b_n P_0 C_Z281SGl cdPFi_ak5m8 cdPFi4_ZkbNhI is_26ISAR cZdTOHS_ZXgLQ3";
// Change the sidebar icon styles & override the click handlers
var contactsIconDiv = rightRailElement.querySelector("button[data-test-id=contacts-pane-icon]");
handleClickToNewWindow(contactsIconDiv, "https://mail.yahoo.com/b/contacts");
replaceCssClasses(contactsIconDiv, paneIconCssClasses);
var calendarIconDiv = rightRailElement.querySelector("[data-test-id=right-rail-calendar-icon]");
handleClickToNewWindow(calendarIconDiv, "https://calendar.yahoo.com/");
replaceCssClasses(calendarIconDiv, paneIconCssClasses);
var notepadIconDiv = rightRailElement.querySelector("[data-test-id=right-rail-notepad-icon]");
handleClickToNewWindow(notepadIconDiv, "https://calendar.yahoo.com/?view=notepad");
replaceCssClasses(notepadIconDiv, paneIconCssClasses);
var helpIconDiv = rightRailElement.querySelector("[data-test-id=right-rail-help-icon]");
replaceCssClasses(helpIconDiv, paneIconCssClasses);
// Move the settings/popover container div to the top
// Get the div[data-test-id=popover-container]
var popoverContainer = rightRailElement.querySelector("div > div > div[data-test-id=popover-container]");
// Change parent's classlist
replaceCssClasses(popoverContainer.parentElement, "D_F ab_C cdPFi_ZamTeg C_ZamTeg r_P");
// Change grandparent's classlist
replaceCssClasses(popoverContainer.parentElement.parentElement, "D_F ek_BB");
// Remove the span label
rightRailElement.querySelector("span[data-test-id=settings-link-label]").remove();
// Move the grandparent container to the first element under div[data-test-id=comms-properties-bar]
commsPropertiesBar.prepend(popoverContainer.parentElement.parentElement);
}
var oldHref = document.location.href;
function setHrefHandler() {
var bodyList = document.querySelector("body")
,observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (oldHref != document.location.href) {
oldHref = document.location.href;
console.log("url changed...");
/* Changed ! your code here */
setTimeout(overrideSidebar, 50);
}
});
});
var config = {
childList: true,
subtree: true
};
observer.observe(bodyList, config);
}
// Do the thing
window.onload = function() {
overrideSidebar();
setHrefHandler();
}
})();