From 07159f2227661ac618da48db11f9274a078ba420 Mon Sep 17 00:00:00 2001 From: Campii <dominik.chrzanowski183@gmail.com> Date: Thu, 14 Jul 2022 13:24:40 +0200 Subject: [PATCH] refactor: code refactor [CustomerReviewsSlider] quiqqer/package-bricks#134 --- bin/Controls/Slider/CustomerReviewsSlider.js | 56 +++++++++++++++----- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/bin/Controls/Slider/CustomerReviewsSlider.js b/bin/Controls/Slider/CustomerReviewsSlider.js index 138cb35..a853648 100644 --- a/bin/Controls/Slider/CustomerReviewsSlider.js +++ b/bin/Controls/Slider/CustomerReviewsSlider.js @@ -10,7 +10,6 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [ 'qui/controls/Control', URL_OPT_DIR + 'bin/quiqqer-asset/glidejs-glide/@glidejs/glide/dist/glide.js', 'css!' + URL_OPT_DIR + 'bin/quiqqer-asset/glidejs-glide/@glidejs/glide/dist/css/glide.core.css', - // 'css!' + URL_OPT_DIR + 'bin/quiqqer-asset/glidejs-glide/@glidejs/glide/dist/css/glide.theme.css' ], function (QUI, QUIControl, Glide) { "use strict"; @@ -52,12 +51,18 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [ var autoplay = this.getAttribute('autoplay'); var sliderHeight = this.getAttribute('height'); var perView = this.getAttribute('perview'); + var self = this; this.glideTrack = document.querySelector('.customerReviewsSlider-track'); var options = { type: 'carousel', - perView: perView + perView: perView, + breakpoints: { + 768: { + perView: 1 + } + } }; if (delay >= 1000 && autoplay == true) { @@ -66,6 +71,10 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [ var glide = new Glide('.glide', options); + glide.on('build.after', function () { + self.showSlider(); + }); + if (sliderHeight === 'variable') { this.sliderHandleHeight(glide); } @@ -82,31 +91,31 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [ // Automated height on Carousel build glide.on('build.after', function () { - self.showSlider(); self.setSliderHeight(); }); // Automated height on Carousel change glide.on('run.before', function (e) { - self.changeSliderHeight(e.direction); + self.changeSliderHeight(e.direction, e.steps); }); } }, showSlider: function () { - var Wrapper = document.querySelector('.customerReviewsSlider-track'); - Wrapper.style.opacity = 1; + var Track = document.querySelector('.customerReviewsSlider-track'); + Track.style.opacity = 1; }, - changeSliderHeight: function (direction) { + changeSliderHeight: function (direction, steps) { var activeSlide = document.querySelector('.glide__slide--active'); var actvieSlideWidth = activeSlide.offsetWidth; var glideTrackWidth = this.glideTrack.offsetWidth; var howMany = Math.round(glideTrackWidth/actvieSlideWidth); - var slides = this.getSlides(howMany, direction); + var slides = this.getSlides(howMany, direction, steps); + var highestSlide = this.getHeight(slides); var glideTrackHeight = this.glideTrack.offsetHeight; @@ -135,18 +144,18 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [ } }, - getSlides: function (howMany, direction = null) { + getSlides: function (howMany, direction = null, steps = null) { var i = 0; var Slider = document.querySelector('.customerReviewsSlider-slider'); - var SliderChildren = Slider.children; - var len = SliderChildren.length; + var sliderChildren = Slider.children; + var len = sliderChildren.length; var activeSlideIndex = null; var firstNewIndex = null; var lastNewIndex = null; var visibleSlides = []; for (i; i<len; i++) { - if (SliderChildren[i].className.includes('glide__slide--active')) { + if (sliderChildren[i].className.includes('glide__slide--active')) { activeSlideIndex = i; break; } @@ -162,13 +171,34 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [ lastNewIndex = firstNewIndex + this.getAttribute('perview') - 1; //change to preView option } + if (direction === "=") { + + var j = 0; + + for (i = 0; i < sliderChildren.length; i++) { + if (sliderChildren[i].className.includes('glide__slide--clone')) { + continue; + } + + steps = parseInt(steps); + + if (j === steps) { + firstNewIndex = i; + lastNewIndex = firstNewIndex + this.getAttribute('perview') - 1; + break; + } + + j++; + } + } + if (direction === null) { firstNewIndex = activeSlideIndex; lastNewIndex = firstNewIndex + this.getAttribute('perview') - 1; //change to preView option } for (i = firstNewIndex; i<=lastNewIndex; i++) { - visibleSlides.push(SliderChildren[i]); + visibleSlides.push(sliderChildren[i]); } return visibleSlides; -- GitLab