You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
252 lines
7.1 KiB
252 lines
7.1 KiB
/* global woodmart_settings */
|
|
(function($) {
|
|
$.each([
|
|
'frontend/element_ready/wd_slider.default'
|
|
], function(index, value) {
|
|
woodmartThemeModule.wdElementorAddAction(value, function() {
|
|
woodmartThemeModule.sliderAnimations();
|
|
woodmartThemeModule.carouselInitFlickity();
|
|
woodmartThemeModule.sliderLazyLoad();
|
|
});
|
|
});
|
|
|
|
woodmartThemeModule.$document.on('wdShopPageInit', function() {
|
|
woodmartThemeModule.sliderAnimations();
|
|
woodmartThemeModule.carouselInitFlickity();
|
|
woodmartThemeModule.sliderLazyLoad();
|
|
});
|
|
|
|
woodmartThemeModule.sliderClearAnimations = function($active, firstLoad) {
|
|
// WPB clear on first load first slide.
|
|
if (firstLoad) {
|
|
$active.find('[class*="wpb_animate"]').each(function() {
|
|
var $this = $(this);
|
|
var classes = $this.attr('class').split(' ');
|
|
var name;
|
|
|
|
for (var index = 0; index < classes.length; index++) {
|
|
if (classes[index].indexOf('wd-anim-name_') >= 0) {
|
|
name = classes[index].split('_')[1];
|
|
}
|
|
}
|
|
|
|
$this.removeClass('wpb_start_animation animated').removeClass(name);
|
|
});
|
|
}
|
|
|
|
// WPB clear all siblings slides.
|
|
$active.siblings().find('[class*="wpb_animate"]').each(function() {
|
|
var $this = $(this);
|
|
var classes = $this.attr('class').split(' ');
|
|
var delay = 0;
|
|
var name;
|
|
|
|
for (var index = 0; index < classes.length; index++) {
|
|
if (classes[index].indexOf('wd-anim-delay_') >= 0) {
|
|
delay = parseInt(classes[index].split('_')[1]);
|
|
}
|
|
|
|
if (classes[index].indexOf('wd-anim-name_') >= 0) {
|
|
name = classes[index].split('_')[1];
|
|
}
|
|
}
|
|
|
|
setTimeout(function() {
|
|
$this.removeClass('wpb_start_animation animated').removeClass(name);
|
|
}, delay);
|
|
});
|
|
};
|
|
|
|
woodmartThemeModule.sliderAnimations = function() {
|
|
$('.wd-slider').each(function() {
|
|
var $carousel = $(this);
|
|
|
|
$carousel.find('[class*="wd-animation"]').each(function() {
|
|
$(this).addClass('wd-animation-ready');
|
|
});
|
|
|
|
runAnimations(0, true);
|
|
|
|
$carousel.on('change.flickity', function(event, index) {
|
|
runAnimations(index, false);
|
|
});
|
|
|
|
function runAnimations(slideIndex, firstLoad) {
|
|
var $active = $carousel.find('.wd-slide').eq(slideIndex);
|
|
|
|
woodmartThemeModule.sliderClearAnimations($active, firstLoad);
|
|
woodmartThemeModule.runAnimations($active, firstLoad);
|
|
}
|
|
});
|
|
};
|
|
|
|
woodmartThemeModule.runAnimations = function($active, firstLoad) {
|
|
// Elementor.
|
|
$active.siblings().find('[class*="wd-animation"]').removeClass('wd-animated');
|
|
|
|
$active.find('[class*="wd-animation"]').each(function() {
|
|
var $this = $(this);
|
|
var classes = $this.attr('class').split(' ');
|
|
var delay = 0;
|
|
|
|
for (var index = 0; index < classes.length; index++) {
|
|
if (classes[index].indexOf('wd_delay_') >= 0) {
|
|
delay = parseInt(classes[index].split('_')[2]);
|
|
}
|
|
}
|
|
|
|
if (firstLoad) {
|
|
delay += 500;
|
|
}
|
|
|
|
setTimeout(function() {
|
|
$this.addClass('wd-animated');
|
|
}, delay);
|
|
});
|
|
|
|
// WPB.
|
|
$active.find('[class*="wpb_animate"]').each(function() {
|
|
var $this = $(this);
|
|
var classes = $this.attr('class').split(' ');
|
|
var delay = 0;
|
|
var name;
|
|
|
|
for (var index = 0; index < classes.length; index++) {
|
|
if (classes[index].indexOf('wd-anim-delay_') >= 0) {
|
|
delay = parseInt(classes[index].split('_')[1]);
|
|
}
|
|
|
|
if (classes[index].indexOf('wd-anim-name_') >= 0) {
|
|
name = classes[index].split('_')[1];
|
|
}
|
|
}
|
|
|
|
if (firstLoad) {
|
|
delay += 500;
|
|
}
|
|
|
|
setTimeout(function() {
|
|
$this.removeClass('wd-off-anim').addClass('wpb_start_animation animated').addClass(name);
|
|
}, delay);
|
|
});
|
|
};
|
|
|
|
woodmartThemeModule.sliderLazyLoad = function() {
|
|
woodmartThemeModule.$window.on('wdEventStarted', function() {
|
|
$('.wd-slider').each(function() {
|
|
load(0, $(this));
|
|
});
|
|
});
|
|
|
|
$('.wd-slider').on('change.flickity', function(event, index) {
|
|
load(index, $(this));
|
|
});
|
|
|
|
function load(index, $slider) {
|
|
var active = $slider.find('.wd-slide').eq(index);
|
|
var $els = $slider.find('[id="' + active.attr('id') + '"]');
|
|
|
|
$slider.find('.wd-slide').eq(index + 1).addClass('woodmart-loaded');
|
|
active.addClass('woodmart-loaded');
|
|
|
|
$els.each(function() {
|
|
$(this).addClass('woodmart-loaded');
|
|
});
|
|
}
|
|
};
|
|
|
|
woodmartThemeModule.carouselInitFlickity = function() {
|
|
if (woodmartThemeModule.$body.hasClass('single-woodmart_slide')) {
|
|
return;
|
|
}
|
|
|
|
$('.wd-slider-wrapper:not(.scroll-init)').each(function() {
|
|
init($(this));
|
|
});
|
|
|
|
if (typeof ($.fn.waypoint) != 'undefined') {
|
|
$('.wd-slider-wrapper.scroll-init').waypoint(function() {
|
|
var $this = $($(this)[0].element);
|
|
init($this);
|
|
}, {
|
|
offset: '100%'
|
|
});
|
|
}
|
|
|
|
function init($carousel) {
|
|
if (woodmartThemeModule.windowWidth <= 1024 && $carousel.hasClass('disable-owl-mobile')) {
|
|
return;
|
|
}
|
|
|
|
var loop = true;
|
|
|
|
// Fix fade glitch with two slide.
|
|
if (($carousel.hasClass('anim-fade') || $carousel.hasClass('anim-parallax')) && $carousel.find('.wd-slide').length <= 2) {
|
|
loop = false;
|
|
}
|
|
|
|
var config = {
|
|
contain : true,
|
|
percentPosition : true,
|
|
cellAlign : 'left',
|
|
rightToLeft : woodmartThemeModule.$body.hasClass('rtl'),
|
|
pageDots : 'yes' !== $carousel.data('hide_pagination_control'),
|
|
prevNextButtons : 'yes' !== $carousel.data('hide_prev_next_buttons'),
|
|
autoPlay : 'yes' !== $carousel.data('autoplay') ? false : parseInt($carousel.data('speed')),
|
|
pauseAutoPlayOnHover: 'yes' !== $carousel.data('autoplay'),
|
|
adaptiveHeight : true,
|
|
imagesLoaded : true,
|
|
wrapAround : loop,
|
|
fade : $carousel.hasClass('anim-fade'),
|
|
on : {
|
|
ready: function() {
|
|
setTimeout(function() {
|
|
woodmartThemeModule.$document.trigger('wdCarouselFlickityInited');
|
|
}, 100);
|
|
}
|
|
}
|
|
};
|
|
|
|
$carousel.find('.wd-slider').flickity(config);
|
|
|
|
setTimeout(function() {
|
|
$carousel.find('.wd-slider').addClass('wd-enabled');
|
|
}, 100);
|
|
|
|
$carousel.find('.wd-slider').on('dragStart.flickity', function() {
|
|
$carousel.find('.wd-slider').addClass('wd-dragging');
|
|
});
|
|
|
|
$carousel.find('.wd-slider').on('dragEnd.flickity', function() {
|
|
$carousel.find('.wd-slider').removeClass('wd-dragging');
|
|
});
|
|
|
|
if ($carousel.hasClass('anim-parallax')) {
|
|
var flkty = $carousel.find('.wd-slider').data('flickity');
|
|
var $imgs = $carousel.find('.wd-slide .wd-slide-bg');
|
|
|
|
$carousel.find('.wd-slider').on('scroll.flickity', function() {
|
|
flkty.slides.forEach(function(e, i) {
|
|
var img = $imgs[i];
|
|
|
|
var x = 0 === i
|
|
? Math.abs(flkty.x) > flkty.slidesWidth
|
|
? flkty.slidesWidth + flkty.x + flkty.slides[flkty.slides.length - 1].outerWidth + e.target
|
|
: e.target + flkty.x
|
|
: i === flkty.slides.length - 1 && Math.abs(flkty.x) + flkty.slides[i].outerWidth < flkty.slidesWidth
|
|
? e.target - flkty.slidesWidth + flkty.x - flkty.slides[i].outerWidth
|
|
: e.target + flkty.x;
|
|
|
|
img.style.transform = 'translateX( ' + -.5 * x + 'px)';
|
|
});
|
|
});
|
|
}
|
|
}
|
|
};
|
|
|
|
$(document).ready(function() {
|
|
woodmartThemeModule.sliderAnimations();
|
|
woodmartThemeModule.carouselInitFlickity();
|
|
woodmartThemeModule.sliderLazyLoad();
|
|
});
|
|
})(jQuery);
|
|
|