56 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| /*global gettext*/
 | |
| (function() {
 | |
|     'use strict';
 | |
|     var closestElem = function(elem, tagName) {
 | |
|         if (elem.nodeName === tagName.toUpperCase()) {
 | |
|             return elem;
 | |
|         }
 | |
|         if (elem.parentNode.nodeName === 'BODY') {
 | |
|             return null;
 | |
|         }
 | |
|         return elem.parentNode && closestElem(elem.parentNode, tagName);
 | |
|     };
 | |
| 
 | |
|     window.addEventListener('load', function() {
 | |
|         // Add anchor tag for Show/Hide link
 | |
|         var fieldsets = document.querySelectorAll('fieldset.collapse');
 | |
|         for (var i = 0; i < fieldsets.length; i++) {
 | |
|             var elem = fieldsets[i];
 | |
|             // Don't hide if fields in this fieldset have errors
 | |
|             if (elem.querySelectorAll('div.errors').length === 0) {
 | |
|                 elem.classList.add('collapsed');
 | |
|                 var h2 = elem.querySelector('h2');
 | |
|                 var link = document.createElement('a');
 | |
|                 link.setAttribute('id', 'fieldsetcollapser' + i);
 | |
|                 link.setAttribute('class', 'collapse-toggle');
 | |
|                 link.setAttribute('href', '#');
 | |
|                 link.textContent = gettext('Show');
 | |
|                 h2.appendChild(document.createTextNode(' ('));
 | |
|                 h2.appendChild(link);
 | |
|                 h2.appendChild(document.createTextNode(')'));
 | |
|             }
 | |
|         }
 | |
|         // Add toggle to hide/show anchor tag
 | |
|         var toggleFunc = function(ev) {
 | |
|             if (ev.target.matches('.collapse-toggle')) {
 | |
|                 ev.preventDefault();
 | |
|                 ev.stopPropagation();
 | |
|                 var fieldset = closestElem(ev.target, 'fieldset');
 | |
|                 if (fieldset.classList.contains('collapsed')) {
 | |
|                     // Show
 | |
|                     ev.target.textContent = gettext('Hide');
 | |
|                     fieldset.classList.remove('collapsed');
 | |
|                 } else {
 | |
|                     // Hide
 | |
|                     ev.target.textContent = gettext('Show');
 | |
|                     fieldset.classList.add('collapsed');
 | |
|                 }
 | |
|             }
 | |
|         };
 | |
|         var inlineDivs = document.querySelectorAll('fieldset.module');
 | |
|         for (i = 0; i < inlineDivs.length; i++) {
 | |
|             inlineDivs[i].addEventListener('click', toggleFunc);
 | |
|         }
 | |
|     });
 | |
| })();
 |