( function( $ ) {
"use strict";
var JetEngineRegisteredStores = window.JetEngineRegisteredStores || {};
var JetEngineStores = window.JetEngineStores || {};
var JetEngine = {
currentMonth: null,
currentRequest: {},
activeCalendarDay: null,
lazyLoading: false,
addedScripts: [],
addedStyles: [],
addedPostCSS: [],
commonInit: function() {
$( document )
.on( 'click.JetEngine', '.jet-calendar-nav__link', JetEngine.switchCalendarMonth )
.on( 'click.JetEngine', '.jet-calendar-week__day-mobile-overlay', JetEngine.showCalendarEvent )
.on( 'click.JetEngine', '.jet-listing-dynamic-link__link[data-delete-link="1"]', JetEngine.showConfirmDeleteDialog )
.on( 'jet-filter-content-rendered', JetEngine.maybeReinitSlider )
.on( 'click.JetEngine', '.jet-add-to-store', JetEngine.addToStore )
.on( 'click.JetEngine', '.jet-remove-from-store', JetEngine.removeFromStore )
.on( 'click.JetEngine', '.jet-engine-listing-overlay-wrap', JetEngine.handleListingItemClick )
.on( 'jet-filter-content-rendered', JetEngine.filtersCompatibility );
$( window ).on( 'jet-popup/render-content/ajax/success', JetEngine.initStores );
JetEngine.initStores();
JetEngine.customUrlActions.init();
},
filtersCompatibility: function( event, $provider, filtersInstance, providerType ) {
if ( 'jet-engine' !== providerType ) {
return;
}
var $blocksListing = $provider.closest( '.jet-listing-grid--blocks' );
if ( $blocksListing.length ) {
JetEngine.widgetListingGrid( $blocksListing );
}
},
init: function() {
var widgets = {
'jet-listing-dynamic-field.default' : JetEngine.widgetDynamicField,
'jet-listing-grid.default': JetEngine.widgetListingGrid,
};
$.each( widgets, function( widget, callback ) {
window.elementorFrontend.hooks.addAction( 'frontend/element_ready/' + widget, callback );
});
window.elementorFrontend.hooks.addFilter(
'jet-popup/widget-extensions/popup-data',
JetEngine.prepareJetPopup
);
JetEngine.updateAddedStyles();
},
initBlocks: function( $scope ) {
$scope = $scope || $( 'body' );
var $blocks = $( '.jet-listing-grid--blocks', $scope );
if ( $blocks.length ) {
$blocks.each( function( index, el ) {
var $scope = $( this );
JetEngine.widgetListingGrid( $scope );
} );
}
},
initFrontStores: function( $scope ) {
$scope = $scope || $( 'body' );
$( '.jet-add-to-store.is-front-store', $scope ).each( function() {
var $this = $( this ),
args = $this.data( 'args' ),
store = JetEngineStores[ args.store.type ],
count = 0;
if ( ! store ) {
return;
}
if ( store.inStore( args.store.slug, '' + args.post_id ) ) {
JetEngine.switchDataStoreStatus( $this );
}
} );
$( '.jet-remove-from-store.is-front-store', $scope ).each( function() {
var $this = $( this ),
args = $this.data( 'args' ),
store = JetEngineStores[ args.store.type ],
count = 0;
if ( ! store ) {
return;
}
if ( ! store.inStore( args.store.slug, '' + args.post_id ) ) {
$this.addClass( 'is-hidden' );
} else {
$this.removeClass( 'is-hidden' );
}
} );
},
initStores: function() {
JetEngine.initFrontStores();
$.each( JetEngineRegisteredStores, function( storeSlug, storeType ) {
var store = JetEngineStores[ storeType ],
storeData = null,
count = 0;
if ( ! store ) {
return;
}
storeData = store.getStore( storeSlug );
if ( storeData && storeData.length ) {
count = storeData.length;
}
$( 'span.jet-engine-data-store-count[data-store="' + storeSlug + '"]' ).text( count );
} );
$( '.jet-listing-not-found.jet-listing-grid__items' ).each( function() {
var $this = $( this ),
nav = $this.data( 'nav' ),
isStore = $this.data( 'is-store-listing' ),
query = nav.query;
if ( query.post__in && query.post__in.length && 0 >= query.post__in.indexOf( 'is-front' ) ) {
var storeType = query.post__in[1],
storeSlug = query.post__in[2],
store = JetEngineStores[ storeType ],
posts = [],
$container = $this.closest( '.elementor-widget-container' );
if ( ! $container.length ) {
$container = $this.closest( '.jet-listing-grid--blocks' );
}
if ( ! store ) {
return;
}
posts = store.getStore( storeSlug );
if ( ! posts.length ) {
return;
}
query.post__in = posts;
JetEngine.ajaxGetListing( {
handler: 'get_listing',
container: $container,
masonry: false,
slider: false,
append: false,
query: query,
widgetSettings: nav.widget_settings,
}, function( response ) {
console.log( $container );
JetEngine.widgetListingGrid( $container );
} );
} else if ( isStore ) {
$( document ).trigger( 'jet-listing-grid-init-store', $this );
}
} );
},
removeFromStore: function( event ) {
event.preventDefault();
var $this = $( this ),
args = $this.data( 'args' );
if ( args.store.is_front ) {
var store = JetEngineStores[ args.store.type ],
count = 0;
if ( ! store ) {
return;
}
if ( ! store.inStore( args.store.slug, '' + args.post_id ) ) {
var storePosts = store.getStore( args.store.slug );
count = storePosts.length;
} else {
count = store.remove( args.store.slug, args.post_id );
}
$( '.jet-add-to-store[data-store="' + args.store.slug + '"][data-post="' + args.post_id + '"]' ).each( function() {
JetEngine.switchDataStoreStatus( $( this ), true );
} );
$( 'span.jet-engine-data-store-count[data-store="' + args.store.slug + '"]' ).text( count );
if ( args.remove_from_listing ) {
$this.closest( '.jet-listing-dynamic-post-' + args.post_id ).remove();
}
$( document ).trigger( 'jet-engine-data-stores-on-remove', args );
return;
}
$this.css( 'opacity', 0.3 );
$.ajax({
url: JetEngineSettings.ajaxurl,
type: 'POST',
dataType: 'json',
data: {
action: 'jet_engine_remove_from_store_' + args.store.slug,
store: args.store.slug,
post_id: args.post_id,
},
}).done( function( response ) {
$this.css( 'opacity', 1 );
if ( response.success ) {
$this.addClass( 'is-hidden' );
$( '.jet-add-to-store[data-store="' + args.store.slug + '"][data-post="' + args.post_id + '"]' ).each( function() {
JetEngine.switchDataStoreStatus( $( this ), true );
} );
if ( args.remove_from_listing ) {
$this.closest( '.jet-listing-grid__item[data-post="' + args.post_id + '"]' ).remove();
}
if ( response.data.fragments ) {
$.each( response.data.fragments, function( selector, value ) {
$( selector ).html( value );
} );
}
$( document ).trigger( 'jet-engine-data-stores-on-remove', args );
} else {
alert( response.data.message );
}
return response;
} ).done( function( response ) {
if ( args.remove_from_listing ) {
$this.closest( '.jet-listing-grid__item' ).remove();
}
if ( response.success ) {
$( 'span.jet-engine-data-store-count[data-store="' + args.store.slug + '"]' ).text( response.data.count );
}
} ).fail( function( jqXHR, textStatus, errorThrown ) {
$this.css( 'opacity', 1 );
alert( errorThrown );
} );
},
triggerPopup: function( popupID, isJetEngine, postID ) {
if ( ! popupID ) {
return;
}
var popupData = {
popupId: 'jet-popup-' + popupID,
};
if ( isJetEngine ) {
popupData.isJetEngine = true;
popupData.postId = postID;
}
$( window ).trigger( {
type: 'jet-popup-open-trigger',
popupData: popupData
} );
},
addToStore: function( event ) {
event.preventDefault();
var $this = $( this ),
args = $this.data( 'args' );
if ( $this.hasClass( 'in-store' ) ) {
if ( args.popup ) {
JetEngine.triggerPopup( args.popup, args.isJetEngine, args.post_id );
} else {
window.location = $this.attr( 'href' );
}
return;
}
if ( args.store.is_front ) {
var store = JetEngineStores[ args.store.type ],
count = 0;
if ( ! store ) {
return;
}
Loading ...