Expand Subreddit Header

Expand subreddit header on Reddit

// ==UserScript==
// @name            Expand Subreddit Header
// @version         0.5
// @description     Expand subreddit header on Reddit
// @author          Drazen Bjelovuk
// @match           *://www.reddit.com/*
// @grant           none
// @run-at          document-start
// @namespace       https://greasyfork.org/users/11679
// @contributionURL https://goo.gl/dYIygm
// ==/UserScript==

var css = document.createElement("style");
css.type = "text/css";
css.innerHTML = 
    "#sr-header-area .flat-list > li  { white-space: initial !important; } " + 
    "#sr-header-area .dropdown.srdrop { padding-left: 0 !important; }" +
    ".sr-list                         { display: inline !important; visibility: hidden; } " +
    "#sr-header-area                  { height: initial !important; } " +
    "#sr-header-area > .width-clip    { position: initial !important; padding-left: 5px !important; } " +
    "#sr-more-link                    { position: initial !important; } " +
    ".dropdown.srdrop                 { display: none !important; }";

document.head.appendChild(css);

document.addEventListener("DOMContentLoaded", function() {
    var list = document.querySelectorAll('.sr-list')[0].children[2];
    var subs = list.children;
    subs[0].innerHTML = '<span class="separator">-</span>' + subs[0].innerHTML;
    var sorted = Array.prototype.slice.call(subs).sort(function(a, b) {
        return a.lastChild.textContent.toLowerCase() > b.lastChild.textContent.toLowerCase() ? 1 : -1; 
    });

    var firstSeparator = sorted[0].getElementsByClassName('separator')[0];
    if (firstSeparator) firstSeparator.remove();

    sorted.forEach(function(node) {
        list.appendChild(node); 
    });
    list.parentNode.style.visibility = 'visible';
});