class RazziProductShortcodeWidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
gallery: '.woocommerce-product-gallery'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$gallery: this.$element.find(selectors.gallery)
};
}
getSwipperOptions() {
const swiperOptions = {
watchOverflow: true,
slidesPerView: this.elements.$gallery.data('columns'),
spaceBetween: 15,
navigation: {
nextEl: this.elements.$gallery.find('.rz-gallery-button-next'),
prevEl: this.elements.$gallery.find('.rz-gallery-button-prev'),
},
breakpoints: {
300: {
spaceBetween: 0,
allowTouchMove: false,
},
991: {
spaceBetween: 15,
},
}
};
return swiperOptions;
}
getFlexSliderInit() {
var self = this;
if (!self.$element.closest('body').hasClass('elementor-editor-active')) {
return;
}
const options = {
selector: '.woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image',
allowOneSlide: false,
animation: "slide",
animationLoop: false,
controlNav: "thumbnails",
animationSpeed: 500,
directionNav: false,
rtl: false,
slideshow: false,
smoothHeight: true,
start: function () {
self.elements.$gallery.css('opacity', 1);
},
};
this.elements.$gallery.flexslider(options);
}
getImageZoomInit($target) {
if (!this.$element.closest('body').hasClass('elementor-editor-active')) {
return;
}
if (!jQuery.fn.zoom) {
return;
}
const settings = this.getElementSettings();
if (settings.show_image_zoom === 'show') {
var zoom_options = jQuery.extend({
touch: false
});
$target.trigger('zoom.destroy');
$target.zoom(zoom_options);
}
}
getVariationSwatcher() {
var $variations = this.$element.find('.variations_form');
if (typeof wc_add_to_cart_variation_params !== 'undefined') {
$variations.find('td.value select').each(function () {
jQuery(this).on('change', function () {
var value = jQuery(this).find('option:selected').text();
jQuery(this).closest('tr').find('td.label .razzi-attr-value').html(value);
}).trigger('change');
});
}
}
getSwiperInit() {
var $thumbnail = this.$element.find('.flex-control-thumbs');
$thumbnail.wrap('
');
$thumbnail.addClass('swiper-wrapper');
$thumbnail.find('li').addClass('swiper-slide');
$thumbnail.after('');
$thumbnail.after('');
jQuery('li', $thumbnail).append('');
new Swiper(this.elements.$gallery.find('.linked-gallery-carousel'), this.getSwipperOptions());
}
getLightBoxGalleryInit() {
var self = this;
const settings = this.getElementSettings();
if (this.$element.closest('body').hasClass('elementor-editor-active')) {
if (settings.show_lightbox !== 'show' && settings.show_image_zoom !== 'show') {
this.elements.$gallery.on('click', '.woocommerce-product-gallery__image > a', function (e) {
return false;
});
}
if (settings.show_lightbox === 'show' && settings.show_image_zoom === 'show') {
this.elements.$gallery.on('click', '.woocommerce-product-gallery__image > .zoomImg', function (e) {
jQuery(this).closest('.woocommerce-product-gallery__image').find('a').trigger('click');
});
}
if (jQuery.fn.quantityDropdown) {
self.$element.find('.quantity .qty').quantityDropdown();
}
} else {
if (settings.show_lightbox !== 'show') {
this.elements.$gallery.on('click', '.woocommerce-product-gallery__image > a', function (e) {
return false;
});
}
}
}
getCountDownInit() {
if (!this.$element.closest('body').hasClass('elementor-editor-active')) {
return;
}
if (!jQuery.fn.rz_countdown) {
return;
}
this.$element.find('.razzi-countdown').rz_countdown();
}
onInit() {
var self = this;
super.onInit();
this.getCountDownInit();
this.getLightBoxGalleryInit();
this.getFlexSliderInit();
this.getVariationSwatcher();
this.getImageZoomInit(this.elements.$gallery.find('.woocommerce-product-gallery__image'));
this.elements.$gallery.imagesLoaded(function () {
setTimeout(function () {
self.getSwiperInit();
}, 200);
});
}
}
class RazziProductsMasonryWidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-products-masonry'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
productsFound() {
var $found = this.elements.$container.find('.razzi-posts__found-inner'),
$foundEls = $found.find('.count-bar'),
$current = $found.find('.current-post').html(),
$total = $found.find('.found-post').html(),
pecent = ($current / $total) * 100;
$foundEls.css('width', pecent + '%');
}
loadProductsGrid() {
// Load Products
var self = this;
this.elements.$container.on('click', '.woocommerce-pagination a.next', function (e) {
e.preventDefault();
var $el = jQuery(this),
$nav = $el.closest('.woocommerce-pagination'),
url = $el.attr('href'),
$products = $el.closest('.razzi-products-masonry').find('ul.products'),
$currentPosts = $products.find('li.product:not(.has-banner)').length,
$found = $el.closest('.razzi-products-masonry').find('.razzi-posts__found');
$nav.addClass('loading');
jQuery.get(url, function (response) {
var $content = jQuery(response).find('.razzi-products-masonry ul.products li.product'),
$navNew = jQuery(response).find('.razzi-products-masonry .woocommerce-pagination'),
$foundItem = jQuery(response).find('.razzi-products-masonry ul.products li.product:not(.has-banner)'),
$numberPosts = $foundItem.length + $currentPosts;
// Add animation class
for (var index = 0; index < $content.length; index++) {
jQuery($content[index]).css('animation-delay', index * 100 + 'ms');
}
$content.addClass('razziFadeInUp');
$products.append($content);
$nav.replaceWith($navNew);
jQuery(document.body).trigger('razzi_products_masonry_loaded', [$content, true]);
$found.find('.current-post').html(' ' + $numberPosts);
self.productsFound();
$navNew.find('.next').parent().addClass('btn-load-more');
$navNew.removeClass('loading');
});
});
};
onInit() {
var self = this;
super.onInit();
this.elements.$container.find('.woocommerce-pagination .next').parent().addClass('btn-load-more');
self.loadProductsGrid();
}
}
class RazziProductsDealWidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-products-deal'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
getProductSwiperInit() {
const settings = this.getElementSettings();
var $list = this.elements.$container.find('ul.product-loop-layout-deal');
$list.find('li.product').addClass('swiper-slide');
$list.after('');
$list.after('');
var slidesPerView = settings.centeredSlides == 'yes' ? 'auto' : settings.slidesToShow;
var options = {
watchOverflow: true,
pagination: {
el: this.elements.$container.find('.swiper-pagination'),
clickable: true
},
scrollbar: {
el: '.swiper-scrollbar',
hide: false,
draggable: true
},
loop: settings.infinite == 'yes' ? true : false,
autoplay: settings.autoplay == 'yes' ? true : false,
speed: settings.speed,
centeredSlides: settings.centeredSlides == 'yes' ? true : false,
spaceBetween: 30,
on: {
init: function () {
this.$el.css('opacity', 1);
}
},
breakpoints: {
300: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : razziData.mobile_portrait,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : razziData.mobile_portrait,
spaceBetween: 15,
},
480: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : razziData.mobile_portrait,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : razziData.mobile_portrait,
spaceBetween: 15,
},
768: {
slidesPerView: settings.slidesToShow_tablet ? settings.slidesToShow_tablet : 3,
slidesPerGroup: settings.slidesToScroll_tablet ? settings.slidesToScroll_tablet : 3,
},
1024: {
slidesPerView: settings.slidesToShow > 5 ? 5 : slidesPerView,
slidesPerGroup: settings.slidesToScroll > 5 ? 5 : settings.slidesToScroll,
spaceBetween: 30
},
1366: {
slidesPerView: settings.slidesToShow > 6 ? 6 : slidesPerView,
slidesPerGroup: settings.slidesToScroll > 6 ? 6 : settings.slidesToScroll
},
1500: {
slidesPerView: slidesPerView,
slidesPerGroup: settings.slidesToScroll
}
}
};
new Swiper(this.elements.$container.find('.linked-products-deal-carousel'), options);
}
onInit() {
var self = this;
super.onInit();
this.elements.$container.find('.razzi-countdown').rz_countdown();
this.elements.$container.imagesLoaded(function () {
setTimeout(function () {
self.getProductSwiperInit();
}, 200);
});
}
}
class RazziProductsDeal2WidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-products-deal-2'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
getProductSwiperInit() {
const settings = this.getElementSettings();
var $list = this.elements.$container.find('ul.product-loop-layout-deal-2');
$list.find('li.product').addClass('swiper-slide');
$list.after('');
var options = {
watchOverflow: true,
pagination: {
el: this.elements.$container.find('.swiper-pagination'),
clickable: true
},
navigation: {
nextEl: this.elements.$container.find('.rz-swiper-button-next'),
prevEl: this.elements.$container.find('.rz-swiper-button-prev'),
},
loop: settings.infinite == 'yes' ? true : false,
autoplay: settings.autoplay == 'yes' ? true : false,
speed: settings.speed,
spaceBetween: 15,
on: {
init: function () {
this.$el.css('opacity', 1);
}
},
breakpoints: {
300: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : 1,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : 1,
},
480: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : 1,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : 1,
},
768: {
slidesPerView: settings.slidesToShow_tablet ? settings.slidesToShow_tablet : 2,
slidesPerGroup: settings.slidesToScroll_tablet ? settings.slidesToScroll_tablet : 2,
},
1024: {
slidesPerView: settings.slidesToShow > 5 ? 5 : settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll > 5 ? 5 : settings.slidesToScroll,
},
1366: {
slidesPerView: settings.slidesToShow > 6 ? 6 : settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll > 6 ? 6 : settings.slidesToScroll
},
1500: {
slidesPerView: settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll
}
}
};
new Swiper(this.elements.$container.find('.linked-products-deal-carousel'), options);
}
onInit() {
var self = this;
super.onInit();
this.elements.$container.find('.razzi-countdown').rz_countdown();
this.elements.$container.imagesLoaded(function () {
setTimeout(function () {
self.getProductSwiperInit();
}, 200);
});
}
}
class RazziProductsDeal3WidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-products-deal-3'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
getProductSwiperInit() {
const settings = this.getElementSettings();
var $list = this.elements.$container.find('ul.product-loop-layout-deal-3');
$list.find('li.product').addClass('swiper-slide');
$list.after('');
$list.after('');
var slidesPerView = settings.centeredSlides == 'yes' ? 'auto' : settings.slidesToShow;
var options = {
watchOverflow: true,
pagination: {
el: this.elements.$container.find('.swiper-pagination'),
clickable: true
},
scrollbar: {
el: '.swiper-scrollbar',
hide: false,
draggable: true
},
loop: settings.infinite == 'yes' ? true : false,
autoplay: settings.autoplay == 'yes' ? true : false,
speed: settings.speed,
centeredSlides: settings.centeredSlides == 'yes' ? true : false,
on: {
init: function () {
this.$el.css('opacity', 1);
$list.find('.product-deal-3-countdown').rz_countdown();
}
},
breakpoints: {
300: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : 1,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : 1,
},
480: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : 1,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : 1,
},
768: {
slidesPerView: settings.slidesToShow_tablet ? settings.slidesToShow_tablet : 2,
slidesPerGroup: settings.slidesToScroll_tablet ? settings.slidesToScroll_tablet : 2,
},
1024: {
slidesPerView: settings.slidesToShow > 5 ? 5 : slidesPerView,
slidesPerGroup: settings.slidesToScroll > 5 ? 5 : settings.slidesToScroll,
},
1366: {
slidesPerView: settings.slidesToShow > 6 ? 6 : slidesPerView,
slidesPerGroup: settings.slidesToScroll > 6 ? 6 : settings.slidesToScroll
},
1500: {
slidesPerView: slidesPerView,
slidesPerGroup: settings.slidesToScroll
}
}
};
new Swiper(this.elements.$container.find('.linked-products-deal-carousel'), options);
}
onInit() {
var self = this;
super.onInit();
this.elements.$container.imagesLoaded(function () {
setTimeout(function () {
self.getProductSwiperInit();
}, 200);
});
}
}
class RazziProductsShowcaseWidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-products-showcase'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
getProductSwiperInit() {
var $products = this.elements.$container.find('ul.products');
$products.addClass('swiper-wrapper');
$products.find('li.product').addClass('swiper-slide');
$products.after('');
var galleryBox = new Swiper(this.elements.$container.find('.showcase-image'), {
watchOverflow: true,
watchSlidesVisibility: true,
watchSlidesProgress: true,
allowTouchMove: false,
effect: 'fade',
fadeEffect: {
crossFade: true
},
});
var galleryImage = new Swiper(this.elements.$container.find('.showcase-box .product-content'), {
watchOverflow: true,
thumbs: {
swiper: galleryBox
},
navigation: {
nextEl: this.elements.$container.find('.rz-swiper-showcase-button-next'),
prevEl: this.elements.$container.find('.rz-swiper-showcase-button-prev'),
},
pagination: {
el: this.elements.$container.find('.swiper-pagination'),
clickable: true
},
});
}
onInit() {
var self = this;
super.onInit();
self.getProductSwiperInit();
}
}
class RazziProductsCarouselWidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-products-carousel'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
getProductSwiperInit() {
const settings = this.getElementSettings();
var $products = this.elements.$container.find('ul.products');
$products.wrap('');
$products.addClass('swiper-wrapper');
$products.find('li.product').addClass('swiper-slide');
$products.after('');
$products.after('');
if ( settings.slidesPerViewAuto == 'yes' && settings.infinite !== 'yes' ) {
if ( settings.slidesToShow != 1 || settings.slidesToScroll != 1 ) {
$products.append('');
}
}
var slidesPerView = settings.slidesPerViewAuto == 'yes' ? 'auto' : settings.slidesToShow,
slidesRows = settings.slidesPerViewAuto == 'yes' ? 1 : settings.slidesRows;
var spaceBetween = jQuery(document.body).hasClass('razzi-product-card-solid') ? false : true;
var options = {
watchOverflow: true,
loop: settings.infinite == 'yes' ? true : false,
autoplay: settings.autoplay == 'yes' ? true : false,
speed: settings.speed,
spaceBetween: spaceBetween == true ? 30 : 0,
slidesPerColumnFill: 'row',
mousewheel: settings.mousewheel == 'yes' ? true : false,
navigation: {
nextEl: this.elements.$container.find('.rz-swiper-button-next'),
prevEl: this.elements.$container.find('.rz-swiper-button-prev'),
},
pagination: {
el: this.elements.$container.find('.swiper-pagination'),
clickable: true
},
scrollbar: {
el: '.swiper-scrollbar',
hide: false,
draggable: true
},
on: {
init: function () {
this.$el.css('opacity', 1);
}
},
breakpoints: {
300: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : razziData.mobile_portrait,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : razziData.mobile_portrait,
slidesPerColumn: settings.slidesPerViewAuto !== 'yes' && settings.slidesRows_mobile ? settings.slidesRows_mobile : slidesRows,
spaceBetween: spaceBetween == true ? 15 : 0,
},
480: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : razziData.mobile_portrait,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : razziData.mobile_portrait,
slidesPerColumn: settings.slidesPerViewAuto !== 'yes' && settings.slidesRows_mobile ? settings.slidesRows_mobile : slidesRows,
spaceBetween: spaceBetween == true ? 15 : 0,
},
768: {
slidesPerView: settings.slidesToShow_tablet ? settings.slidesToShow_tablet : 3,
slidesPerGroup: settings.slidesToScroll_tablet ? settings.slidesToScroll_tablet : 3,
slidesPerColumn: settings.slidesPerViewAuto !== 'yes' && settings.slidesRows_tablet ? settings.slidesRows_tablet : slidesRows,
spaceBetween: spaceBetween == true ? 15 : 0,
},
1024: {
slidesPerView: slidesPerView > 5 ? 5 : slidesPerView,
slidesPerGroup: settings.slidesToScroll > 5 ? 5 : settings.slidesToScroll,
slidesPerColumn: slidesRows,
spaceBetween: spaceBetween == true ? 30 : 0,
},
1366: {
slidesPerView: slidesPerView > 6 ? 6 : slidesPerView,
slidesPerGroup: settings.slidesToScroll > 6 ? 6 : settings.slidesToScroll,
slidesPerColumn: slidesRows,
},
1500: {
slidesPerView: slidesPerView,
slidesPerGroup: settings.slidesToScroll,
slidesPerColumn: slidesRows,
}
}
};
new Swiper(this.elements.$container.find('.linked-elementor-product-carousel'), options);
}
addClassProductLoopLayout() {
var $products = this.elements.$container.find('ul.products');
if ( ! $products.hasClass( 'product-loop-layout-5' ) && ! $products.hasClass( 'product-loop-layout-6' ) ) {
return;
}
$products.closest( '.woocommerce' ).addClass( 'product-loop-outsite' );
}
onInit() {
var self = this;
super.onInit();
self.getProductSwiperInit();
self.addClassProductLoopLayout();
}
}
class RazziProductOfCategoryWidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-product-of-category'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
getProductSwiperInit() {
const settings = this.getElementSettings();
var $products = this.elements.$container.find('ul.products');
var spaceBetween = jQuery(document.body).hasClass('razzi-product-card-solid') ? false : true;
$products.wrap('');
$products.addClass('swiper-wrapper');
$products.find('li.product').addClass('swiper-slide');
$products.after('');
$products.after('');
var options = {
watchOverflow: true,
loop: settings.infinite == 'yes' ? true : false,
autoplay: settings.autoplay == 'yes' ? true : false,
speed: settings.speed,
spaceBetween: spaceBetween == true ? 30 : 0,
navigation: {
nextEl: this.elements.$container.find('.rz-swiper-button-next'),
prevEl: this.elements.$container.find('.rz-swiper-button-prev'),
},
pagination: {
el: this.elements.$container.find('.swiper-pagination'),
clickable: true
},
scrollbar: {
el: '.swiper-scrollbar',
hide: false,
draggable: true
},
on: {
init: function () {
this.$el.css('opacity', 1);
}
},
breakpoints: {
300: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : razziData.mobile_portrait,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : razziData.mobile_portrait,
spaceBetween: spaceBetween == true ? 15 : 0,
},
480: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : razziData.mobile_portrait,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : razziData.mobile_portrait,
},
768: {
slidesPerView: settings.slidesToShow_tablet ? settings.slidesToShow_tablet : 3,
slidesPerGroup: settings.slidesToScroll_tablet ? settings.slidesToScroll_tablet : 3,
},
900: {
slidesPerView: settings.slidesToShow > 4 ? 4 : settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll > 4 ? 4 : settings.slidesToScroll,
spaceBetween: spaceBetween == true ? 15 : 0,
},
1024: {
slidesPerView: settings.slidesToShow > 5 ? 5 : settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll > 5 ? 5 : settings.slidesToScroll,
spaceBetween: spaceBetween == true ? 30 : 0,
},
1200: {
slidesPerView: settings.slidesToShow > 5 ? 5 : settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll > 5 ? 5 : settings.slidesToScroll
},
1366: {
slidesPerView: settings.slidesToShow > 6 ? 6 : settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll > 6 ? 6 : settings.slidesToScroll
},
1500: {
slidesPerView: settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll
}
}
};
new Swiper(this.elements.$container.find('.linked-elementor-product-carousel'), options);
}
addClassProductLoopLayout() {
var $products = this.elements.$container.find('ul.products');
if ( ! $products.hasClass( 'product-loop-layout-5' ) && ! $products.hasClass( 'product-loop-layout-6' ) ) {
return;
}
$products.closest( '.woocommerce' ).addClass( 'product-loop-outsite' );
}
onInit() {
var self = this;
super.onInit();
self.getProductSwiperInit();
self.addClassProductLoopLayout();
}
}
class RazziProductsCategorytabsWidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-product-category-tabs'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
getProductCategory($selector, settings) {
var $list = $selector.find('ul.category-list');
$list.find('li.cat-item').addClass('swiper-slide');
$list.after('');
$list.after('');
$list.after('');
var options = {
watchOverflow: true,
loop: settings.infinite == 'yes' ? true : false,
autoplay: settings.autoplay == 'yes' ? true : false,
speed: 500,
pagination: {
el: $selector.find('.swiper-pagination'),
clickable: true
},
navigation: {
nextEl: $selector.find('.rz-category-arrow-next'),
prevEl: $selector.find('.rz-category-arrow-prev'),
},
spaceBetween: 30,
on: {
init: function () {
this.$el.css('opacity', 1);
}
},
breakpoints: {
300: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : razziData.mobile_portrait,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : razziData.mobile_portrait,
spaceBetween: 15,
},
480: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : razziData.mobile_portrait,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : razziData.mobile_portrait,
spaceBetween: 15,
},
768: {
slidesPerView: settings.slidesToShow_tablet ? settings.slidesToShow_tablet : 3,
slidesPerGroup: settings.slidesToScroll_tablet ? settings.slidesToScroll_tablet : 3,
},
1024: {
slidesPerView: settings.slidesToShow > 5 ? 5 : settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll > 5 ? 5 : settings.slidesToScroll,
spaceBetween: 30
},
1366: {
slidesPerView: settings.slidesToShow > 6 ? 6 : settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll > 6 ? 6 : settings.slidesToScroll
},
1500: {
slidesPerView: settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll
}
}
};
new Swiper($selector.find('.linked-products-category'), options);
};
productTabs($tabs, $el, $currentTab) {
$tabs.find('.tabs-nav a').removeClass('active');
$el.addClass('active');
$tabs.find('.tabs-panel').removeClass('active');
$currentTab.addClass('active');
}
getCategoryAJAXHandler($el, $tabs) {
var self = this,
tab = $el.data('href'),
$currentTab = $tabs.find('.tabs-' + tab),
$tabContent = $tabs.find('.tabs-content');
if ($currentTab.hasClass('tab-loaded')) {
self.productTabs($tabs, $el, $currentTab);
return;
}
$tabContent.addClass('loading');
var data = {},
elementSettings = $currentTab.data('settings'),
ajax_url = razziData.ajax_url.toString().replace('%%endpoint%%', 'ra_elementor_load_category');
jQuery.each(elementSettings, function (key, value) {
data[key] = value;
});
jQuery.post(
ajax_url,
data,
function (response) {
if (!response) {
return;
}
$currentTab.find('.tab-content').html(response.data);
const settings = self.getElementSettings();
self.getProductCategory($currentTab, settings);
self.productTabs($tabs, $el, $currentTab);
$tabContent.removeClass('loading');
$currentTab.addClass('tab-loaded');
}
);
};
onInit() {
var self = this;
const settings = this.getElementSettings();
super.onInit();
var $selector = this.elements.$container,
$panels = $selector.find('.tab-loaded');
self.getProductCategory($panels, settings);
$selector.find('.tabs-nav').on('click', 'a', function (e) {
e.preventDefault();
self.getCategoryAJAXHandler(jQuery(this), $selector);
});
}
}
class RazziProductstabWidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-products-tabs'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
getProductCarousel($selector, settings) {
var $products = $selector.find('ul.products');
var spaceBetween = jQuery(document.body).hasClass('razzi-product-card-solid') ? false : true;
$products.wrap('');
$products.addClass('swiper-wrapper');
$products.find('li.product').addClass('swiper-slide');
$products.after('');
$products.after('');
if ( settings.slidesPerViewAuto == 'yes' && settings.infinite !== 'yes' ) {
if ( settings.slidesToShow != 1 || settings.slidesToScroll != 1 ) {
$products.append('');
}
}
var slidesPerView = settings.slidesPerViewAuto == 'yes' || settings.centeredSlides == 'yes' ? 'auto' : settings.slidesToShow;
var options = {
loop: settings.infinite == 'yes' ? true : false,
autoplay: settings.autoplay == 'yes' ? true : false,
speed: settings.speed ? settings.speed : 500,
watchOverflow: true,
centeredSlides: settings.centeredSlides == 'yes' ? true : false,
pagination: {
el: $selector.find('.swiper-pagination'),
clickable: true
},
scrollbar: {
el: '.swiper-scrollbar',
hide: false,
draggable: true
},
navigation: {
nextEl: this.elements.$container.find('.rz-swiper-button-next'),
prevEl: this.elements.$container.find('.rz-swiper-button-prev'),
},
spaceBetween: spaceBetween == true ? 30 : 0,
on: {
init: function () {
this.$el.css('opacity', 1);
}
},
breakpoints: {
300: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : razziData.mobile_portrait,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : razziData.mobile_portrait,
spaceBetween: spaceBetween == true ? 15 : 0,
},
480: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : razziData.mobile_portrait,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : razziData.mobile_portrait,
spaceBetween: spaceBetween == true ? 15 : 0,
},
768: {
slidesPerView: settings.slidesToShow_tablet ? settings.slidesToShow_tablet : 3,
slidesPerGroup: settings.slidesToScroll_tablet ? settings.slidesToScroll_tablet : 3,
},
1024: {
slidesPerView: slidesPerView > 5 ? 5 : slidesPerView,
slidesPerGroup: settings.slidesToScroll > 5 ? 5 : settings.slidesToScroll,
spaceBetween: spaceBetween == true ? 30 : 0,
},
1366: {
slidesPerView: slidesPerView > 6 ? 6 : slidesPerView,
slidesPerGroup: settings.slidesToScroll > 6 ? 6 : settings.slidesToScroll
},
1500: {
slidesPerView: slidesPerView,
slidesPerGroup: settings.slidesToScroll
}
}
};
new Swiper($selector.find('.linked-products-carousel'), options);
};
/**
* Get Product AJAX
*/
getProductsAJAXHandler($el, $tabs) {
var self = this,
tab = $el.data('href'),
$currentTab = $tabs.find('.tabs-' + tab),
$tabContent = $tabs.find('.tabs-content');
if ($currentTab.hasClass('tab-loaded')) {
self.productTabs($tabs, $el, $currentTab);
return;
}
$tabContent.addClass('loading');
var data = {},
elementSettings = $currentTab.data('settings'),
ajax_url = razziData.ajax_url.toString().replace('%%endpoint%%', 'ra_elementor_load_products_grid');
const settings = this.getElementSettings();
jQuery.post(
ajax_url,
{
settings: elementSettings
},
function (response) {
if (!response) {
return;
}
var content = response.data;
$currentTab.prepend(content);
self.getProductCarousel($currentTab, settings);
if ($currentTab.find('.products').is(':empty')) {
var $text = $currentTab.find('.page-number').data('text');
$currentTab.addClass('products-empty');
if ($text) {
$currentTab.find('.products').html('' + $text + '')
}
}
$currentTab.addClass('tab-loaded');
self.productTabs($tabs, $el, $currentTab);
$tabContent.removeClass('loading');
jQuery(document.body).trigger('razzi_products_loaded', [jQuery(content), true]);
}
);
};
productTabs($tabs, $el, $currentTab) {
$tabs.find('.tabs-nav a').removeClass('active');
$el.addClass('active');
$tabs.find('.tabs-panel').removeClass('active');
$currentTab.addClass('active');
}
onInit() {
var self = this;
const settings = this.getElementSettings();
super.onInit();
var $selector = this.elements.$container,
$panels = $selector.find('.tab-loaded');
self.getProductCarousel($panels, settings);
$selector.find('.tabs-nav').on('click', 'a', function (e) {
e.preventDefault();
self.getProductsAJAXHandler(jQuery(this), $selector);
});
}
}
class RazziProductstabGridWidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-products-tabs-grid'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
/**
* Get Product AJAX
*/
getProductsAJAXHandler($el, $tabs) {
var self = this,
tab = $el.data('href'),
$currentTab = $tabs.find('.tabs-' + tab),
$tabContent = $tabs.find('.tabs-content');
if ($currentTab.hasClass('tab-loaded')) {
self.productTabs($tabs, $el, $currentTab);
return;
}
$tabContent.addClass('loading');
var data = {},
elementSettings = $currentTab.data('settings'),
ajax_url = razziData.ajax_url.toString().replace('%%endpoint%%', 'ra_elementor_load_products_grid');
const settings = this.getElementSettings();
jQuery.post(
ajax_url,
{
settings: elementSettings
},
function (response) {
if (!response) {
return;
}
var content = response.data;
$currentTab.prepend(content);
if ($currentTab.find('.products').is(':empty')) {
var $text = $currentTab.find('.page-number').data('text');
$currentTab.addClass('products-empty');
if ($text) {
$currentTab.find('.products').html('' + $text + '')
}
}
$currentTab.addClass('tab-loaded');
self.productTabs($tabs, $el, $currentTab);
$tabContent.removeClass('loading');
jQuery(document.body).trigger('razzi_products_loaded', [jQuery(content), true]);
}
);
};
productTabs($tabs, $el, $currentTab) {
$tabs.find('.tabs-nav a').removeClass('active');
$el.addClass('active');
$tabs.find('.tabs-panel').removeClass('active');
$currentTab.addClass('active');
}
loadMoreProducts() {
var ajax_url = razziData.ajax_url.toString().replace('%%endpoint%%', 'ra_elementor_load_products_grid');
// Load Products
this.elements.$container.on('click', 'a.ajax-load-products', function (e) {
e.preventDefault();
var $el = jQuery(this),
$settings = $el.closest('.tabs-panel').data('settings');
if ($el.hasClass('loading')) {
return;
}
$el.addClass('loading');
jQuery.post(
ajax_url,
{
page: $el.attr('data-page'),
settings: $settings
},
function (response) {
if (!response) {
return;
}
$el.removeClass('loading');
var $data = jQuery(response.data),
$products = $data.find('li.product'),
$container = $el.closest('.tabs-panel'),
$grid = $container.find('ul.products'),
$page_number = $data.find('.page-number').data('page');
// If has products
if ($products.length) {
$products.addClass('razziFadeInUp');
$grid.append($products);
if ($page_number == '0') {
$el.remove();
} else {
$el.attr('data-page', $page_number);
}
}
jQuery(document.body).trigger('razzi_products_loaded', [$products, true]);
}
);
});
};
onInit() {
var self = this;
super.onInit();
var $selector = this.elements.$container;
$selector.find('.tabs-nav').on('click', 'a', function (e) {
e.preventDefault();
self.getProductsAJAXHandler(jQuery(this), $selector);
});
self.loadMoreProducts();
}
}
class RazziDealsCarouselWidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-deals-carousel'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
getProductSwiperInit() {
const settings = this.getElementSettings();
var $wrapper = this.elements.$container.find('.razzi-deals-carousel__inner');
$wrapper.after('');
$wrapper.after('');
$wrapper.after('');
var options = {
loop: settings.infinite == 'yes' ? true : false,
autoplay: settings.autoplay == 'yes' ? true : false,
speed: settings.autoplay_speed ? settings.autoplay_speed : 500,
watchOverflow: true,
navigation: {
nextEl: this.elements.$container.find('.rz-swiper-button-next'),
prevEl: this.elements.$container.find('.rz-swiper-button-prev'),
},
pagination: {
el: this.elements.$container.find('.swiper-pagination'),
clickable: true
},
effect: settings.effect,
fadeEffect: {
crossFade: true
},
parallax: true,
on: {
init: function () {
this.$el.css('opacity', 1);
}
},
};
if ( 'yes' === settings.autoplay ) {
options.autoplay = {
delay: settings.delay ? settings.delay : 500
};
}
new Swiper(this.elements.$container.find('.linked-deals-carousel'), options);
}
onInit() {
var self = this;
super.onInit();
this.elements.$container.find('.razzi-countdown').rz_countdown();
self.getProductSwiperInit();
}
}
class RazziDealsCarousel2WidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-deals-carousel-2'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
getProductSwiperInit() {
const settings = this.getElementSettings();
var $wrapper = this.elements.$container.find('.razzi-deals-carousel-2__inner');
$wrapper.after('');
$wrapper.after('');
$wrapper.after('');
var options = {
loop: settings.infinite == 'yes' ? true : false,
autoplay: settings.autoplay == 'yes' ? true : false,
speed: settings.autoplay_speed ? settings.autoplay_speed : 500,
watchOverflow: true,
spaceBetween: 30,
navigation: {
nextEl: this.elements.$container.find('.rz-swiper-button-next'),
prevEl: this.elements.$container.find('.rz-swiper-button-prev'),
},
pagination: {
el: this.elements.$container.find('.swiper-pagination'),
clickable: true
},
on: {
init: function () {
this.$el.css('opacity', 1);
}
},
breakpoints: {
300: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : 1,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : 1,
spaceBetween: 15,
},
768: {
slidesPerView: settings.slidesToShow_tablet ? settings.slidesToShow_tablet : 2,
slidesPerGroup: settings.slidesToScroll_tablet ? settings.slidesToScroll_tablet : 2,
},
1024: {
slidesPerView: settings.slidesToShow > 5 ? 5 : settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll > 5 ? 5 : settings.slidesToScroll,
spaceBetween: 30
},
1366: {
slidesPerView: settings.slidesToShow > 6 ? 6 : settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll > 6 ? 6 : settings.slidesToScroll
},
1500: {
slidesPerView: settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll
}
}
};
if ( 'yes' === settings.autoplay ) {
options.autoplay = {
delay: settings.delay ? settings.delay : 500
};
}
new Swiper(this.elements.$container.find('.linked-deals-carousel'), options);
}
onInit() {
var self = this;
super.onInit();
this.elements.$container.find('.razzi-countdown').rz_countdown();
self.getProductSwiperInit();
}
}
class RazziProductsGridWidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-products-grid'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
loadProductsGrid() {
var ajax_url = razziData.ajax_url.toString().replace('%%endpoint%%', 'ra_elementor_load_products_grid');
const settings = this.getElementSettings();
// Load Products
this.elements.$container.on('click', 'a.ajax-load-products', function (e) {
e.preventDefault();
var $el = jQuery(this);
if ($el.hasClass('loading')) {
return;
}
$el.addClass('loading');
jQuery.post(
ajax_url,
{
page: $el.attr('data-page'),
settings: settings
},
function (response) {
if (!response) {
return;
}
$el.removeClass('loading');
var $data = jQuery(response.data),
$products = $data.find('li.product'),
$container = $el.closest('.razzi-products-grid'),
$grid = $container.find('ul.products'),
$page_number = $data.find('.page-number').data('page');
// If has products
if ($products.length) {
$products.addClass('razziFadeInUp');
$grid.append($products);
if ($page_number == '0') {
$el.remove();
} else {
$el.attr('data-page', $page_number);
}
}
jQuery(document.body).trigger('razzi_products_loaded', [$products, true]);
}
);
});
};
loadProductsPagination() {
// Load Products
this.elements.$container.on('click', '.woocommerce-pagination a', function (e) {
e.preventDefault();
var $el = jQuery(this),
$nav = $el.closest('.woocommerce-pagination'),
url = $el.attr('href'),
$products = $el.closest('.razzi-products-grid').find('ul.products');
$nav.addClass('loading');
jQuery.get(url, function (response) {
var $content = jQuery(response).find('.razzi-products-grid ul.products li.product'),
$navNew = jQuery(response).find('.razzi-products-grid .woocommerce-pagination');
$products.html($content);
$nav.replaceWith($navNew);
jQuery(document.body).trigger('razzi_products_loaded', [$content, true]);
$navNew.removeClass('loading');
});
});
}
loadProductsInfinite() {
if (!this.elements.$container.find('.ajax-load-products').hasClass('ajax-infinite')) {
return;
}
var $container = this.elements.$container;
jQuery(window).on('scroll', function () {
if ($container.find('.ajax-load-products').is(':in-viewport')) {
$container.find('.ajax-load-products').trigger('click');
}
}).trigger('scroll');
};
onInit() {
var self = this;
super.onInit();
self.loadProductsPagination();
self.loadProductsGrid();
self.loadProductsInfinite();
}
}
class RazziProductLoopHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: 'ul.products'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
getProductLoopHoverSlider() {
var $selector = this.elements.$container.find('.product-thumbnails--slider'),
options = {
loop: false,
autoplay: false,
speed: 800,
watchOverflow: true,
lazy: true,
breakpoints: {}
};
$selector.find('.woocommerce-loop-product__link').addClass('swiper-slide');
$selector.imagesLoaded(function () {
setTimeout(function () {
$selector.each(function () {
options.navigation = {
nextEl: jQuery(this).find('.rz-product-loop-swiper-next'),
prevEl: jQuery(this).find('.rz-product-loop-swiper-prev'),
}
new Swiper(jQuery(this), options);
});
}, 200);
});
}
getProductLoopHover () {
if (! this.elements.$container.hasClass('product-loop-layout-8')) {
return;
}
this.elements.$container.on('mouseover', '.product-inner', function () {
if (jQuery(this).hasClass('has-transform')) {
return;
}
if (jQuery(this).closest('ul.products').hasClass('shortcode-element')) {
return;
}
var $product_bottom = jQuery(this).find('.product-loop__buttons'),
product_bottom_height = $product_bottom.outerHeight(),
$product_summary = jQuery(this).find('.product-summary');
jQuery(this).addClass('has-transform');
$product_summary.css({
'-webkit-transform': "translateY(-" + product_bottom_height + "px)",
'transform': "translateY(-" + product_bottom_height + "px)"
});
});
};
onInit() {
super.onInit();
if (!this.$element.closest('body').hasClass('elementor-editor-active')) {
return;
}
this.getProductLoopHoverSlider();
this.getProductLoopHover();
}
}
class RazziProductsRecentlyViewedWidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-products-recently-viewed-carousel'
},
};
}
getDefaultElements() {
const selectors = this.getSettings( 'selectors' );
return {
$container: this.$element.find( selectors.container )
};
}
hoverInforProduct () {
var self = this,
$selector = self.elements.$container,
$product = $selector.find('li.product');
$product.on('mousemove', function(e){
var el = jQuery(this),
left = e.pageX - el.offset().left + 10,
top = e.pageY - el.offset().top + 10;
el.find('.product-infor')
.show()
.css({ left: left, top: top });
}).on('mouseout', function(){
jQuery(this).find('.product-infor').hide();
});
}
getSwiperOption(){
const settings = this.getElementSettings();
const selector = this.elements.$container;
const breakpoints = elementorFrontend.config.breakpoints;
var $products = selector.find( 'ul.products' );
if( selector.find( '.no-products' ).length ) {
return;
}
$products.addClass( 'swiper-wrapper' );
$products.find( 'li.product' ).addClass( 'swiper-slide' );
const options = {
loop : 'yes' === settings.infinite,
autoplay : 'yes' === settings.autoplay,
speed : settings.autoplay_speed,
watchOverflow : true,
navigation : {
nextEl: selector.find('.rz-swiper-button-next'),
prevEl: selector.find('.rz-swiper-button-prev'),
},
scrollbar : {
el: selector.find('.swiper-scrollbar'),
hide: false,
draggable: true
},
pagination: {
el: selector.find('.swiper-pagination'),
type: 'bullets',
clickable: true
},
spaceBetween : 30,
on : {
init: function() {
selector.css( 'opacity', 1 );
}
},
breakpoints : {}
};
if ( 'yes' === settings.autoplay ) {
options.autoplay = {
delay: settings.delay
};
}
options.breakpoints[breakpoints.xs] = { slidesPerView: settings.slidesToShow_mobile, slidesPerGroup: settings.slidesToScroll_mobile };
options.breakpoints[breakpoints.md] = { slidesPerView: settings.slidesToShow_tablet, slidesPerGroup: settings.slidesToScroll_tablet };
options.breakpoints[breakpoints.lg] = { slidesPerView: settings.slidesToShow, slidesPerGroup: settings.slidesToScroll };
return options;
}
getSwiperInit() {
new Swiper( this.elements.$container.find('.products-content'), this.getSwiperOption() );
}
/**
* Get Product AJAX
*/
getProductsHandler () {
var self = this,
$selector = self.elements.$container;
if ($selector.hasClass('loaded')) {
return;
}
var elementSettings = $selector.data('settings');
if( elementSettings.load_ajax != 'yes' ){
self.hoverInforProduct();
self.getSwiperInit();
return;
}
jQuery(window).on('scroll', function () {
if (jQuery(document.body).find('.razzi-products-recently-viewed-carousel').is(':in-viewport')) {
self.getProductsAJAXHandler();
}
}).trigger('scroll');
};
getProductsAJAXHandler () {
var self = this,
$selector = self.elements.$container;
if ($selector.hasClass('loaded')) {
return;
}
if ($selector.data('requestRunning')) {
return;
}
$selector.data('requestRunning', true);
var elementSettings = $selector.data('settings'),
ajax_url = razziData.ajax_url.toString().replace('%%endpoint%%', 'ra_elementor_load_recently_viewed_products');
jQuery.post(
ajax_url,
{
settings: elementSettings
},
function (response) {
if (!response) {
return;
}
var $content = jQuery(response.data).children('li.product');
$selector.find('.products-content').html(response.data);
if ($selector.find('.product-list').hasClass('no-products')) {
$selector.addClass('no-products');
}
self.hoverInforProduct();
self.getSwiperInit();
$selector.addClass('loaded');
$selector.data('requestRunning', false);
jQuery(document.body).trigger('razzi_products_loaded', [$content, true]);
}
);
};
onInit() {
super.onInit();
this.getProductsHandler();
}
}
class RazziProductsRecentlyViewedWidgetGridHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-products-recently-viewed-grid'
},
};
}
getDefaultElements() {
const selectors = this.getSettings( 'selectors' );
return {
$container: this.$element.find( selectors.container )
};
}
hoverInforProduct () {
var self = this,
$selector = self.elements.$container,
$product = $selector.find('li.product');
$product.on('mousemove', function(e){
var el = jQuery(this),
left = e.pageX - el.offset().left + 10,
top = e.pageY - el.offset().top + 10;
el.find('.product-infor')
.show()
.css({ left: left, top: top });
}).on('mouseout', function(){
jQuery(this).find('.product-infor').hide();
});
}
resetCookie () {
var $selector = this.elements.$container;
$selector.on('click', '.reset-button' , function(e){
e.preventDefault();
document.cookie = "woocommerce_recently_viewed=null;expires=365;path=/";
jQuery(this).closest('.razzi-products-recently-viewed-grid').removeClass('has-products').find('.products-content, .woocommerce-pagination').remove();
});
}
onInit() {
super.onInit();
this.hoverInforProduct();
this.resetCookie();
}
}
class RazziProductsCarouselWithThumbnailsWidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-products-carousel-with-thumbnails'
},
};
}
getDefaultElements() {
const selectors = this.getSettings( 'selectors' );
return {
$container: this.$element.find( selectors.container )
};
}
hoverProduct () {
var self = this,
$selector = self.elements.$container,
$product = $selector.find('li.product'),
on_mobile = false;
if (! $selector.find('ul.products').hasClass('product-loop-layout-8')) {
return;
}
jQuery(window).on('resize', function () {
if (jQuery(window).width() < 992) {
on_mobile = true;
} else {
on_mobile = false;
}
}).trigger('resize');
$product.on('mouseover', '.product-inner', function () {
var $this = jQuery(this);
if (on_mobile) {
return;
}
if ($this.hasClass('has-transform')) {
return;
}
var $product_bottom = $this.find('.product-loop__buttons'),
product_bottom_height = $product_bottom.outerHeight(),
$product_summary = $this.find('.product-summary');
$this.addClass('has-transform');
$product_summary.css({
'-webkit-transform': "translateY(-" + product_bottom_height + "px)",
'transform': "translateY(-" + product_bottom_height + "px)"
});
});
}
getProductSwiperInit() {
const settings = this.getElementSettings();
var $products = this.elements.$container.find('ul.products');
$products.wrap('');
$products.addClass('swiper-wrapper');
$products.find('li.product').addClass('swiper-slide');
$products.after('');
$products.after('');
$products.after('');
var options = {
watchOverflow: true,
loop: settings.infinite == 'yes' ? true : false,
autoplay: settings.autoplay == 'yes' ? true : false,
speed: settings.speed,
spaceBetween: 30,
navigation: {
nextEl: this.elements.$container.find('.rz-swiper-button-next'),
prevEl: this.elements.$container.find('.rz-swiper-button-prev'),
},
pagination: {
el: this.elements.$container.find('.swiper-pagination'),
clickable: true
},
on: {
init: function () {
this.$el.css('opacity', 1);
}
},
breakpoints: {
300: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : razziData.mobile_portrait,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : razziData.mobile_portrait,
spaceBetween: 15,
},
480: {
slidesPerView: settings.slidesToShow_tablet ? settings.slidesToShow_tablet : 2,
slidesPerGroup: settings.slidesToScroll_tablet ? settings.slidesToScroll_tablet : 2,
spaceBetween: 15,
},
768: {
slidesPerView: settings.slidesToShow_tablet ? settings.slidesToShow_tablet : 2,
slidesPerGroup: settings.slidesToScroll_tablet ? settings.slidesToScroll_tablet : 2,
},
1024: {
slidesPerView: settings.slidesToShow > 3 ? 3 : settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll > 3 ? 3 : settings.slidesToScroll,
spaceBetween: 30
},
}
};
new Swiper(this.elements.$container.find('.linked-elementor-product-carousel'), options);
}
onInit() {
super.onInit();
this.hoverProduct();
this.getProductSwiperInit();
}
}
class RazziProductsSliderWidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-products-slider'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
getProductSwiperInit() {
const settings = this.getElementSettings();
var options = {
watchOverflow: true,
navigation: {
nextEl: this.elements.$container.find('.rz-swiper-button-next'),
prevEl: this.elements.$container.find('.rz-swiper-button-prev'),
},
pagination: {
el: this.elements.$container.find('.swiper-pagination'),
clickable: true
},
loop: settings.infinite == 'yes' ? true : false,
autoplay: settings.autoplay == 'yes' ? true : false,
speed: settings.speed,
};
new Swiper(this.elements.$container.find('.razzi-products-slider__wrapper'), options);
}
onInit() {
var self = this;
super.onInit();
self.getProductSwiperInit();
}
}
class RazziProductsListingWidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-products-listing'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
getProductSwiperInit() {
const settings = this.getElementSettings();
var $products = this.elements.$container.find('ul.products');
$products.wrap('');
$products.addClass('swiper-wrapper');
$products.find('li.product').addClass('swiper-slide');
$products.after('');
$products.after('');
var options = {
watchOverflow: true,
loop: settings.infinite == 'yes' ? true : false,
autoplay: settings.autoplay == 'yes' ? true : false,
speed: settings.speed,
spaceBetween: 30,
slidesPerColumnFill: 'row',
navigation: {
nextEl: this.elements.$container.find('.rz-swiper-button-next'),
prevEl: this.elements.$container.find('.rz-swiper-button-prev'),
},
pagination: {
el: this.elements.$container.find('.swiper-pagination'),
clickable: true
},
scrollbar: {
el: '.swiper-scrollbar',
hide: false,
draggable: true
},
on: {
init: function () {
this.$el.css('opacity', 1);
}
},
breakpoints: {
300: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : 1,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : 1,
slidesPerColumn: settings.slidesRows_mobile ? settings.slidesRows_mobile : settings.slidesRows,
spaceBetween: 15
},
480: {
slidesPerView: settings.slidesToShow_mobile ? settings.slidesToShow_mobile : 1,
slidesPerGroup: settings.slidesToScroll_mobile ? settings.slidesToScroll_mobile : 1,
slidesPerColumn: settings.slidesRows_mobile ? settings.slidesRows_mobile : settings.slidesRows,
spaceBetween: 15,
},
768: {
slidesPerView: settings.slidesToShow_tablet ? settings.slidesToShow_tablet : 2,
slidesPerGroup: settings.slidesToScroll_tablet ? settings.slidesToScroll_tablet : 2,
spaceBetween: 15,
slidesPerColumn: settings.slidesRows_tablet ? settings.slidesRows_tablet : settings.slidesRows,
},
1024: {
slidesPerView: settings.slidesToShow > 5 ? 5 : settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll > 5 ? 5 : settings.slidesToScroll,
spaceBetween: 15,
slidesPerColumn: settings.slidesRows,
},
1366: {
slidesPerView: settings.slidesToShow > 6 ? 6 : settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll > 6 ? 6 : settings.slidesToScroll,
slidesPerColumn: settings.slidesRows,
},
1500: {
slidesPerView: settings.slidesToShow,
slidesPerGroup: settings.slidesToScroll,
slidesPerColumn: settings.slidesRows,
}
}
};
new Swiper(this.elements.$container.find('.linked-elementor-product-carousel'), options);
}
addClassProductLoopLayout() {
var $products = this.elements.$container.find('ul.products');
if ( ! $products.hasClass( 'product-loop-layout-5' ) && ! $products.hasClass( 'product-loop-layout-6' ) ) {
return;
}
$products.closest( '.woocommerce' ).addClass( 'product-loop-outsite' );
}
onInit() {
var self = this;
super.onInit();
self.getProductSwiperInit();
self.addClassProductLoopLayout();
}
}
class RazziProductsListing2WidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
container: '.razzi-products-listing-2'
},
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$container: this.$element.find(selectors.container)
};
}
getFlexSliderInit() {
var self = this;
if (!self.$element.closest('body').hasClass('elementor-editor-active')) {
return;
}
const options = {
selector: '.woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image',
allowOneSlide: false,
animation: "slide",
animationLoop: false,
controlNav: "thumbnails",
animationSpeed: 500,
directionNav: false,
rtl: false,
slideshow: false,
smoothHeight: true,
start: function () {
self.elements.$container.find('.woocommerce-product-gallery').css('opacity', 1);
},
};
this.elements.$container.find('.woocommerce-product-gallery').flexslider(options);
}
getProductSwiperInit() {
const settings = this.getElementSettings();
var $products = this.elements.$container.find('.razzi-products-listing__items');
$products.wrap('');
$products.addClass('swiper-wrapper');
$products.find('.product-item').addClass('swiper-slide');
$products.after('');
var options = {
slidesPerView: 1,
slidesPerGroup: 1,
watchOverflow: true,
navigation: {
nextEl: this.elements.$container.find('.rz-swiper-button-next'),
prevEl: this.elements.$container.find('.rz-swiper-button-prev'),
},
pagination: {
el: this.elements.$container.find('.swiper-pagination'),
clickable: true
},
on: {
init: function () {
this.$el.css('opacity', 1);
}
},
};
new Swiper(this.elements.$container.find('.linked-elementor-product-carousel'), options);
}
getSwiperInit() {
var $thumbnail = this.elements.$container.find('.flex-control-thumbs');
$thumbnail.wrap('');
$thumbnail.addClass('swiper-wrapper');
$thumbnail.find('li').addClass('swiper-slide');
$thumbnail.after('');
$thumbnail.after('');
jQuery('li', $thumbnail).append('');
var options = {
slidesPerView: 4,
slidesPerGroup: 1,
watchOverflow: true,
navigation: {
nextEl: this.elements.$container.find('.rz-gallery-button-next'),
prevEl: this.elements.$container.find('.rz-gallery-button-prev'),
},
};
new Swiper(this.elements.$container.find('.linked-gallery-carousel'), options);
}
onInit() {
var self = this;
super.onInit();
self.getProductSwiperInit();
this.elements.$container.imagesLoaded(function () {
setTimeout(function () {
self.getFlexSliderInit();
self.getSwiperInit();
}, 200);
});
}
}
class RazziProductBrandsWidgetHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
list: '.razzi-product-brands .razzi-product-brands__product-list'
},
};
}
getDefaultElements() {
const selectors = this.getSettings( 'selectors' );
return {
$list: this.$element.find( selectors.list )
};
}
getCarouselOptions() {
return {
slidesPerView: 2,
slidesPerGroup: 1,
watchOverflow: true,
spaceBetween: 20
};
}
onInit() {
super.onInit();
var carouselOptions = this.getCarouselOptions();
this.elements.$list.each( function() {
var $list = jQuery( this );
carouselOptions.navigation = {
nextEl: $list.find('.rz-swiper-button-next'),
prevEl: $list.find('.rz-swiper-button-prev'),
};
new Swiper( $list.find( '.razzi-product-brands__product-container' ), carouselOptions );
} );
}
}
jQuery(window).on('elementor/frontend/init', () => {
elementorFrontend.hooks.addAction('frontend/element_ready/widget', ($element) => {
elementorFrontend.elementsHandler.addHandler(RazziProductLoopHandler, {$element});
});
elementorFrontend.hooks.addAction('frontend/element_ready/razzi-product-shortcode.default', ($element) => {
elementorFrontend.elementsHandler.addHandler(RazziProductShortcodeWidgetHandler, {$element});
});
elementorFrontend.hooks.addAction('frontend/element_ready/razzi-products-masonry.default', ($element) => {
elementorFrontend.elementsHandler.addHandler(RazziProductsMasonryWidgetHandler, {$element});
});
elementorFrontend.hooks.addAction('frontend/element_ready/razzi-products-deal.default', ($element) => {
elementorFrontend.elementsHandler.addHandler(RazziProductsDealWidgetHandler, {$element});
});
elementorFrontend.hooks.addAction('frontend/element_ready/razzi-products-deal-2.default', ($element) => {
elementorFrontend.elementsHandler.addHandler(RazziProductsDeal2WidgetHandler, {$element});
});
elementorFrontend.hooks.addAction('frontend/element_ready/razzi-products-deal-3.default', ($element) => {
elementorFrontend.elementsHandler.addHandler(RazziProductsDeal3WidgetHandler, {$element});
});
elementorFrontend.hooks.addAction('frontend/element_ready/razzi-products-showcase.default', ($element) => {
elementorFrontend.elementsHandler.addHandler(RazziProductsShowcaseWidgetHandler, {$element});
});
elementorFrontend.hooks.addAction('frontend/element_ready/razzi-product-carousel.default', ($element) => {
elementorFrontend.elementsHandler.addHandler(RazziProductsCarouselWidgetHandler, {$element});
});
elementorFrontend.hooks.addAction('frontend/element_ready/razzi-product-of-category.default', ($element) => {
elementorFrontend.elementsHandler.addHandler(RazziProductOfCategoryWidgetHandler, {$element});
});
elementorFrontend.hooks.addAction('frontend/element_ready/razzi-product-category-tabs.default', ($element) => {
elementorFrontend.elementsHandler.addHandler(RazziProductsCategorytabsWidgetHandler, {$element});
});
elementorFrontend.hooks.addAction('frontend/element_ready/razzi-product-tab.default', ($element) => {
elementorFrontend.elementsHandler.addHandler(RazziProductstabWidgetHandler, {$element});
});
elementorFrontend.hooks.addAction('frontend/element_ready/razzi-product-tab-grid.default', ($element) => {
elementorFrontend.elementsHandler.addHandler(RazziProductstabGridWidgetHandler, {$element});
});
elementorFrontend.hooks.addAction('frontend/element_ready/razzi-deals-carousel.default', ($element) => {
elementorFrontend.elementsHandler.addHandler(RazziDealsCarouselWidgetHandler, {$element});
});
elementorFrontend.hooks.addAction('frontend/element_ready/razzi-deals-carousel-2.default', ($element) => {
elementorFrontend.elementsHandler.addHandler(RazziDealsCarousel2WidgetHandler, {$element});
});
elementorFrontend.hooks.addAction('frontend/element_ready/razzi-products-grid.default', ($element) => {
elementorFrontend.elementsHandler.addHandler(RazziProductsGridWidgetHandler, {$element});
});
elementorFrontend.hooks.addAction( 'frontend/element_ready/razzi-products-recently-viewed-carousel.default', ( $element ) => {
elementorFrontend.elementsHandler.addHandler( RazziProductsRecentlyViewedWidgetHandler, { $element } );
} );
elementorFrontend.hooks.addAction( 'frontend/element_ready/razzi-products-recently-viewed-grid.default', ( $element ) => {
elementorFrontend.elementsHandler.addHandler( RazziProductsRecentlyViewedWidgetGridHandler, { $element } );
} );
elementorFrontend.hooks.addAction( 'frontend/element_ready/razzi-products-carousel-with-thumbnails.default', ( $element ) => {
elementorFrontend.elementsHandler.addHandler( RazziProductsCarouselWithThumbnailsWidgetHandler, { $element } );
} );
elementorFrontend.hooks.addAction( 'frontend/element_ready/razzi-products-slider.default', ( $element ) => {
elementorFrontend.elementsHandler.addHandler( RazziProductsSliderWidgetHandler, { $element } );
} );
elementorFrontend.hooks.addAction( 'frontend/element_ready/razzi-products-listing.default', ( $element ) => {
elementorFrontend.elementsHandler.addHandler( RazziProductsListingWidgetHandler, { $element } );
} );
elementorFrontend.hooks.addAction( 'frontend/element_ready/razzi-products-listing-2.default', ( $element ) => {
elementorFrontend.elementsHandler.addHandler( RazziProductsListing2WidgetHandler, { $element } );
} );
elementorFrontend.hooks.addAction( 'frontend/element_ready/razzi-product-brands.default', ( $element ) => {
elementorFrontend.elementsHandler.addHandler( RazziProductBrandsWidgetHandler, { $element } );
} );
});