43 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*global gettext*/
 | 
						|
'use strict';
 | 
						|
{
 | 
						|
    window.addEventListener('load', function() {
 | 
						|
        // Add anchor tag for Show/Hide link
 | 
						|
        const fieldsets = document.querySelectorAll('fieldset.collapse');
 | 
						|
        for (const [i, elem] of fieldsets.entries()) {
 | 
						|
            // Don't hide if fields in this fieldset have errors
 | 
						|
            if (elem.querySelectorAll('div.errors, ul.errorlist').length === 0) {
 | 
						|
                elem.classList.add('collapsed');
 | 
						|
                const h2 = elem.querySelector('h2');
 | 
						|
                const link = document.createElement('a');
 | 
						|
                link.id = 'fieldsetcollapser' + i;
 | 
						|
                link.className = 'collapse-toggle';
 | 
						|
                link.href = '#';
 | 
						|
                link.textContent = gettext('Show');
 | 
						|
                h2.appendChild(document.createTextNode(' ('));
 | 
						|
                h2.appendChild(link);
 | 
						|
                h2.appendChild(document.createTextNode(')'));
 | 
						|
            }
 | 
						|
        }
 | 
						|
        // Add toggle to hide/show anchor tag
 | 
						|
        const toggleFunc = function(ev) {
 | 
						|
            if (ev.target.matches('.collapse-toggle')) {
 | 
						|
                ev.preventDefault();
 | 
						|
                ev.stopPropagation();
 | 
						|
                const fieldset = ev.target.closest('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');
 | 
						|
                }
 | 
						|
            }
 | 
						|
        };
 | 
						|
        document.querySelectorAll('fieldset.module').forEach(function(el) {
 | 
						|
            el.addEventListener('click', toggleFunc);
 | 
						|
        });
 | 
						|
    });
 | 
						|
}
 |