12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- /*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);
- }
- });
- })();
|