/** * Theme frontend scripts * * @package Auberge * @copyright 2014 WebMan - Oliver Juhas * @version 1.0 * * CONTENT: * - 10) Basics * - 20) Site header * - 30) Banner * - 40) Posts * - 50) Site footer * - 100) Others */ jQuery( function() { /** * 10) Basics */ /** * Tell CSS that JS is enabled... */ jQuery( '.no-js' ).removeClass( 'no-js' ); /** * Clear floats after columns */ jQuery( '.column.last' ).after( '
' ); /** * Back to top buttons */ if ( 960 < document.body.clientWidth ) { jQuery( '.back-to-top' ).on( 'click', function( e ) { e.preventDefault(); jQuery( 'html, body' ).animate( { scrollTop: 0 }, 400 ); } ); } /** * YouTube embed fix (prevent video being on top of elements) */ jQuery( 'iframe[src*="youtube.com"]' ).each( function( item ) { var srcAtt = jQuery( this ).attr( 'src' ); if ( -1 == srcAtt.indexOf( '?' ) ) { srcAtt += '?wmode=transparent'; } else { srcAtt += '&wmode=transparent'; } jQuery( this ).attr( 'src', srcAtt ); } ); /** * 20) Site header */ /** * Header search form */ jQuery( '#search-toggle' ).on( 'click', function( e ) { e.preventDefault(); jQuery( this ) .parent() .toggleClass( 'active' ) .find( '.search-field' ) .focus(); } ); /** * Mobile navigation */ jQuery( '#menu-toggle' ).on( 'click', function( e ) { e.preventDefault(); jQuery( this ) .parent( '#site-navigation' ) .toggleClass( 'active' ) .find( '.main-navigation-inner' ) .slideToggle(); } ); //Disable mobile navigation on wider screens jQuery( window ).on( 'resize orientationchange', function( e ) { if ( 960 < document.body.clientWidth ) { jQuery( '#site-navigation .main-navigation-inner' ).show(); } } ); /** * 30) Banner */ /** * Banner slider */ if ( jQuery().slick ) { jQuery( '#site-banner.enable-slider .site-banner-inner' ).slick( { 'adaptiveHeight' : true, 'autoplay' : true, 'autoplaySpeed' : ( ! jQuery( '#site-banner' ).data( 'speed' ) ) ? ( 5400 ) : ( jQuery( '#site-banner' ).data( 'speed' ) ), 'cssEase' : 'ease-in-out', 'dots' : true, 'draggable' : false, 'easing' : 'easeInOutBack', 'fade' : true, 'pauseOnHover' : true, 'slide' : 'article', 'speed' : 600, 'swipeToSlide' : true, 'prevArrow' : '', 'nextArrow' : '' } ); } // /slick /** * 40) Posts */ /** * Masonry layout */ if ( jQuery().masonry ) { /** * Posts list */ var $postsContainers = jQuery( '.posts' ); $postsContainers.imagesLoaded( function() { $postsContainers.masonry( { itemSelector : '.hentry' } ); } ); /** * [gallery] shortcode Masonry layout */ var $galleryContainers = jQuery( '.gallery' ); $galleryContainers.imagesLoaded( function() { $galleryContainers.masonry( { itemSelector : '.gallery-item' } ); } ); } // /masonry /** * 50) Site footer */ /** * Masonry footer widgets */ if ( jQuery().masonry && 1 < jQuery( '#footer-widgets' ).data( 'columns' ) //Doesn't make sense for 1 column layout ) { var $footerWidgets = jQuery( '#footer-widgets-container' ); $footerWidgets.imagesLoaded( function() { $footerWidgets.masonry( { itemSelector : '.widget' } ); } ); } // /masonry /** * 100) Others */ /** * Sidebar mobile toggle */ //Disable sidebar toggle on wider screens jQuery( window ).on( 'resize orientationchange', function( e ) { if ( 960 < document.body.clientWidth ) { jQuery( '#toggle-mobile-sidebar' ) .siblings( '.widget' ) .show(); } } ); //Clicking the toggle sidebar widgets button jQuery( '#toggle-mobile-sidebar' ).on( 'click', function( e ) { e.preventDefault(); jQuery( this ) .siblings( '.widget' ) .slideToggle(); } ); /** * Food menu groups navigation * * Pure JS solution. Waiting for Jetpack to improve HTML output control. * @todo Create with PHP after Jetpack improves modifications. Possibly * use Jetpack's get_option( 'nova_menu_order' ). */ if ( jQuery( '.items-list .menu-group-header' ).length ) { var $menuGroups = []; //Set menu groups IDS jQuery( '.menu-group-header' ).each( function( index, val ) { var $this = jQuery( this ), $thisTitle = $this.find( '> .menu-group-title' ).text(), $thisID = $thisTitle.replace( ' ', '_' ).toLowerCase().replace( /(\r\n|\n|\r)/gm, '' ); $menuGroups[ $thisID ] = $thisTitle; $this.attr( 'id', $thisID ).append( '' + $scriptsInline.text_menu_group_nav + '' ); } ); //Create a navigation jQuery( '' ).prependTo( '.items-list' ); for ( var $menuGroupID in $menuGroups ) { //@link http://stackoverflow.com/questions/921789/how-to-loop-through-javascript-object-literal-with-objects-as-members if ( $menuGroups.hasOwnProperty( $menuGroupID ) ) { jQuery( '