/** * File navigation.js * * Handles toggling the navigation menu for small screens and enables tab * support for dropdown menus. * * @package Astra */ /** * Get all of an element's parent elements up the DOM tree * * @param {Node} elem The element. * @param {String} selector Selector to match against [optional]. * @return {Array} The parent elements. */ var getParents = function ( elem, selector ) { // Element.matches() polyfill. if ( ! Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(s) { var matches = (this.document || this.ownerDocument).querySelectorAll( s ), i = matches.length; while (--i >= 0 && matches.item( i ) !== this) {} return i > -1; }; } // Setup parents array. var parents = []; // Get matching parent elements. for ( ; elem && elem !== document; elem = elem.parentNode ) { // Add matching parents to array. if ( selector ) { if ( elem.matches( selector ) ) { parents.push( elem ); } } else { parents.push( elem ); } } return parents; }; /* . */ /** * Toggle Class funtion * * @param {Node} elem The element. * @param {String} selector Selector to match against [optional]. * @return {Array} The parent elements. */ var toggleClass = function ( el, className ) { if ( el.classList.contains( className ) ) { el.classList.remove( className ); } else { el.classList.add( className ); } }; ( function() { var __main_header = document.querySelector( '.main-header-bar-navigation' ); var menu_toggle = document.querySelector( '.main-header-menu-toggle' ); /* Main Menu toggle click */ if ( null != menu_toggle ) { menu_toggle.addEventListener( 'click', function( event ) { event.preventDefault(); var menuHasChildren = document.querySelectorAll( '.menu-item-has-children, .page_item_has_children' ); for ( var i = 0; i < menuHasChildren.length; i++ ) { menuHasChildren[i].classList.remove( 'ast-submenu-expanded' ); var menuHasChildrenSubMenu = menuHasChildren[i].querySelectorAll( '.sub-menu, .children' ); for (var j = 0; j < menuHasChildrenSubMenu.length; j++) { menuHasChildrenSubMenu[j].style.display = 'none'; }; } var rel = this.getAttribute( 'rel' ) || ''; switch ( rel ) { case 'main-menu': toggleClass( __main_header, 'toggle-on' ); toggleClass( menu_toggle, 'toggled' ); if ( __main_header.classList.contains( 'toggle-on' ) ) { __main_header.style.display = 'block'; } else { __main_header.style.display = ''; } break; } }, false); } AstraNavigationMenu = function( selector ) { var parentList = document.querySelectorAll( selector ); for (var i = 0; i < parentList.length; i++) { if ( null != parentList[i].querySelector( '.sub-menu, .children' ) ) { // Insert Toggle Button. var toggleButton = document.createElement("BUTTON"); // Create a