1{ 2 const dropdowns = document.querySelectorAll('[data-component-scope="viva-custom"] .dropdown'); 3 4 dropdowns.forEach((dropdown) => { 5 const toggle = dropdown.querySelector('.dropdown__toggle'); 6 7 toggle?.addEventListener('click', (e) => { 8 e.preventDefault(); 9 10 dropdown.toggleAttribute('data-dropdown-opened'); 11 }); 12 }); 13 14 const submenus = document.querySelectorAll('[data-component-scope="viva-custom"] [data-primary-nav-submenu]'); 15 16 submenus.forEach((submenu) => { 17 const toggle = submenu.querySelector('.primary-nav__link'); 18 19 toggle?.addEventListener('click', (e) => { 20 e.preventDefault(); 21 22 const status = submenu.getAttribute('data-primary-nav-submenu'); 23 24 if (status === 'opened') { 25 submenu.setAttribute('data-primary-nav-submenu', ''); 26 } else { 27 submenu.setAttribute('data-primary-nav-submenu', 'opened'); 28 } 29 }); 30 }); 31 32 const header = document.querySelector('[data-component-scope="viva-custom"].header'); 33 const primaryNav = document.querySelector('[data-component-scope="viva-custom"] .primary-nav'); 34 const primaryNavToggle = document.querySelector('[data-component-scope="viva-custom"] .primary-nav__toggle'); 35 36 primaryNavToggle?.addEventListener('click', (e) => { 37 e.preventDefault(); 38 39 const status = header?.getAttribute('data-primary-nav-mobile'); 40 41 if (status === 'opened') { 42 header?.setAttribute('data-primary-nav-mobile', 'closed'); 43 } else { 44 header?.setAttribute('data-primary-nav-mobile', 'opened'); 45 } 46 }); 47 48 document.addEventListener('click', (e) => { 49 const dropdownToggleClosest = e.target.closest('[data-component-scope="viva-custom"] .dropdown__toggle'); 50 51 dropdowns.forEach((dropdown) => { 52 if (dropdown.querySelector('.dropdown__toggle') !== dropdownToggleClosest) { 53 dropdown.removeAttribute('data-dropdown-opened'); 54 } 55 }); 56 57 const submenuClosest = e.target.closest('[data-component-scope="viva-custom"] [data-primary-nav-submenu]'); 58 59 submenus.forEach((submenu) => { 60 if (submenu !== submenuClosest) { 61 submenu.setAttribute('data-primary-nav-submenu', ''); 62 } 63 }); 64 65 const primaryNavClosest = e.target.closest('[data-component-scope="viva-custom"] .primary-nav'); 66 const primaryNavToggleClosest = e.target.closest('[data-component-scope="viva-custom"] .primary-nav__toggle'); 67 68 if (primaryNav !== primaryNavClosest && primaryNavToggle !== primaryNavToggleClosest) { 69 header?.setAttribute('data-primary-nav-mobile', 'closed'); 70 } 71 }); 72}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.