OwlCyberSecurity - MANAGER
Edit File: catchkathmandu-menu.js
/* * Menu Script */ jQuery(function( $ ) { /* Menu */ var body, menuWrapper, menuToggle, siteNavigation; function initMainNavigation( container ) { // Add dropdown toggle that displays child menu items. var dropdownToggle = $( '<button />', { 'class': 'dropdown-toggle', 'aria-expanded': false }) .append( $( '<span />', { 'class': 'screen-reader-text', text: catchKathmanduOptions.screenReaderText.expand }) ); container.find( '.menu-item-has-children > a, .page_item_has_children > a' ).after( dropdownToggle ); // Toggle buttons and submenu items with active children menu items. container.find( '.current-menu-ancestor > button' ).addClass( 'toggled-on' ); container.find( '.current-menu-ancestor > .sub-menu' ).addClass( 'toggled-on' ); // Add menu items with submenus to aria-haspopup="true". container.find( '.menu-item-has-children, .page_item_has_children' ).attr( 'aria-haspopup', 'true' ); container.find( '.dropdown-toggle' ).on( 'click', function( e ) { var _this = $( this ), screenReaderSpan = _this.find( '.screen-reader-text' ); e.preventDefault(); _this.toggleClass( 'toggled-on' ); // jscs:disable _this.attr( 'aria-expanded', _this.attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' ); // jscs:enable screenReaderSpan.text( screenReaderSpan.text() === catchKathmanduOptions.screenReaderText.expand ? catchKathmanduOptions.screenReaderText.collapse : catchKathmanduOptions.screenReaderText.expand ); } ); } initMainNavigation( $( '.main-navigation' ) ); menuWrapper = $( '#primary-menu-wrapper, #secondary-menu-wrapper' ); menuToggle = menuWrapper.find( '.menu-toggle' ); siteNavigation = menuWrapper.find( '#site-navigation' ); // Enable menuToggle. ( function() { // Assume the initial scroll position is 0. var scroll = 0; // Return early if menuToggle is missing. if ( ! menuToggle.length ) { return; } menuToggle.on( 'click.catchKathmandu', function() { } ); // Add an initial values for the attribute. siteNavigation.attr( 'aria-expanded', 'false' ); // Wait for a click on one of our menu toggles. menuToggle.on( 'click.catchKathmandu', function() { // jscs:disable $( this ).parent().parent().find( siteNavigation ).attr( 'aria-expanded', $( this ).parent().parent().find( siteNavigation ).attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' ); // jscs:enable // Assign this (the button that was clicked) to a variable. var button = this; // Gets the actual menu (parent of the button that was clicked). var menu = $( this ).parents( '.menu-wrapper' ); // Remove selected classes from other menus. $( '.menu-toggle' ).not( button ).removeClass( 'selected' ); $( '.menu-wrapper' ).not( menu ).removeClass( 'is-open' ); // Toggle the selected classes for this menu. $( button ).toggleClass( 'selected' ); $( menu ).toggleClass( 'is-open' ); // Is the menu in an open state? var is_open = $( menu ).hasClass( 'is-open' ); // If the menu is open and there wasn't a menu already open when clicking. if ( is_open && ! jQuery( 'body' ).hasClass( 'menu-open' ) ) { // Get the scroll position if we don't have one. if ( 0 === scroll ) { scroll = $( 'body' ).scrollTop(); } // Add a custom body class. $( 'body' ).addClass( 'menu-open' ); // If we're closing the menu. } else if ( ! is_open ) { $( 'body' ).removeClass( 'menu-open' ); $( 'body' ).scrollTop( scroll ); scroll = 0; } } ); // Close menus when somewhere else in the document is clicked. $( document ).on( 'click touchstart', function() { $( 'body' ).removeClass( 'menu-open' ); $( '.menu-toggle' ).removeClass( 'selected' ); $( '.menu-wrapper' ).removeClass( 'is-open' ); } ); // Stop propagation if clicking inside of our main menu. menuWrapper.on( 'click touchstart', function( e ) { e.stopPropagation(); } ); } )(); // Fix sub-menus for touch devices and better focus for hidden submenu items for accessibility. ( function() { if ( ! siteNavigation.length || ! siteNavigation.children().length ) { return; } // Toggle `focus` class to allow submenu access on tablets. function toggleFocusClassTouchScreen() { if ( window.innerWidth >= 910 ) { $( document.body ).on( 'touchstart.catchKathmandu', function( e ) { if ( ! $( e.target ).closest( '.main-navigation li' ).length ) { $( '.main-navigation li' ).removeClass( 'focus' ); } } ); siteNavigation.find( '.menu-item-has-children > a, .page_item_has_children > a' ).on( 'touchstart.catchKathmandu', function( e ) { var el = $( this ).parent( 'li' ); if ( ! el.hasClass( 'focus' ) ) { e.preventDefault(); el.toggleClass( 'focus' ); el.siblings( '.focus' ).removeClass( 'focus' ); } } ); } else { siteNavigation.find( '.menu-item-has-children > a, .page_item_has_children > a' ).unbind( 'touchstart.catchKathmandu' ); } } if ( 'ontouchstart' in window ) { $( window ).on( 'resize.catchKathmandu', toggleFocusClassTouchScreen ); toggleFocusClassTouchScreen(); } siteNavigation.find( 'a' ).on( 'focus.catchKathmandu blur.catchKathmandu', function() { $( this ).parents( '.menu-item, .page_item' ).toggleClass( 'focus' ); } ); $('.main-navigation button.dropdown-toggle, .top-navigation button.dropdown-toggle, .secondary-navigation button.dropdown-toggle').on( 'click',function() { $(this).toggleClass('active'); $(this).parent().find('.children, .sub-menu').first().toggleClass('toggled-on'); }); } )(); });