99 lines
1.6 KiB
JavaScript
99 lines
1.6 KiB
JavaScript
/* global jQuery */
|
|
|
|
( function( $ ) {
|
|
|
|
var $navMenu = false,
|
|
$menuToggle = false,
|
|
$submenu = false;
|
|
|
|
function toggle() {
|
|
|
|
$menuToggle.add( $navMenu ).toggleClass( 'open' );
|
|
|
|
resetSubmenuToggles();
|
|
|
|
}
|
|
|
|
function resetSubmenuToggles() {
|
|
|
|
$navMenu.find( '.menu-item-has-children' ).removeClass( 'open' );
|
|
|
|
}
|
|
|
|
function expand( e ) {
|
|
|
|
e.preventDefault();
|
|
|
|
var $menuItem = $( this ).parent( '.menu-item-has-children' );
|
|
|
|
if ( ! $menuItem ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
$menuItem.toggleClass( 'open' );
|
|
|
|
}
|
|
|
|
function position() {
|
|
|
|
var $this = $( this );
|
|
|
|
$submenu = $this.children( '.sub-menu' ).first();
|
|
|
|
if ( isOffScreen( $submenu ) || $submenu.parents( '.bump' ).length ) {
|
|
|
|
$submenu.siblings( 'a' ).andSelf().addClass( 'bump' );
|
|
|
|
$submenu.css( {
|
|
'left' : 'auto',
|
|
'right' : ( $this.parents( 'ul' ).length > 1 ) ? $submenu.width() : 0
|
|
} );
|
|
|
|
}
|
|
|
|
$this.on( 'mouseleave', function() {
|
|
|
|
$submenu.removeAttr( 'style' );
|
|
|
|
} );
|
|
|
|
}
|
|
|
|
function isOffScreen( $submenu ) {
|
|
|
|
var submenuPosition = $submenu.offset().left,
|
|
submenuWidth = $submenu.width();
|
|
|
|
return ( submenuPosition + submenuWidth ) > $( window ).width();
|
|
|
|
}
|
|
|
|
$( document ).ready( function() {
|
|
|
|
$navMenu = $( '#site-navigation' );
|
|
$menuToggle = $( '#menu-toggle' );
|
|
|
|
if ( ! $navMenu || ! $menuToggle ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
$menuToggle.on( 'click', toggle );
|
|
|
|
$navMenu.find( '.menu-item-has-children' ).on( 'hover', position );
|
|
|
|
$navMenu.find( '.expand' ).on( 'click', expand );
|
|
|
|
$( document ).on( 'wp-custom-header-video-loaded', function() {
|
|
|
|
$( '.site-header' ).addClass( 'video-header' );
|
|
|
|
} );
|
|
|
|
} );
|
|
|
|
} )( jQuery );
|