File: /var/www/html/wp-content/themes/thegem-elementor/js/thegem-product-quick-view.js
(function ($) {
$(function () {
$(document.body).on('click', '.product .quick-view-button, .product-quick-view-navigation a', function (e) {
e.preventDefault();
var $button = $(this);
$.fancybox.close();
$.fancybox.open({
type: 'ajax',
src: thegem_woo_data.ajax_url,
ajax: {
settings: {
method: 'POST',
data: {
ajax_nonce: thegem_woo_data.ajax_nonce,
action: 'thegem_product_quick_view',
product_id: $(this).data('product-id')
}
}
},
slideClass: 'woo-modal-product',
baseClass: "product-quick-view product-quick-view__wrapper",
afterShow: function (el) {
var quickViewGalleryType = $('.product-quick-view .single-product').attr("data-quick-view");
var quickViewLayoutType = $('.product-quick-view .single-product-content ').attr("data-layout");
$('.product-quick-view .gem-attribute-selector').gemWooAttributeSelector();
if (quickViewLayoutType !== 'legacy') {
el.current.$content.initProductQuickViewScripts();
}
if (quickViewGalleryType === 'legacy'){
legacyQuickViewGallery(el);
} else {
defaultQuickViewGallery(el);
}
}
}, {
spinnerTpl: '<div class="gem-fancybox-preloader"><div class="preloader-spin"></div></div>',
caption: '<div class="product-navigation-caption"></div>',
touch: false,
backFocus: false,
locked: false,
});
});
function defaultQuickViewGallery(el) {
$('.gem-combobox').combobox();
el.current.$content.buildQuickViewGallery();
el.current.$content.updateProductGalleries();
$('.variations_form', el.current.$content).each(function () {
var $form = $(this);
$form.on('reset_image show_variation', function () {
el.removeEvents();
window.setTimeout(function () {
el.addEvents();
}, 100);
});
$form.on('show_variation', function (e, variation) {
if(variation.image_id) {
var $product_content = $(this).closest('.single-product-content');
var $gallery = $product_content.find('.product-gallery').eq(0);
var $mainCarousel = $gallery.find('.product-gallery-slider');
if($gallery.length) {
var $gallery_item = $gallery.find('.product-gallery-slider .product-gallery-slider-item[data-image-id="'+variation.image_id+'"]').parent('.owl-item').index();
$mainCarousel.trigger('to.owl.carousel', [$gallery_item, 300, true]);
}
}
});
$form.wc_variation_form();
$form.on('change', '.variations select', function (event) {
var $text = $(this).closest('.combobox-wrapper').find('.combobox-text');
$text.text($('option:selected', $(this)).text());
});
});
}
function legacyQuickViewGallery(el) {
$('.gem-combobox').combobox();
el.current.$content.buildSimpleGalleries();
el.current.$content.updateSimpleGalleries();
$('.variations_form', el.current.$content).each(function () {
var $form = $(this);
$form.on('reset_image show_variation', function () {
el.removeEvents();
window.setTimeout(function () {
el.addEvents();
}, 100);
});
$form.on('show_variation', function (e, variation) {
if (variation.image && variation.image.src) {
var $g_item = $('.gem-quick-view-gallery .gem-gallery-item img[src="' + variation.image.src + '"]', el.current.$content).closest('.gem-gallery-item');
$('.gem-quick-view-gallery .gem-gallery-items-carousel', el.current.$content).trigger('slideTo', [$g_item]);
}
});
$form.wc_variation_form();
$form.on('change', '.variations select', function (event) {
var $text = $(this).closest('.combobox-wrapper').find('.combobox-text');
$text.text($('option:selected', $(this)).text());
});
});
}
});
})(jQuery);