1/** 2 * Above Header Header Styling 3 * 4 * @package Astra Addon 5 * @since 1.0.0 6 */ 7 8( function() { 9 10 var above_header = document.querySelector( '.ast-above-header' ), 11 above_header_nav = document.querySelector( '.ast-above-header-navigation' ), 12 top_menu_toggle = document.querySelector( '.menu-above-header-toggle' ), 13 main_menu_toggle = document.querySelector( '.main-header-menu-toggle' ), 14 below_header_toggle = document.querySelector( '.menu-below-header-toggle' ); 15 16 var html = document.querySelector( 'html' ); 17 var __main_header_all = document.querySelectorAll( '.ast-above-header' ); 18 var menu_toggle_all = document.querySelectorAll( '.menu-above-header-toggle' ); 19 var above_header_nav_all = document.querySelectorAll( '.ast-above-header-navigation' ); 20 21 if ( menu_toggle_all.length > 0 ) { 22 23 for (var i = 0; i < menu_toggle_all.length; i++) { 24 25 menu_toggle_all[i].setAttribute('data-index', i); 26 27 menu_toggle_all[i].addEventListener( 'click', function( event ) { 28 event.preventDefault(); 29 30 var event_index = this.getAttribute( 'data-index' ); 31 32 var menuHasChildren = __main_header_all[event_index].querySelectorAll( '.menu-item-has-children, .page_item_has_children' ); 33 for ( var i = 0; i < menuHasChildren.length; i++ ) { 34 menuHasChildren[i].classList.remove( 'ast-submenu-expanded' ); 35 var menuHasChildrenSubMenu = menuHasChildren[i].querySelectorAll( '.sub-menu, .children' ); 36 for (var j = 0; j < menuHasChildrenSubMenu.length; j++) { 37 menuHasChildrenSubMenu[j].style.display = 'none'; 38 }; 39 } 40 41 var rel = this.getAttribute( 'rel' ) || ''; 42 switch ( rel ) { 43 case 'above-header': 44 toggleClass( __main_header_all[event_index], 'toggle-on' ); 45 toggleClass( menu_toggle_all[event_index], 'toggled' ); 46 if ( __main_header_all[event_index].classList.contains( 'toggle-on' ) ) { 47 //__main_header_all[event_index].style.display = 'block'; 48 above_header_nav_all[event_index].style.display = 'block'; 49 html.classList.add( 'above-header-toggle-on' ); 50 } else { 51 //__main_header_all[event_index].style.display = ''; 52 above_header_nav_all[event_index].style.display = ''; 53 html.classList.remove( 'above-header-toggle-on' ); 54 } 55 56 document.body.classList.add( "ast-above-header-nav-open" ); 57 break; 58 } 59 60 var elm = document.querySelector( '.ast-above-header-navigation' ); 61 var rect = elm.getBoundingClientRect(); 62 var vph = Math.max( document.documentElement.clientHeight, window.innerHeight || 0 ); 63 64 elm.style.maxHeight = Math.abs( vph - rect.top ) + 'px'; 65 66 }, false); 67 68 if( 'undefined' !== typeof __main_header_all[i] ) { 69 var parentList = __main_header_all[i].querySelectorAll( 'ul.ast-above-header-menu li' ); 70 AstraNavigationMenu( parentList ); 71 72 if ( document.querySelector("header.site-header").classList.contains("ast-menu-toggle-link") ) { 73 var astra_menu_toggle = __main_header_all[i].querySelectorAll( '.ast-header-break-point .ast-above-header-menu .ast-menu-toggle, .ast-header-break-point .ast-above-header-menu .menu-item-has-children > a' ); 74 } else { 75 var astra_menu_toggle = __main_header_all[i].querySelectorAll( 'ul.ast-above-header-menu .ast-menu-toggle' ); 76 } 77 78 AstraToggleMenu( astra_menu_toggle ); 79 } 80 81 }; 82 } else{ 83 var __primary_menu = document.querySelectorAll( '.main-header-menu' ); 84 var __above_main_header_all = document.querySelectorAll( '.ast-above-header-menu-items' ); 85 var above_menu_toggle_all = document.querySelectorAll( '.main-header-menu-toggle' ); 86 87 if ( above_menu_toggle_all.length > 0 && __above_main_header_all.length > 0 && __primary_menu.length == 0 ) { 88 89 for (var i = 0; i < above_menu_toggle_all.length; i++) { 90 var parentListAboveHeader = __above_main_header_all[i].querySelectorAll( 'li' ); 91 AstraNavigationMenu( parentListAboveHeader ); 92 93 var astra_menu_toggle_above_header = __above_main_header_all[i].querySelectorAll( '.ast-menu-toggle' ); 94 AstraToggleMenu( astra_menu_toggle_above_header ); 95 96 }; 97 98 } 99 } 100 101 /* Above Header Menu toggle click */ 102 if ( null != top_menu_toggle ) { 103 104 /* Main Menu toggle click */ 105 if ( null != main_menu_toggle && null != above_header_nav ) { 106 main_menu_toggle.addEventListener( 'click', function( event ) { 107 108 above_header.classList.remove( 'toggle-on' ); 109 //above_header.style.display = 'none'; 110 above_header_nav.style.display = 'none'; 111 if ( null != top_menu_toggle ){ 112 top_menu_toggle.classList.remove( 'toggled' ); 113 } 114 if ( null != below_header_toggle ) { 115 below_header_toggle.classList.remove( 'toggled' ); 116 } 117 118 }, false); 119 } 120 121 top_menu_toggle.addEventListener( 'click', function( event ) { 122 event.preventDefault(); 123 124 if ( null != main_menu_toggle ) { 125 main_menu_toggle.classList.remove( 'toggled' ); 126 } 127 128 if ( null != below_header_toggle ){ 129 below_header_toggle.classList.remove( 'toggled' ); 130 } 131 132 var ast_below_header = document.querySelector( '.ast-below-header' ); 133 if ( null != ast_below_header ) { 134 135 var ast_below_header_nav = document.querySelector( '.ast-below-header-actual-nav' ); 136 137 ast_below_header.classList.remove( 'toggle-on' ); 138 //ast_below_header.style.display = ''; 139 140 if ( null != ast_below_header_nav ) { 141 ast_below_header_nav.style.display = ''; 142 } 143 } 144 145 var main_header_bar = document.querySelector( '.main-header-bar-navigation' ); 146 if ( null != main_header_bar ) { 147 main_header_bar.classList.remove( 'toggle-on' ); 148 main_header_bar.style.display = ''; 149 } 150 }, false); 151} 152 153 154 /** 155 * Navigation Keyboard Navigation. 156 */ 157 var container, button, menu, links, subMenus, i, len; 158 159 container = document.getElementById( 'ast-above-header-navigation' ); 160 if ( ! container ) { 161 return; 162 } 163 164 button = container.getElementsByTagName( 'button' )[0]; 165 if ( 'undefined' === typeof button ) { 166 return; 167 } 168 169 menu = container.getElementsByTagName( 'ul' )[0]; 170 171 // Hide menu toggle button if menu is empty and return early. 172 if ( 'undefined' === typeof menu ) { 173 button.style.display = 'none'; 174 return; 175 } 176 177 menu.setAttribute( 'aria-expanded', 'false' ); 178 if ( -1 === menu.className.indexOf( 'nav-menu' ) ) { 179 menu.className += ' nav-menu'; 180 } 181 182 button.onclick = function() { 183 console.log('yes4: '); 184 if ( -1 !== container.className.indexOf( 'toggled' ) ) { 185 container.className = container.className.replace( ' toggled', '' ); 186 button.setAttribute( 'aria-expanded', 'false' ); 187 menu.setAttribute( 'aria-expanded', 'false' ); 188 } else {
189 container.className += ' toggled'; 190 button.setAttribute( 'aria-expanded', 'true' ); 191 menu.setAttribute( 'aria-expanded', 'true' ); 192 } 193 }; 194 195 // Get all the link elements within the menu. 196 links = menu.getElementsByTagName( 'a' ); 197 subMenus = menu.getElementsByTagName( 'ul' ); 198 199 200 // Set menu items with submenus to aria-haspopup="true". 201 for ( i = 0, len = subMenus.length; i < len; i++ ) { 202 subMenus[i].parentNode.setAttribute( 'aria-haspopup', 'true' ); 203 } 204 205 // Each time a menu link is focused or blurred, toggle focus. 206 for ( i = 0, len = links.length; i < len; i++ ) { 207 links[i].addEventListener( 'focus', toggleFocus, true ); 208 links[i].addEventListener( 'blur', toggleFocus, true ); 209 } 210 211 /** 212 * Sets or removes .focus class on an element. 213 */ 214 function toggleFocus() { 215 var self = this; 216 217 // Move up through the ancestors of the current link until we hit .nav-menu. 218 while ( -1 === self.className.indexOf( 'nav-menu' ) ) { 219 220 // On li elements toggle the class .focus. 221 if ( 'li' === self.tagName.toLowerCase() ) { 222 if ( -1 !== self.className.indexOf( 'focus' ) ) { 223 self.className = self.className.replace( ' focus', '' ); 224 } else { 225 self.className += ' focus'; 226 } 227 } 228 229 self = self.parentElement; 230 } 231 } 232 233})();
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.