Home | History | Annotate | Download | only in js
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 /**
      6  * Adds toggle controls to the sidebar list.
      7  *
      8  * Finds all elements marked as toggleable, and adds an onClick event to
      9  * collapse and expand the element's children.
     10  */
     11 (function() {
     12   var sidebar = document.getElementById('gc-sidebar');
     13   if (!sidebar)
     14     return;
     15 
     16   Array.prototype.forEach.call(sidebar.querySelectorAll('[toggleable]'),
     17                                function(toggleable) {
     18     var button = toggleable.parentNode.querySelector('.button');
     19     var toggleIndicator = button.querySelector('.toggleIndicator');
     20     var isToggled = false;
     21     function toggle() {
     22       if (isToggled) {
     23         toggleable.classList.add('hidden');
     24         toggleIndicator.classList.remove('toggled');
     25       } else {
     26         toggleable.classList.remove('hidden');
     27         toggleIndicator.classList.add('toggled');
     28       }
     29       isToggled = !isToggled;
     30     }
     31     button.setAttribute('href', 'javascript:void(0)');
     32     button.addEventListener('click', toggle);
     33   });
     34 
     35 })();
     36