').append(prev.clone()).html();
}
if (typeof loopBtns[loop + 1] != 'undefined') {
next = loopBtns.eq(loop + 1).addClass('quick-view-next');
next = $('
').append(next.clone()).html();
}
woodmartThemeModule.quickViewLoad(productId, btn, prev, next);
});
};
woodmartThemeModule.quickViewCarousel = function () {
$('.product-quick-view .woocommerce-product-gallery__wrapper').trigger('destroy.owl.carousel');
$('.product-quick-view .woocommerce-product-gallery__wrapper').addClass('owl-carousel').owlCarousel({
rtl: $('body').hasClass('rtl'),
items: 1,
dots: false,
nav: true,
navText: false
});
};
woodmartThemeModule.quickViewLoad = function (id, btn, prev, next) {
var data = {
id: id,
action: "woodmart_quick_view",
};
var initPopup = function (data) {
$.magnificPopup.open({
items: {
src: '', // can be a HTML string, jQuery object, or CSS selector
type: 'inline'
},
tClose: woodmart_settings.close,
tLoading: woodmart_settings.loading,
removalDelay: 500, //delay removal by X to allow out-animation
callbacks: {
beforeOpen: function () {
this.st.mainClass = woodmartTheme.popupEffect + ' quick-view-wrapper';
},
open: function () {
$('.variations_form').each(function () {
$(this).wc_variation_form().find('.variations select:eq(0)').change();
});
$('.variations_form').trigger('wc_variation_form');
$('body').trigger('woodmart-quick-view-displayed');
woodmartThemeModule.swatchesVariations();
woodmartThemeModule.btnsToolTips();
setTimeout(function () {
woodmartThemeModule.nanoScroller();
}, 300);
woodmartThemeModule.quickViewCarousel();
}
},
});
}
$.ajax({
url: woodmart_settings.ajaxurl,
data: data,
method: 'get',
success: function (data) {
if (woodmart_settings.quickview_in_popup_fix) {
$.magnificPopup.close();
setTimeout(function () {
initPopup(data);
}, 500);
} else {
initPopup(data);
}
},
complete: function () {
btn.removeClass('loading');
},
error: function () {
},
});
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Swatches variations
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.swatchesVariations = function () {
var $variation_forms = $('.variations_form');
var variationGalleryReplace = false;
var swathesSelected = false;
// Firefox mobile fix
$('.variations_form .label').on('click', function (e) {
if ($(this).siblings('.value').hasClass('with-swatches')) {
e.preventDefault();
}
});
$variation_forms.each(function () {
var $variation_form = $(this);
if ($variation_form.data('swatches')) return;
$variation_form.data('swatches', true);
// If AJX
if (!$variation_form.data('product_variations')) {
$variation_form.find('.swatches-select').find('> div').addClass('swatch-enabled');
}
if ($('.swatches-select > div').hasClass('active-swatch')) {
$variation_form.addClass('variation-swatch-selected');
}
$variation_form.on('click', '.swatches-select > div', function () {
var value = $(this).data('value');
var id = $(this).parent().data('id');
var title = $(this).data('title');
// $variation_form.trigger('check_variations', ['attribute_' + id, true]);
resetSwatches($variation_form);
//$variation_form.find('select#' + id).val('').trigger('change');
//$variation_form.trigger('check_variations');
if ($(this).hasClass('active-swatch')) {
// Removed since 2.9 version as not necessary
// $variation_form.find( '.variations select' ).val( '' ).change();
// $variation_form.trigger( 'reset_data' );
// $(this).removeClass('active-swatch')
return;
}
if ($(this).hasClass('swatch-disabled')) return;
$variation_form.find('select#' + id).val(value).trigger('change');
$(this).parent().find('.active-swatch').removeClass('active-swatch');
$(this).addClass('active-swatch');
resetSwatches($variation_form);
if ((woodmart_settings.swatches_labels_name === 'yes' && $(window).width() >= 769) || $(window).width() <= 768) {
//Labels.
$(this).parents('tr').find('.wd-attr-selected').html(title);
}
})
// On clicking the reset variation button
.on('click', '.reset_variations', function (event) {
$variation_form.find('.active-swatch').removeClass('active-swatch');
if ((woodmart_settings.swatches_labels_name === 'yes' && $(window).width() >= 769) || $(window).width() <= 768) {
// Labels.
$variation_form.find('.wd-attr-selected').html('');
}
})
.on('reset_data', function () {
var all_attributes_chosen = true;
var some_attributes_chosen = false;
$variation_form.find('.variations select').each(function () {
var attribute_name = $(this).data('attribute_name') || $(this).attr('name');
var value = $(this).val() || '';
if (value.length === 0) {
all_attributes_chosen = false;
} else {
some_attributes_chosen = true;
}
});
if (all_attributes_chosen) {
$(this).parent().find('.active-swatch').removeClass('active-swatch');
}
$variation_form.removeClass('variation-swatch-selected');
var $mainOwl = $('.woocommerce-product-gallery__wrapper.owl-carousel');
resetSwatches($variation_form);
replaceMainGallery('default', $variation_form);
if (!$mainOwl.hasClass('owl-carousel')) return;
if (woodmart_settings.product_slider_auto_height == 'yes') {
if (!isQuickView() && isVariationGallery('default', $variation_form) && variationGalleryReplace) {
$mainOwl.trigger('destroy.owl.carousel');
}
$('.product-images').imagesLoaded(function () {
$mainOwl = $mainOwl.owlCarousel(woodmartTheme.mainCarouselArg);
$mainOwl.trigger('refresh.owl.carousel');
});
} else {
$mainOwl = $mainOwl.owlCarousel(woodmartTheme.mainCarouselArg);
$mainOwl.trigger('refresh.owl.carousel');
}
var slide_go_to = woodmart_settings.product_gallery.thumbs_slider.position == 'centered' ? woodmart_settings.centered_gallery_start : 0;
if (isQuickView()) slide_go_to = 0;
$mainOwl.trigger('to.owl.carousel', slide_go_to);
})
// Update first tumbnail
.on('reset_image', function () {
var $thumb = $('.thumbnails .product-image-thumbnail img').first();
if (!isQuickView() && !isQuickShop($variation_form)) {
$thumb.wc_reset_variation_attr('src');
}
})
.on('show_variation', function (e, variation, purchasable) {
if (((woodmart_settings.swatches_labels_name === 'yes' && $(window).width() >= 769) || $(window).width() <= 768) && ! swathesSelected) {
// Labels.
$variation_form.find('.active-swatch').each(function () {
var title = $(this).data('title');
$(this).parents('tr').find('.wd-attr-selected').html(title);
});
swathesSelected = true;
}
if (!variation.image.src) {
return;
}
// See if the gallery has an image with the same original src as the image we want to switch to.
var galleryHasImage = $variation_form.parents('.single-product-content').find('.thumbnails .product-image-thumbnail img[data-o_src="' + variation.image.thumb_src + '"]').length > 0;
var $firstThumb = $variation_form.parents('.single-product-content').find('.thumbnails .product-image-thumbnail img').first();
// If the gallery has the image, reset the images. We'll scroll to the correct one.
if (galleryHasImage) {
$firstThumb.wc_reset_variation_attr('src');
}
if (!isQuickShop($variation_form) && !replaceMainGallery(variation.variation_id, $variation_form)) {
if ($firstThumb.attr('src') != variation.image.thumb_src) {
$firstThumb.wc_set_variation_attr('src', variation.image.src);
}
woodmartThemeModule.initZoom();
}
$variation_form.addClass('variation-swatch-selected');
if (!isQuickShop($variation_form) && !isQuickView()) {
scrollToTop();
}
var $mainOwl = $('.woocommerce-product-gallery__wrapper.owl-carousel');
if (!$mainOwl.hasClass('owl-carousel')) return;
if (woodmart_settings.product_slider_auto_height == 'yes') {
if (!isQuickView() && isVariationGallery(variation.variation_id, $variation_form) && variationGalleryReplace) {
$mainOwl.trigger('destroy.owl.carousel');
}
$('.product-images').imagesLoaded(function () {
$mainOwl = $mainOwl.owlCarousel(woodmartTheme.mainCarouselArg);
$mainOwl.trigger('refresh.owl.carousel');
});
} else {
$mainOwl = $mainOwl.owlCarousel(woodmartTheme.mainCarouselArg);
$mainOwl.trigger('refresh.owl.carousel');
}
var $thumbs = $('.images .thumbnails');
$mainOwl.trigger('to.owl.carousel', 0);
if ($thumbs.hasClass('owl-carousel')) {
$thumbs.owlCarousel().trigger('to.owl.carousel', 0);
$thumbs.find('.active-thumb').removeClass('active-thumb');
$thumbs.find('.product-image-thumbnail').eq(0).addClass('active-thumb');
} else if ($thumbs.hasClass('slick-slider')) {
$thumbs.slick('slickGoTo', 0);
if (!$thumbs.find('.product-image-thumbnail').eq(0).hasClass('active-thumb')) {
$thumbs.find('.active-thumb').removeClass('active-thumb');
$thumbs.find('.product-image-thumbnail').eq(0).addClass('active-thumb');
}
}
});
})
var resetSwatches = function ($variation_form) {
// If using AJAX
if (!$variation_form.data('product_variations')) return;
$variation_form.find('.variations select').each(function () {
var select = $(this);
var swatch = select.parent().find('.swatches-select');
var options = select.html();
// var options = select.data('attribute_html');
options = $(options);
swatch.find('> div').removeClass('swatch-enabled').addClass('swatch-disabled');
options.each(function (el) {
var value = $(this).val();
if ($(this).hasClass('enabled')) {
// if( ! el.disabled ) {
swatch.find('div[data-value="' + value + '"]').removeClass('swatch-disabled').addClass('swatch-enabled');
} else {
swatch.find('div[data-value="' + value + '"]').addClass('swatch-disabled').removeClass('swatch-enabled');
}
});
});
};
var isQuickView = function () {
return $('.single-product-content').hasClass('product-quick-view');
};
var isQuickShop = function ($form) {
return $form.parent().hasClass('quick-shop-form');
};
var isVariationGallery = function (key, $variationForm) {
if ( 'old' === woodmart_settings.variation_gallery_storage_method ) {
return isVariationGalleryOld(key);
} else {
return isVariationGalleryNew(key, $variationForm);
}
};
var isVariationGalleryOld = function (key) {
if (typeof woodmart_variation_gallery_data === 'undefined' && typeof woodmart_qv_variation_gallery_data === 'undefined' ) {
return;
}
var variation_gallery_data = isQuickView() ? woodmart_qv_variation_gallery_data : woodmart_variation_gallery_data;
return typeof variation_gallery_data !== 'undefined' && variation_gallery_data && variation_gallery_data[key];
};
var isVariationGalleryNew = function (key, $variationForm) {
var data = getAdditionalVariationsImagesData($variationForm);
return typeof data !== 'undefined' && data && data[key] && data[key].length > 1;
};
var scrollToTop = function () {
if ((woodmart_settings.swatches_scroll_top_desktop == 1 && $(window).width() >= 1024) || (woodmart_settings.swatches_scroll_top_mobile == 1 && $(window).width() <= 1024)) {
var $page = $('html, body');
$page.stop(true);
$(window).on('mousedown wheel DOMMouseScroll mousewheel keyup touchmove', function () {
$page.stop(true);
});
$page.animate({
scrollTop: $('.product-image-summary').offset().top - 150
}, 800);
$('.woodmart-swatch').tooltip('hide');
}
};
var getAdditionalVariationsImagesData = function($variationForm) {
var rawData = $variationForm.data('product_variations');
var data = [];
if (!rawData) {
return data;
}
rawData.forEach(function(value) {
data[value.variation_id] = value.additional_variation_images;
data['default'] = value.additional_variation_images_default;
});
return data;
};
var replaceMainGallery = function (key, $variationForm) {
if ( 'old' === woodmart_settings.variation_gallery_storage_method ) {
if (!isVariationGallery(key, $variationForm) || isQuickShop($variationForm) || ('default' === key && !variationGalleryReplace)) {
return false;
}
replaceMainGalleryOld(key, $variationForm);
} else {
if (!isVariationGallery(key, $variationForm) || isQuickShop($variationForm) || ('default' === key && !variationGalleryReplace)) {
return false;
}
var data = getAdditionalVariationsImagesData($variationForm);
replaceMainGalleryNew(data[key], $variationForm);
}
woodmartThemeModule.productImagesGallery();
woodmartThemeModule.quickViewCarousel();
$(window).trigger('main_gallery_replaced');
$('.woocommerce-product-gallery__image').trigger('zoom.destroy');
if (!isQuickView()) {
woodmartThemeModule.initZoom();
}
if ('default' === key) {
variationGalleryReplace = false;
} else {
variationGalleryReplace = true;
}
$(window).resize();
return true;
};
var replaceMainGalleryOld = function (key, $variationForm) {
var variation_gallery_data = isQuickView() ? woodmart_qv_variation_gallery_data : woodmart_variation_gallery_data;
var imagesData = variation_gallery_data[key];
var $mainGallery = $variationForm.parents('.single-product-content').find('.woocommerce-product-gallery__wrapper');
$mainGallery.empty();
for (var index = 0; index < imagesData.length; index++) {
var $html = '
';
$mainGallery.append($html);
}
};
var replaceMainGalleryNew = function(imagesData, $variationForm) {
var $mainGallery = $variationForm.parents('.single-product-content').find('.woocommerce-product-gallery__wrapper');
$mainGallery.empty();
for (var key in imagesData) {
var $html = '
';
$mainGallery.append($html);
}
};
};
woodmartThemeModule.swatchesOnGrid = function () {
$('body').on('click', '.swatch-on-grid', function () {
var src, srcset, image_sizes;
var imageSrc = $(this).data('image-src'),
imageSrcset = $(this).data('image-srcset'),
imageSizes = $(this).data('image-sizes');
if (typeof imageSrc == 'undefined' || '' === imageSrc) {
return;
}
var product = $(this).parents('.product-grid-item'),
image = product.find('.product-image-link > img'),
srcOrig = image.data('original-src'),
srcsetOrig = image.data('original-srcset'),
sizesOrig = image.data('original-sizes');
if (typeof srcOrig == 'undefined') {
image.data('original-src', image.attr('src'));
}
if (typeof srcsetOrig == 'undefined') {
image.data('original-srcset', image.attr('srcset'));
}
if (typeof sizesOrig == 'undefined') {
image.data('original-sizes', image.attr('sizes'));
}
if ($(this).hasClass('active-swatch')) {
src = srcOrig;
srcset = srcsetOrig;
image_sizes = sizesOrig;
$(this).removeClass('active-swatch');
product.removeClass('product-swatched');
} else {
$(this).parent().find('.active-swatch').removeClass('active-swatch');
$(this).addClass('active-swatch');
product.addClass('product-swatched');
src = imageSrc;
srcset = imageSrcset;
image_sizes = imageSizes;
}
if (image.attr('src') == src) return;
product.addClass('wd-loading-image');
image.attr('src', src).attr('srcset', srcset).attr('image_sizes', image_sizes).one('load', function () {
product.removeClass('wd-loading-image');
});
});
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Products tabs element AJAX loading
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.productsTabs = function () {
var process = false;
$('.woodmart-products-tabs').each(function () {
var $this = $(this),
$inner = $this.find('.woodmart-tab-content'),
cache = [];
if ($inner.find('.owl-carousel').length < 1) {
cache[0] = {
html: $inner.html()
};
}
$this.find('.products-tabs-title li').on('click', function (e) {
e.preventDefault();
var $this = $(this),
atts = $this.data('atts'),
index = $this.index();
if (process || $this.hasClass('active-tab-title')) return; process = true;
loadTab(atts, index, $inner, $this, cache, function (data) {
if (data.html) {
$inner.html(data.html);
$(document).trigger('wood-images-loaded');
$(document).trigger('wood-products-tabs-loaded');
woodmartThemeModule.productHover();
woodmartThemeModule.btnsToolTips();
woodmartThemeModule.shopMasonry();
woodmartThemeModule.countDownTimer();
woodmartThemeModule.productLoaderPosition();
woodmartThemeModule.productsLoadMore();
woodmartThemeModule.productMoreDescription();
woodmartThemeModule.gridQuantity();
}
});
});
var $nav = $this.find('.tabs-navigation-wrapper'),
$subList = $nav.find('ul'),
time = 300;
$nav.on('click', '.open-title-menu', function () {
var $btn = $(this);
if ($subList.hasClass('list-shown')) {
$btn.removeClass('toggle-active');
$subList.stop().slideUp(time).removeClass('list-shown');
} else {
$btn.addClass('toggle-active');
$subList.addClass('list-shown');
setTimeout(function () {
$('body').one('click', function (e) {
var target = e.target;
if (!$(target).is('.tabs-navigation-wrapper') && !$(target).parents().is('.tabs-navigation-wrapper')) {
$btn.removeClass('toggle-active');
$subList.removeClass('list-shown');
return false;
}
});
}, 10);
}
})
.on('click', 'li', function () {
var $btn = $nav.find('.open-title-menu'),
text = $(this).text();
if ($subList.hasClass('list-shown')) {
$btn.removeClass('toggle-active').text(text);
$subList.removeClass('list-shown');
}
});
});
var loadTab = function (atts, index, holder, btn, cache, callback) {
btn.parent().find('.active-tab-title').removeClass('active-tab-title');
btn.addClass('active-tab-title')
if (cache[index]) {
holder.addClass('loading');
setTimeout(function () {
callback(cache[index]);
holder.removeClass('loading');
process = false;
}, 300);
return;
}
holder.addClass('loading').parent().addClass('element-loading');
btn.addClass('loading');
$.ajax({
url: woodmart_settings.ajaxurl,
data: {
atts: atts,
action: 'woodmart_get_products_tab_shortcode',
},
dataType: 'json',
method: 'POST',
success: function (data) {
cache[index] = data;
callback(data);
},
error: function (data) {
console.log('ajax error');
},
complete: function () {
holder.removeClass('loading').parent().removeClass('element-loading');
btn.removeClass('loading');
process = false;
woodmartThemeModule.compare();
},
});
};
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Load more button for products shortcode
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.productsLoadMore = function () {
var process = false,
intervalID;
$('.woodmart-products-element').each(function () {
var $this = $(this),
cache = [],
inner = $this.find('.woodmart-products-holder'),
atts = inner.data('atts');
if (!inner.hasClass('pagination-arrows')) return;
cache[1] = {
items: inner.html(),
status: 'have-posts'
};
$this.on('recalc', function () {
calc();
});
$(window).resize(function () {
calc();
});
var calc = function () {
var height = inner.outerHeight();
if (atts.elementor){
height = height - parseInt(atts.spacing);
}
$this.stop().css({ minHeight: height });
};
// sticky buttons
var body = $('body'),
btnWrap = $this.find('.products-footer'),
btnLeft = btnWrap.find('.woodmart-products-load-prev'),
btnRight = btnWrap.find('.woodmart-products-load-next'),
loadWrapp = $this.find('.woodmart-products-loader'),
scrollTop,
holderTop,
btnLeftOffset,
btnRightOffset,
holderBottom,
holderHeight,
holderWidth,
btnsHeight,
offsetArrow = 50,
offset,
windowWidth;
if (body.hasClass('rtl')) {
btnLeft = btnRight;
btnRight = btnWrap.find('.woodmart-products-load-prev');
}
$(window).scroll(function () {
buttonsPos();
});
setTimeout(function () {
buttonsPos();
}, 500);
function buttonsPos() {
offset = $(window).height() / 2;
windowWidth = $(window).outerWidth(true);
holderWidth = $this.outerWidth(true);
scrollTop = $(window).scrollTop();
holderTop = $this.offset().top - offset;
btnLeftOffset = $this.offset().left - offsetArrow;
btnRightOffset = holderWidth + $this.offset().left + offsetArrow - btnRight.outerWidth();
btnsHeight = btnLeft.outerHeight();
holderHeight = $this.height() - btnsHeight;
holderBottom = holderTop + holderHeight;
if ($(window).width() <= 1024) {
btnLeftOffset = btnLeftOffset + 35;
btnRightOffset = btnRightOffset - 35;
}
btnLeft.css({
'left': btnLeftOffset + 'px'
});
btnRight.css({
'left': btnRightOffset + 'px'
});
if (scrollTop < holderTop || scrollTop > holderBottom) {
btnWrap.removeClass('show-arrow');
loadWrapp.addClass('hidden-loader');
} else {
btnWrap.addClass('show-arrow');
loadWrapp.removeClass('hidden-loader');
}
};
$this.find('.woodmart-products-load-prev, .woodmart-products-load-next').off('click').on('click', function (e) {
e.preventDefault();
if (process || $(this).hasClass('disabled')) return; process = true;
clearInterval(intervalID);
var $this = $(this),
holder = $this.parent().parent().prev(),
next = $this.parent().find('.woodmart-products-load-next'),
prev = $this.parent().find('.woodmart-products-load-prev'),
atts = holder.data('atts'),
action = 'woodmart_get_products_shortcode',
ajaxurl = woodmart_settings.ajaxurl,
dataType = 'json',
method = 'POST',
paged = holder.attr('data-paged');
paged++;
if ($this.hasClass('woodmart-products-load-prev')) {
if (paged < 2) return;
paged = paged - 2;
}
loadProducts('arrows', atts, ajaxurl, action, dataType, method, paged, holder, $this, cache, function (data) {
var isBorderedGrid = holder.hasClass('products-bordered-grid');
if (!isBorderedGrid) {
holder.addClass('woodmart-animated-products');
}
if (data.items) {
holder.html(data.items).attr('data-paged', paged);
holder.imagesLoaded().progress(function () {
holder.parent().trigger('recalc');
});
$(document).trigger('wood-images-loaded');
woodmartThemeModule.productHover();
woodmartThemeModule.btnsToolTips();
woodmartThemeModule.productMoreDescription();
woodmartThemeModule.gridQuantity();
}
if ($(window).width() < 768) {
$('html, body').stop().animate({
scrollTop: holder.offset().top - 150
}, 400);
}
if (!isBorderedGrid) {
var iter = 0;
intervalID = setInterval(function () {
holder.find('.product-grid-item').eq(iter).addClass('woodmart-animated');
iter++;
}, 100);
}
if (paged > 1) {
prev.removeClass('disabled');
} else {
prev.addClass('disabled');
}
if (data.status == 'no-more-posts') {
next.addClass('disabled');
} else {
next.removeClass('disabled');
}
});
});
});
woodmartThemeModule.clickOnScrollButton(woodmartTheme.shopLoadMoreBtn, false, woodmart_settings.infinit_scroll_offset);
$(document).off('click', '.woodmart-products-load-more').on('click', '.woodmart-products-load-more', function (e) {
e.preventDefault();
if (process) return; process = true;
var $this = $(this),
holder = $this.parent().siblings('.woodmart-products-holder'),
source = holder.data('source'),
action = 'woodmart_get_products_' + source,
ajaxurl = woodmart_settings.ajaxurl,
dataType = 'json',
method = 'POST',
atts = holder.data('atts'),
paged = holder.data('paged');
paged++;
if (source == 'main_loop') {
ajaxurl = $(this).attr('href');
method = 'GET';
}
loadProducts('load-more', atts, ajaxurl, action, dataType, method, paged, holder, $this, [], function (data) {
if (data.items) {
if (holder.hasClass('grid-masonry')) {
isotopeAppend(holder, data.items);
} else {
holder.append(data.items);
}
holder.imagesLoaded().progress(function () {
woodmartThemeModule.clickOnScrollButton(woodmartTheme.shopLoadMoreBtn, true, woodmart_settings.infinit_scroll_offset);
});
$(document).trigger('wood-images-loaded');
holder.data('paged', paged);
woodmartThemeModule.productHover();
woodmartThemeModule.btnsToolTips();
woodmartThemeModule.productMoreDescription();
woodmartThemeModule.gridQuantity();
}
if (source == 'main_loop') {
$this.attr('href', data.nextPage);
if (data.status == 'no-more-posts') {
$this.hide().remove();
}
}
if (data.status == 'no-more-posts') {
$this.hide();
}
});
});
var loadProducts = function (btnType, atts, ajaxurl, action, dataType, method, paged, holder, btn, cache, callback) {
var data = {
atts: atts,
paged: paged,
action: action,
woo_ajax: 1,
};
if (cache[paged]) {
holder.addClass('loading');
setTimeout(function () {
callback(cache[paged]);
holder.removeClass('loading');
process = false;
}, 300);
return;
}
if (btnType == 'arrows') holder.addClass('loading').parent().addClass('element-loading');
btn.addClass('loading');
if (action == 'woodmart_get_products_main_loop') {
var loop = holder.find('.product').last().data('loop');
data = {
loop: loop,
woo_ajax: 1
};
}
$.ajax({
url: ajaxurl,
data: data,
dataType: dataType,
method: method,
success: function (data) {
cache[paged] = data;
callback(data);
},
error: function (data) {
console.log('ajax error');
},
complete: function () {
if (btnType == 'arrows') holder.removeClass('loading').parent().removeClass('element-loading');
btn.removeClass('loading');
process = false;
woodmartThemeModule.compare();
woodmartThemeModule.productHover();
woodmartThemeModule.countDownTimer();
woodmartThemeModule.productMoreDescription();
woodmartThemeModule.gridQuantity();
},
});
};
var isotopeAppend = function (el, items) {
// initialize Masonry after all images have loaded
var items = $(items);
el.append(items).isotope('appended', items);
el.imagesLoaded().progress(function () {
el.isotope('layout');
});
};
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Compare button
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.compare = function () {
var body = $("body"),
button = $("a.compare");
body.on("click", "a.compare", function () {
$(this).addClass("loading");
});
body.on("yith_woocompare_open_popup", function () {
button.removeClass("loading");
body.addClass("compare-opened");
});
body.on('click', '#cboxClose, #cboxOverlay', function () {
body.removeClass("compare-opened");
});
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* WoodMart compare functions
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.woodmartCompare = function () {
var cookiesName = 'woodmart_compare_list';
if (woodmart_settings.is_multisite) {
cookiesName += '_' + woodmart_settings.current_blog_id;
}
var $body = $("body"),
$widget = $('.woodmart-compare-info-widget'),
compareCookie = Cookies.get(cookiesName);
if ($widget.length > 0 && 'undefined' !== typeof compareCookie) {
try {
var ids = JSON.parse(compareCookie);
$widget.find('.compare-count').text(ids.length);
} catch (e) {
console.log('cant parse cookies json');
}
}
// Add to compare action
$body.on('click', '.woodmart-compare-btn a', function (e) {
var $this = $(this),
id = $this.data('id'),
addedText = $this.data('added-text');
if ($this.hasClass('added')) return true;
e.preventDefault();
$this.addClass('loading');
jQuery.ajax({
url: woodmart_settings.ajaxurl,
data: {
action: 'woodmart_add_to_compare',
id: id,
},
dataType: 'json',
method: 'GET',
success: function (response) {
if (response.table) {
updateCompare(response);
$(document).trigger('added_to_compare');
} else {
console.log('something wrong loading compare data ', response);
}
},
error: function (data) {
console.log('We cant add to compare. Something wrong with AJAX response. Probably some PHP conflict.');
},
complete: function () {
$this.removeClass('loading').addClass('added');
if ($this.find('span').length > 0) {
$this.find('span').text(addedText);
} else {
$this.text(addedText);
}
},
});
});
// Remove from compare action
$body.on('click', '.woodmart-compare-remove', function (e) {
e.preventDefault();
var $this = $(this),
id = $this.data('id');
$this.addClass('loading');
jQuery.ajax({
url: woodmart_settings.ajaxurl,
data: {
action: 'woodmart_remove_from_compare',
id: id,
},
dataType: 'json',
method: 'GET',
success: function (response) {
if (response.table) {
updateCompare(response);
} else {
console.log('something wrong loading compare data ', response);
}
},
error: function (data) {
console.log('We cant remove product compare. Something wrong with AJAX response. Probably some PHP conflict.');
},
complete: function () {
$this.addClass('loading');
},
});
});
// Elements update after ajax
function updateCompare(data) {
if ($widget.length > 0) {
$widget.find('.compare-count').text(data.count);
}
if ($('.woodmart-compare-table').length > 0) {
$('.woodmart-compare-table').replaceWith(data.table);
}
}
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Add class in wishlist
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.wishList = function () {
var body = $("body");
body.on("click", ".add_to_wishlist", function () {
$(this).parent().addClass("feid-in");
});
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Product 360 button
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.product360Button = function () {
$('.product-360-button a').magnificPopup({
type: 'inline',
mainClass: 'mfp-fade',
// removalDelay: 500, //delay removal by X to allow out-animation
// callbacks: {
// beforeOpen: function() {
// this.st.mainClass = woodmartTheme.popupEffect;
// }
// },
preloader: false,
tClose: woodmart_settings.close,
tLoading: woodmart_settings.loading,
fixedContentPos: false,
callbacks: {
open: function () {
$(window).resize()
},
},
});
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Product video button
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.productVideo = function () {
$('.product-video-button a').magnificPopup({
tClose: woodmart_settings.close,
tLoading: woodmart_settings.loading,
type: 'iframe',
iframe: {
patterns: {
youtube: {
index: 'youtube.com/',
id: 'v=',
src: '//www.youtube.com/embed/%id%?rel=0&autoplay=1'
}
}
},
preloader: false,
fixedContentPos: false
});
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Login tabs for my account page
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.loginTabs = function () {
var tabs = $('.woodmart-register-tabs'),
btn = tabs.find('.woodmart-switch-to-register'),
title = $('.col-register-text h2'),
login = tabs.find('.col-login'),
loginText = tabs.find('.login-info'),
register = tabs.find('.col-register'),
classOpened = 'active-register',
loginLabel = btn.data('login'),
registerLabel = btn.data('register'),
loginTitleLabel = btn.data('login-title'),
registerTitleLabel = btn.data('reg-title');
btn.on('click', function (e) {
e.preventDefault();
if (isShown()) {
hideRegister();
} else {
showRegister();
}
var scrollTo = $('.main-page-wrapper').offset().top - 100;
if ($(window).width() < 768) {
$('html, body').stop().animate({
scrollTop: tabs.offset().top - 90
}, 400);
}
});
var showRegister = function () {
tabs.addClass(classOpened);
btn.text(loginLabel);
if (loginText.length > 0) {
title.text(loginTitleLabel);
}
};
var hideRegister = function () {
tabs.removeClass(classOpened);
btn.text(registerLabel);
if (loginText.length > 0) {
title.text(registerTitleLabel);
}
};
var isShown = function () {
return tabs.hasClass(classOpened);
};
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Header Categories menu for mobile
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.headerCategoriesMenu = function () {
if ($(window).width() > 1024) return;
var categories = $('.header-categories-nav'),
catsUl = categories.find('.categories-menu-dropdown'),
subCategories = categories.find('.menu-item-has-children'),
button = categories.find('.menu-opener'),
time = 200,
iconDropdown = '
';
subCategories.find('> a').before(iconDropdown);
catsUl.on('click', '.drop-category', function () {
var sublist = $(this).parent().find('> .sub-menu-dropdown, >.sub-sub-menu');
if (sublist.hasClass('child-open')) {
$(this).removeClass("act-icon");
sublist.slideUp(time).removeClass('child-open');
} else {
$(this).addClass("act-icon");
sublist.slideDown(time).addClass('child-open');
}
});
categories.on('click', '.menu-opener', function (e) {
e.preventDefault();
if (isOpened()) {
closeCats();
} else {
//setTimeout(function() {
openCats();
//}, 50);
}
});
catsUl.on('click', 'a', function (e) {
closeCats();
catsUl.stop().attr('style', '');
});
var isOpened = function () {
return catsUl.hasClass('categories-opened');
};
var openCats = function () {
catsUl.addClass('categories-opened').stop().slideDown(time);
button.addClass('button-open');
};
var closeCats = function () {
catsUl.removeClass('categories-opened').stop().slideUp(time);
button.removeClass('button-open');
};
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Categories menu for mobile
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.categoriesMenu = function () {
if ($(window).width() > 1024) return;
var categories = $('.woodmart-product-categories'),
subCategories = categories.find('li > ul'),
button = $('.woodmart-show-categories'),
time = 200;
//this.categoriesMenuBtns();
$('body').on('click', '.icon-drop-category', function (e) {
e.preventDefault();
if ($(this).closest('.has-sub').find('> ul').hasClass('child-open')) {
$(this).removeClass("woodmart-act-icon").closest('.has-sub').find('> ul').slideUp(time).removeClass('child-open');
} else {
$(this).addClass("woodmart-act-icon").closest('.has-sub').find('> ul').slideDown(time).addClass('child-open');
}
});
$('body').on('click', '.woodmart-show-categories', function (e) {
e.preventDefault();
if (isOpened()) {
closeCats();
} else {
//setTimeout(function() {
openCats();
//}, 50);
}
});
$('body').on('click', '.woodmart-product-categories a', function (e) {
if (!$(e.target).hasClass('icon-drop-category')) {
closeCats();
categories.stop().attr('style', '');
}
});
var isOpened = function () {
return $('.woodmart-product-categories').hasClass('categories-opened');
};
var openCats = function () {
$('.woodmart-product-categories').addClass('categories-opened').stop().slideDown(time);
$('.woodmart-show-categories').addClass('button-open');
};
var closeCats = function () {
$('.woodmart-product-categories').removeClass('categories-opened').stop().slideUp(time);
$('.woodmart-show-categories').removeClass('button-open');
};
};
woodmartThemeModule.categoriesMenuBtns = function () {
if ($(window).width() > 1024) return;
var categories = $('.woodmart-product-categories'),
subCategories = categories.find('li > ul'),
iconDropdown = '
';
categories.addClass('responsive-cateogires');
subCategories.parent().addClass('has-sub').find('> .category-nav-link').prepend(iconDropdown);
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Filters area
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.filtersArea = function () {
var filters = $('.filters-area'),
btn = $('.open-filters'),
time = 200;
$('body').on('click', '.open-filters', function (e) {
e.preventDefault();
if (isOpened()) {
closeFilters();
} else {
woodmartThemeModule.openFilters(time);
setTimeout(function () {
woodmartThemeModule.shopLoader();
}, time);
}
});
if (woodmart_settings.shop_filters_close == 'no') {
$('body').on('click', woodmartTheme.ajaxLinks, function () {
if (isOpened()) {
closeFilters();
}
});
}
var isOpened = function () {
filters = $('.filters-area')
return filters.hasClass('filters-opened');
};
var closeFilters = function () {
filters = $('.filters-area')
filters.removeClass('filters-opened');
filters.stop().slideUp(time);
$('.open-filters').removeClass('btn-opened');
};
};
woodmartThemeModule.openFilters = function (time) {
var filters = $('.filters-area')
filters.stop().slideDown(time);
$('.open-filters').addClass('btn-opened');
setTimeout(function () {
filters.addClass('filters-opened');
$('body').removeClass('body-filters-opened');
woodmartThemeModule.nanoScroller();
$(document).trigger('wood-images-loaded');
}, time);
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Init shop page JS functions
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.shopPageInit = function () {
woodmartThemeModule.shopMasonry();
woodmartThemeModule.ajaxSearch();
woodmartThemeModule.productHover();
woodmartThemeModule.btnsToolTips();
woodmartThemeModule.compare();
woodmartThemeModule.filterDropdowns();
woodmartThemeModule.sortByWidget();
woodmartThemeModule.categoriesMenuBtns();
woodmartThemeModule.categoriesAccordion();
woodmartThemeModule.woocommercePriceSlider();
woodmartThemeModule.countDownTimer();
woodmartThemeModule.nanoScroller();
woodmartThemeModule.shopLoader();
woodmartThemeModule.stickySidebarBtn();
woodmartThemeModule.productFilters();
woodmartThemeModule.productMoreDescription();
woodmartThemeModule.gridQuantity();
woodmartThemeModule.swatchesLimit();
woodmartThemeModule.categoriesDropdowns();
woodmartThemeModule.clickOnScrollButton(woodmartTheme.shopLoadMoreBtn, false, woodmart_settings.infinit_scroll_offset);
// Bootstrap tooltips reset
$('body > .tooltip').remove();
$(document.body).on('updated_wc_div', function () {
$(document).trigger('wood-images-loaded');
});
$(document).trigger('resize.vcRowBehaviour');
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Ajax filters
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.ajaxFilters = function () {
if (!$('body').hasClass('woodmart-ajax-shop-on') || typeof ($.fn.pjax) == 'undefined' || $('body').hasClass('single-product')) {
return;
}
var that = this,
filtersState = false,
products = $('.products');
$('body').on('click', '.post-type-archive-product .products-footer .woocommerce-pagination a', function (e) {
scrollToTop(true);
});
$(document).pjax(woodmartTheme.ajaxLinks, '.main-page-wrapper', {
timeout: woodmart_settings.pjax_timeout,
scrollTo: false
});
if (woodmart_settings.price_filter_action == 'click') {
$(document).on('click', '.widget_price_filter form .button', function () {
var form = $('.widget_price_filter form');
$.pjax({
container: '.main-page-wrapper',
timeout: woodmart_settings.pjax_timeout,
url: form.attr('action'),
data: form.serialize(),
scrollTo: false
});
return false;
});
} else if (woodmart_settings.price_filter_action == 'submit') {
$(document).on('submit', '.widget_price_filter form', function (event) {
var container = $('.main-page-wrapper');
$.pjax.submit(event, container);
});
}
$(document).on('pjax:error', function (xhr, textStatus, error, options) {
console.log('pjax error ' + error);
});
$(document).on('pjax:start', function (xhr, options) {
$('.site-content').removeClass('ajax-loaded');
$('.site-content').addClass('ajax-loading');
woodmartThemeModule.hideShopSidebar();
});
$(document).on('pjax:complete', function (xhr, textStatus, options) {
that.shopPageInit();
scrollToTop(false);
$(document).trigger('wood-images-loaded');
$('.woodmart-sidebar-content').scroll(function () {
$(document).trigger('wood-images-loaded');
})
$('.site-content').removeClass('ajax-loading');
if ( typeof woodmart_wpml_js_data !== 'undefined' && woodmart_wpml_js_data.languages ) {
$.each(woodmart_wpml_js_data.languages, function(index, language) {
$('.wpml-ls-item-' + language.code + ' .wpml-ls-link').attr('href', language.url);
});
}
});
$(document).on('pjax:beforeReplace', function (contents, options) {
if ($('.filters-area').hasClass('filters-opened') && woodmart_settings.shop_filters_close == 'yes') {
filtersState = true;
$('body').addClass('body-filters-opened');
}
});
$(document).on('pjax:end', function (xhr, textStatus, options) {
if (filtersState) {
$('.filters-area').css('display', 'block');
woodmartThemeModule.openFilters(200);
filtersState = false;
}
$('.site-content').removeClass('ajax-loading');
$('.site-content').addClass('ajax-loaded');
});
var scrollToTop = function (type) {
if (woodmart_settings.ajax_scroll == 'no' && type == false) return false;
var $scrollTo = $(woodmart_settings.ajax_scroll_class),
scrollTo = $scrollTo.offset().top - woodmart_settings.ajax_scroll_offset;
$('html, body').stop().animate({
scrollTop: scrollTo
}, 400);
};
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Side shopping cart widget
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.cartWidget = function () {
var widget = $('.cart-widget-opener'),
btn = widget.find('a'),
body = $('body');
var cartWidgetSide = $('.cart-widget-side');
var closeSide = $('.woodmart-close-side');
widget.on('click', function (e) {
if (!isCart() && !isCheckout()) e.preventDefault();
if (isOpened()) {
closeWidget();
} else {
setTimeout(function () {
openWidget();
}, 10);
}
});
body.on("click touchstart", ".woodmart-close-side", function () {
if (isOpened()) {
closeWidget();
}
});
body.on("click", ".close-side-widget", function (e) {
e.preventDefault();
if (isOpened()) {
closeWidget();
}
});
$(document).keyup(function (e) {
if (e.keyCode === 27 && isOpened()) closeWidget();
});
var closeWidget = function () {
cartWidgetSide.removeClass('woodmart-cart-opened');
closeSide.removeClass('woodmart-close-side-opened');
};
var openWidget = function () {
if (isCart() || isCheckout()) return false;
cartWidgetSide.addClass('woodmart-cart-opened');
closeSide.addClass('woodmart-close-side-opened');
};
var isOpened = function () {
return cartWidgetSide.hasClass('woodmart-cart-opened');
};
var isCart = function () {
return $('body').hasClass('woocommerce-cart');
};
var isCheckout = function () {
return $('body').hasClass('woocommerce-checkout');
};
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Quantityt +/-
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.woocommerceQuantity = function () {
if (!String.prototype.getDecimals) {
String.prototype.getDecimals = function () {
var num = this,
match = ('' + num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
if (!match) {
return 0;
}
return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0));
}
}
$(document).on('click', '.plus, .minus', function () {
// Get values
var $qty = $(this).closest('.quantity').find('.qty'),
currentVal = parseFloat($qty.val()),
max = parseFloat($qty.attr('max')),
min = parseFloat($qty.attr('min')),
step = $qty.attr('step');
// Format values
if (!currentVal || currentVal === '' || currentVal === 'NaN') currentVal = 0;
if (max === '' || max === 'NaN') max = '';
if (min === '' || min === 'NaN') min = 0;
if (step === 'any' || step === '' || step === undefined || parseFloat(step) === 'NaN') step = '1';
// Change the value
if ($(this).is('.plus')) {
if (max && (currentVal >= max)) {
$qty.val(max);
} else {
$qty.val((currentVal + parseFloat(step)).toFixed(step.getDecimals()));
}
} else {
if (min && (currentVal <= min)) {
$qty.val(min);
} else if (currentVal > 0) {
$qty.val((currentVal - parseFloat(step)).toFixed(step.getDecimals()));
}
}
// Trigger change event
$qty.trigger('change');
});
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* On remove from cart widget
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.onRemoveFromCart = function () {
if ( 'no' === woodmart_settings.woocommerce_ajax_add_to_cart ) {
return;
}
$(document).on('click', '.widget_shopping_cart .remove', function (e) {
e.preventDefault();
$(this).parent().addClass('removing-process');
});
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Fix comments
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.woocommerceComments = function () {
var hash = window.location.hash;
var url = window.location.href;
if (hash.toLowerCase().indexOf('comment-') >= 0 || hash === '#reviews' || hash === '#tab-reviews' || url.indexOf('comment-page-') > 0 || url.indexOf('cpage=') > 0) {
setTimeout(function () {
window.scrollTo(0, 0);
}, 1);
setTimeout(function () {
if ($(hash).length > 0) {
$('html, body').stop().animate({
scrollTop: $(hash).offset().top - 100
}, 400);
}
}, 10);
}
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Mobile responsive navigation
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.woocommerceWrappTable = function () {
var wooTable = $(".shop_table:not(.shop_table_responsive):not(.woocommerce-checkout-review-order-table)").wrap("
");
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Product loder position
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.productLoaderPosition = function () {
var recalc = function () {
$('.woodmart-products-loader').each(function () {
var $loader = $(this),
$loaderWrap = $loader.parent();
if ($loader.length == 0) return;
$loader.css('left', $loaderWrap.offset().left + $loaderWrap.outerWidth() / 2);
});
};
$(window).on('resize', recalc);
recalc();
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Init Zoom
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.initZoom = function () {
var $mainGallery = $('.woocommerce-product-gallery__wrapper:not(.quick-view-gallery)');
if (woodmart_settings.zoom_enable != 'yes') {
return false;
}
var zoomOptions = {
touch: false
};
if ('ontouchstart' in window) {
zoomOptions.on = 'click';
}
if ( $('.woocommerce-product-gallery').hasClass('thumbs-position-bottom') || $('.woocommerce-product-gallery').hasClass('thumbs-position-left') ) {
$mainGallery.on('changed.owl.carousel', function(e){
var $wrapper = $mainGallery.find('.product-image-wrap').eq(e.item.index).find('.woocommerce-product-gallery__image');
init($wrapper);
});
} else {
$mainGallery.find('.product-image-wrap').each(function () {
var $wrapper = $(this).find('.woocommerce-product-gallery__image');
init($wrapper);
});
}
function init($wrapper){
var image = $wrapper.find('img');
if (image.data('large_image_width') > $wrapper.width()) {
$wrapper.trigger('zoom.destroy');
$wrapper.zoom(zoomOptions);
}
}
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Product Hover
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.productMoreDescription = function () {
$('.woodmart-more-desc').each(function () {
var btnHTML = '
' + 'more' + '';
var $content = $(this);
var $inner = $content.find('.woodmart-more-desc-inner');
var contentHeight = $content.outerHeight();
var innerHeight = $inner.outerHeight();
var delta = innerHeight - contentHeight;
if ($content.hasClass('woodmart-more-desc-active')) {
return;
}
if (delta > 30) {
$content.addClass('woodmart-more-desc-active');
$content.append(btnHTML);
} else if (delta > 0) {
$content.css('height', contentHeight + delta);
}
});
$('body').on('click', '.woodmart-more-desc-btn', function (e) {
e.preventDefault();
$(this).parent().addClass('woodmart-more-desc-full');
woodmartThemeModule.productHoverRecalc($(this).parents('.woodmart-hover-base'));
});
};
woodmartThemeModule.productHoverRecalc = function ($el) {
if ($el.hasClass('product-in-carousel')) {
return;
}
var heightHideInfo = $el.find('.fade-in-block').outerHeight();
$el.find('.content-product-imagin').css({
marginBottom: -heightHideInfo
});
$el.addClass('hover-ready');
};
woodmartThemeModule.productHover = function () {
$('.woodmart-hover-base').each(function () {
var $product = $(this);
$product.imagesLoaded(function () {
woodmartThemeModule.productHoverRecalc($product);
});
});
if ($(window).width() <= 1024) {
$('.woodmart-hover-base').on('click', function (e) {
var hoverClass = 'state-hover';
if (!$(this).hasClass(hoverClass) && woodmart_settings.base_hover_mobile_click == 'no') {
e.preventDefault();
$('.' + hoverClass).removeClass(hoverClass);
$(this).addClass(hoverClass);
}
});
$(document).on('click touchstart', function (e) {
if ($(e.target).closest('.state-hover').length == 0) {
$('.state-hover').removeClass('state-hover');
}
});
}
$('.woodmart-hover-base').each(function () {
var $el = $(this),
$elBtn = $el.find('.woodmart-add-btn'),
widthHiddenInfo = $el.outerWidth();
if (!woodmart_settings.hover_width_small) {
return;
}
if (widthHiddenInfo < 255 || $(window).width() <= 1024) {
$el.addClass('add-small-content');
if ($el.hasClass('woodmart-hover-base')) {
$elBtn.addClass('wd-action-btn wd-add-cart-btn wd-style-icon');
}
} else {
if ($el.hasClass('woodmart-hover-base') && ($('body').hasClass('catalog-mode-on') || $('body').hasClass('login-see-prices'))) {
$el.find('.wd-bottom-actions .wd-action-btn').removeClass('wd-style-icon').addClass('wd-style-text');
}
}
});
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Enable masonry grid for shop isotope type
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.shopMasonry = function () {
if (typeof ($.fn.isotope) == 'undefined' || typeof ($.fn.packery) == 'undefined' || typeof ($.fn.imagesLoaded) == 'undefined') return;
var $container = $('.elements-grid.grid-masonry');
// initialize Masonry after all images have loaded
$container.imagesLoaded(function () {
$container.isotope({
isOriginLeft: !$('body').hasClass('rtl'),
itemSelector: '.category-grid-item, .product-grid-item',
});
});
// Categories masonry
$(window).resize(function () {
var $catsContainer = $('.categories-masonry');
var colWidth = ($catsContainer.hasClass('categories-style-masonry')) ? '.category-grid-item' : '.col-lg-3.category-grid-item';
$catsContainer.imagesLoaded(function () {
$catsContainer.packery({
resizable: false,
isOriginLeft: !$('body').hasClass('rtl'),
// layoutMode: 'packery',
packery: {
gutter: 0,
columnWidth: colWidth
},
itemSelector: '.category-grid-item',
// masonry: {
// gutter: 0
// }
});
});
});
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* Categories toggle accordion
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.categoriesAccordion = function () {
if (woodmart_settings.categories_toggle == 'no') return;
var $widget = $('.widget_product_categories'),
$list = $widget.find('.product-categories'),
time = 300;
$list.find('.cat-parent').each(function () {
if ($(this).find(' > .woodmart-cats-toggle').length > 0) return;
if ($(this).find(' > .children').length == 0 || $(this).find(' > .children > *').length == 0) return;
$(this).append('
');
});
$list.on('click', '.woodmart-cats-toggle', function () {
var $btn = $(this),
$subList = $btn.prev();
if ($subList.hasClass('list-shown')) {
$btn.removeClass('toggle-active');
$subList.stop().slideUp(time).removeClass('list-shown');
} else {
$subList.parent().parent().find('> li > .list-shown').slideUp().removeClass('list-shown');
$subList.parent().parent().find('> li > .toggle-active').removeClass('toggle-active');
$btn.addClass('toggle-active');
$subList.stop().slideDown(time).addClass('list-shown');
}
});
if ($list.find('li.current-cat.cat-parent, li.current-cat-parent').length > 0) {
$list.find('li.current-cat.cat-parent, li.current-cat-parent').find('> .woodmart-cats-toggle').click();
}
};
/**
*-------------------------------------------------------------------------------------------------------------------------------------------
* WooCommerce price filter slider with ajax
*-------------------------------------------------------------------------------------------------------------------------------------------
*/
woodmartThemeModule.woocommercePriceSlider = function () {
// woocommerce_price_slider_params is required to continue, ensure the object exists
if (typeof woocommerce_price_slider_params === 'undefined' || $('.price_slider_amount #min_price').length < 1 || !$.fn.slider) {
return false;
}
var $slider = $('.price_slider');
if ($slider.slider('instance') !== undefined) return;
// Get markup ready for slider
$('input#min_price, input#max_price').hide();
$('.price_slider, .price_label').show();
// Price slider uses $ ui
var min_price = $('.price_slider_amount #min_price').data('min'),
max_price = $('.price_slider_amount #max_price').data('max'),
current_min_price = parseInt(min_price, 10),
current_max_price = parseInt(max_price, 10);
if ($('.products').attr('data-min_price') && $('.products').attr('data-min_price').length > 0) {
current_min_price = parseInt($('.products').attr('data-min_price'), 10);
}
if ($('.products').attr('data-max_price') && $('.products').attr('data-max_price').length > 0) {
current_max_price = parseInt($('.products').attr('data-max_price'), 10);
}
$slider.slider({
range: true,
animate: true,
min: min_price,
max: max_price,
values: [current_min_price, current_max_price],
create: function () {
$('.price_slider_amount #min_price').val(current_min_price);
$('.price_slider_amount #max_price').val(current_max_price);
$(document.body).trigger('price_slider_create', [current_min_price, current_max_price]);
},
slide: function (event, ui) {
$('input#min_price').val(ui.values[0]);
$('input#max_price').val(ui.values[1]);
$(document.body).trigger('price_slider_slide', [ui.values[0], ui.values[1]]);
},
change: function (event, ui) {
$(document.body).trigger('price_slider_change', [ui.values[0], ui.values[1]]);
}
});
setTimeout(function () {
$(document.body).trigger('price_slider_create', [current_min_price, current_max_price]);
if ($slider.find('.ui-slider-range').length > 1) $slider.find('.ui-slider-range').first().remove();
}, 10);
};
})(jQuery);
jQuery(window).on('elementor/frontend/init', function() {
if (!elementorFrontend.isEditMode()) {
return;
}
elementorFrontend.hooks.addAction('frontend/element_ready/wd_products.default', function($wrapper, $) {
woodmartThemeModule.swatchesOnGrid();
woodmartThemeModule.quickViewInit();
woodmartThemeModule.quickShop();
woodmartThemeModule.btnsToolTips();
woodmartThemeModule.countDownTimer();
woodmartThemeModule.addToCart();
woodmartThemeModule.owlCarouselInit();
woodmartThemeModule.lazyLoading();
woodmartThemeModule.productHover();
woodmartThemeModule.productMoreDescription();
woodmartThemeModule.gridQuantity();
woodmartThemeModule.shopMasonry();
woodmartThemeModule.productsLoadMore();
});
elementorFrontend.hooks.addAction('frontend/element_ready/wd_products_tabs.default', function($wrapper, $) {
woodmartThemeModule.productsTabs();
woodmartThemeModule.swatchesOnGrid();
woodmartThemeModule.quickViewInit();
woodmartThemeModule.quickShop();
woodmartThemeModule.btnsToolTips();
woodmartThemeModule.countDownTimer();
woodmartThemeModule.addToCart();
woodmartThemeModule.owlCarouselInit();
woodmartThemeModule.lazyLoading();
woodmartThemeModule.productHover();
woodmartThemeModule.productMoreDescription();
woodmartThemeModule.gridQuantity();
woodmartThemeModule.shopMasonry();
woodmartThemeModule.productsLoadMore();
});
elementorFrontend.hooks.addAction('frontend/element_ready/wd_product_categories.default', function($wrapper, $) {
woodmartThemeModule.owlCarouselInit();
woodmartThemeModule.lazyLoading();
});
elementorFrontend.hooks.addAction('frontend/element_ready/wd_products_brands.default', function($wrapper, $) {
woodmartThemeModule.owlCarouselInit();
woodmartThemeModule.lazyLoading();
woodmartThemeModule.shopMasonry();
});
elementorFrontend.hooks.addAction('frontend/element_ready/wd_product_filters.default', function($wrapper, $) {
woodmartThemeModule.productFilters();
});
});
jQuery(document).ready(function () {
woodmartThemeModule.init();
});