Viewing File: /home/maglabs/greentech/wp-content/themes/porto/js/lazy-menu.js
// Lazyload Menu
( function( theme, $ ) {
'use strict';
theme = theme || {};
// expose to scope
$.extend( theme, {
lazyload_menu: function( $el, menu_type, menu_id ) {
if ( !js_porto_vars.lazyload_menu && 'mobile_menu' != menu_type ) {
return;
}
if ( menu_type ) {
var reload_menu = false,
menu_args = {
action: 'porto_lazyload_menu',
menu_type: menu_type,
nonce: js_porto_vars.porto_nonce
};
if ( menu_id ) {
menu_args['menu_id'] = menu_id;
}
var menu_loaded_fn = function( data ) {
if ( !data ) {
return;
}
var $data = $( data );
if ( 'mobile_menu' != menu_type ) {
$el.each( function( i ) {
var $menu = $( this ),
$main_menu = $data.children( '.mega-menu, .sidebar-menu' ).eq( i );
if ( !$main_menu.length ) {
$main_menu = $data.find( '.mega-menu, .sidebar-menu' ).eq( i );
}
$menu.children( 'li.menu-item-has-children' ).each( function( index ) {
var popup = $main_menu.children( 'li.menu-item-has-children' ).eq( index ).children( '.popup, .sub-menu' );
if ( popup.hasClass( 'popup' ) ) {
popup = popup.children( '.inner' );
}
if ( popup.length ) {
if ( $( this ).children( '.popup' ).length ) {
$( this ).children( '.popup' ).children( '.inner' ).replaceWith( popup );
} else if ( $menu.hasClass( 'overlay' ) ) {
$( this ).children( '.sub-menu' ).remove();
$( this ).append( popup );
} else {
$( this ).children( '.sub-menu' ).replaceWith( popup );
}
}
} );
if ( $menu.hasClass( 'mega-menu' ) ) {
theme.MegaMenu.build( $menu );
} else {
if ( $menu.hasClass( 'side-menu-accordion' ) ) {
$menu.themeAccordionMenu( { 'open_one': true } );
} else {
theme.SidebarMenu.build( $menu );
}
}
$menu.addClass( 'sub-ready' ).trigger( 'sub-loaded' );
} );
}
if ( $data.find( '#nav-panel, #side-nav-panel' ).length || 'mobile_menu' == menu_type ) {
var lazyload_again = false;
if ( $( '#nav-panel' ).length ) {
var $menu_content = $data.find( '.mobile-nav-wrap > *' );
if ( $menu_content.length ) {
$( '#nav-panel .mobile-nav-wrap > *' ).replaceWith( $menu_content );
$( '#nav-panel .mobile-nav-wrap' ).removeClass( 'skeleton-body porto-ajax-loading' );
$( '#nav-panel .accordion-menu' ).themeAccordionMenu();
} else {
lazyload_again = true;
}
} else if ( $( '#side-nav-panel' ).length ) {
var $menu_content = $data.find( '#side-nav-panel' );
if ( $menu_content.length ) {
$( '#side-nav-panel' ).replaceWith( $menu_content );
$( '#side-nav-panel .accordion-menu' ).themeAccordionMenu();
} else {
lazyload_again = true;
}
}
if ( lazyload_again && !reload_menu ) {
reload_menu = true;
lazyload_again = false;
var menu_again_args = menu_args;
menu_again_args['porto_lazyload_menu_2'] = 1;
$.post( window.location.href, menu_again_args, menu_loaded_fn );
}
}
if ( typeof $el == 'object' && $el.length ) {
$el.find( '.porto-lazyload:not(.lazy-load-loaded)' ).themePluginLazyLoad( {} );
$el.find( '.porto-carousel' ).each( function() {
$( this ).themeCarousel( $( this ).data( 'plugin-options' ) );
} );
$el.find( '[data-appear-animation]' ).each( function() {
$( this ).themeAnimate( $( this ).data( 'plugin-options' ) );
} );
}
};
var page_url = window.location.href;
if ( theme.WooEvents && theme.WooEvents.removeParameterFromUrl ) {
page_url = theme.WooEvents.removeParameterFromUrl( page_url, 'add-to-cart' );
}
$.post( page_url, menu_args, menu_loaded_fn );
}
}
} );
} ).apply( this, [window.theme, jQuery] );
jQuery( document ).ready( function($) {
// Lazy load Menu
if ( js_porto_vars.lazyload_menu ) {
var menu_type, $menu_obj;
if ( $( '.secondary-menu.mega-menu' ).length ) {
menu_type = 'secondary_menu';
$menu_obj = $( '.secondary-menu.mega-menu' );
menu_lazyload( $menu_obj, menu_type );
}
if ( $( '.mega-menu.main-menu:not(.scroll-wrapper):not(.secondary-menu)' ).length ) {
menu_type = 'main_menu';
$menu_obj = $( '.mega-menu.main-menu:not(.scroll-wrapper):not(.secondary-menu)' );
menu_lazyload( $menu_obj, menu_type );
}
if ( $( '.toggle-menu-wrap .sidebar-menu' ).length ) {
menu_type = 'toggle_menu';
$menu_obj = $( '.toggle-menu-wrap .sidebar-menu' );
menu_lazyload( $menu_obj, menu_type );
}
if ( $( '.main-sidebar-menu .sidebar-menu' ).length ) {
menu_type = 'sidebar_menu';
$menu_obj = $( '.main-sidebar-menu .sidebar-menu' );
$menu_obj.each( function() {
let $menu_item = $( this );
menu_lazyload( $menu_item, menu_type, $menu_item.closest( '.main-sidebar-menu' ).data( 'menu' ) );
} );
}
if ( $( '.header-side-nav .sidebar-menu' ).length ) {
menu_type = 'header_side_menu';
$menu_obj = $( '.header-side-nav .sidebar-menu' );
menu_lazyload( $menu_obj, menu_type );
}
if ( $( '#nav-panel .skeleton-body, #side-nav-panel .skeleton-body' ).length && 'pageload' == js_porto_vars.lazyload_menu ) {
theme.lazyload_menu( 1, 'mobile_menu' );
}
function menu_lazyload( $menu_item, menu_type, menu_id ) {
var porto_menu_loaded = false;
if ( 'pageload' == js_porto_vars.lazyload_menu ) {
theme.lazyload_menu( $menu_item, menu_type, menu_id );
} else if ( 'firsthover' == js_porto_vars.lazyload_menu ) {
$menu_item.one( 'mouseenter touchstart', 'li.menu-item-has-children', function() {
if ( porto_menu_loaded ) {
return true;
}
theme.lazyload_menu( $menu_item, menu_type, menu_id );
porto_menu_loaded = true;
} );
}
}
}
});
Back to Directory
File Manager