Yesterday I helped my pal Marcel Meth (@marcelmeth) with a pretty simple little task, but everything’s simple if you know how to do it! We needed to add simple accordion-like expand/collapse functionality to the Quick Launch on the pages in a Site Collection. Because there were going to be a lot of links in the Quick Launch (mostly links to different views of lists), it was getting pretty cumbersome to wade through. By adding this expand/collapse capability, we could improve the user experience (UX). It’s little stuff like this that makes SharePoint usable. Never underestimate the power of a small tweak like this.
This code works on a Team Site on SharePoint Online in Office365 with its Quick Launch exposed in the normal way. Any other customization you have in place may interfere with this working. (Yadda, yadda, disclaimer, YMMV, etc.) I’m sure it will work for you – possibly with some tweaks – in any SharePoint 2013 or SharePoint Online site. You can add this script to a single page or to the master page if you’d like it to work on all pages in the Site Collection.
// Find all the top level links in the Quick Launch that have children var topLevelLinks = $("div[id$='QuickLaunchMenu'] > ul > li:has('ul') > a"); // Prepend the little "twiddle" icon to each top level link topLevelLinks.prepend("<span class='ms-commentexpand-iconouter ql-icon'><img alt='expand' src='/Comm/Comms2/_themes/1/spcommon-B35BB0A9.themedpng?ctag=2' class='ms-commentexpand-icon'></span>"); // We're starting with all of the sections collapsed. If you want them expanded, comment this out. topLevelLinks.closest("li").find("> ul").hide(); // Set up for the click even of on the top level links topLevelLinks.click(function(e) { // We're going to stop the default behavior e.preventDefault(); // Find the elements we need to work with var childUl = $(this).closest("li").find("> ul"); var isVisible = childUl.is(":visible") // If the section is visible, hide it, and vice versa if(isVisible) { // Replace the icon with its antitheses $(this).find(".ql-icon").replaceWith("<span class='ms-commentexpand-iconouter ql-icon'><img alt='expand' src='/Comm/Comms2/_themes/1/spcommon-B35BB0A9.themedpng?ctag=2' class='ms-commentexpand-icon'></span>"); // Hide the child links by sliding up. Note: You could change the effect here. childUl.slideUp(); } else { // Replace the icon with its antitheses $(this).find(".ql-icon").replaceWith("<span class='ms-commentcollapse-iconouter ql-icon'><img alt='expand' src='/Comm/Comms2/_themes/1/spcommon-B35BB0A9.themedpng?ctag=2' class='ms-commentcollapse-icon'></span>"); // Show the child links by sliding down. Note: You could change the effect here. childUl.slideDown(); } });
by Marc D Anderson via Marc D Anderson's Blog
No comments:
Post a Comment