FCDM-website-new/wp-content/themes/primer/assets/js/navigation.js

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 );