Skip to content
Code-Schnipsel Gruppen Projekte
Commit b4da35f2 erstellt von Dominik Chrzanowski's avatar Dominik Chrzanowski
Dateien durchsuchen

refactor: code refactor [CustomerReviewsSlider] #134

Übergeordneter 43ce1af7
No related branches found
No related tags found
Keine zugehörigen Merge Requests gefunden
...@@ -10,7 +10,7 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [ ...@@ -10,7 +10,7 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [
'qui/controls/Control', 'qui/controls/Control',
URL_OPT_DIR + 'bin/quiqqer-asset/glidejs-glide/@glidejs/glide/dist/glide.js', 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.core.css',
'css!' + URL_OPT_DIR + 'bin/quiqqer-asset/glidejs-glide/@glidejs/glide/dist/css/glide.theme.css' // 'css!' + URL_OPT_DIR + 'bin/quiqqer-asset/glidejs-glide/@glidejs/glide/dist/css/glide.theme.css'
], function (QUI, QUIControl, Glide) { ], function (QUI, QUIControl, Glide) {
"use strict"; "use strict";
...@@ -31,8 +31,11 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [ ...@@ -31,8 +31,11 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [
delay: 5000, delay: 5000,
height: 'const', height: 'const',
autoplay: false, autoplay: false,
perview: 1
}, },
glideTrack: null,
initialize: function (options) { initialize: function (options) {
this.parent(options); this.parent(options);
...@@ -48,10 +51,13 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [ ...@@ -48,10 +51,13 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [
var delay = this.getAttribute('delay'); var delay = this.getAttribute('delay');
var autoplay = this.getAttribute('autoplay'); var autoplay = this.getAttribute('autoplay');
var sliderHeight = this.getAttribute('height'); var sliderHeight = this.getAttribute('height');
var perView = this.getAttribute('perview');
this.glideTrack = document.querySelector('.customerReviewsSlider-track');
var options = { var options = {
type: 'carousel', type: 'carousel',
perView: 1, perView: perView
}; };
if (delay >= 1000 && autoplay == true) { if (delay >= 1000 && autoplay == true) {
...@@ -70,13 +76,13 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [ ...@@ -70,13 +76,13 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [
sliderHandleHeight: function (glide) { sliderHandleHeight: function (glide) {
var self = this; var self = this;
var GlideElem = document.querySelector('.customerReviewsSlider-slider-wrapper'); var GlideElem = document.querySelector('.customerReviewsSlider-slider-wrapper');
if (GlideElem) { if (GlideElem) {
// Automated height on Carousel build // Automated height on Carousel build
glide.on('build.after', function () { glide.on('build.after', function () {
self.showSlider();
self.setSliderHeight(); self.setSliderHeight();
}); });
...@@ -88,47 +94,100 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [ ...@@ -88,47 +94,100 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [
} }
}, },
showSlider: function () {
var Wrapper = document.querySelector('.customerReviewsSlider-track');
Wrapper.style.opacity = 1;
},
changeSliderHeight: function (direction) { changeSliderHeight: function (direction) {
const slider = document.querySelector('.customerReviewsSlider-slider').children; var activeSlide = document.querySelector('.glide__slide--active');
var actvieSlideWidth = activeSlide.offsetWidth;
var glideTrackWidth = this.glideTrack.offsetWidth;
var howMany = Math.round(glideTrackWidth/actvieSlideWidth);
var i = 0; var slides = this.getSlides(howMany, direction);
var nextSlide = null; var highestSlide = this.getHeight(slides);
var glideTrackHeight = this.glideTrack.offsetHeight;
if (highestSlide !== glideTrackHeight) {
this.glideTrack.style.height = `${highestSlide+50}px`;
}
},
setSliderHeight: function () {
var activeSlide = document.querySelector('.glide__slide--active');
var actvieSlideWidth = activeSlide.offsetWidth;
var glideTrackWidth = this.glideTrack.offsetWidth;
var howMany = Math.round(glideTrackWidth/actvieSlideWidth);
for (i; i<slider.length; i++) { var slides = this.getSlides(howMany);
var highestSlide = this.getHeight(slides);
if (slider[i].className.includes('glide__slide--active')) { var glideTrackHeight = this.glideTrack.offsetHeight;
if (direction === ">") {
nextSlide = slider[i+1]; if (highestSlide !== glideTrackHeight) {
break; this.glideTrack.style.height = `${highestSlide+50}px`;
} }
nextSlide = slider[i-1]; },
getSlides: function (howMany, direction = null) {
var i = 0;
var Slider = document.querySelector('.customerReviewsSlider-slider');
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')) {
activeSlideIndex = i;
break; break;
} }
} }
const nextSlideHeight = nextSlide ? nextSlide.offsetHeight + 50 : 0; if (direction === ">") {
firstNewIndex = activeSlideIndex + 1;
lastNewIndex = activeSlideIndex + this.getAttribute('perview'); //change to preView option
}
if (direction === "<") {
firstNewIndex = activeSlideIndex - 1;
lastNewIndex = firstNewIndex + this.getAttribute('perview') - 1; //change to preView option
}
const glideTrack = document.querySelector('.customerReviewsSlider-track'); if (direction === null) {
const glideTrackHeight = glideTrack ? glideTrack.offsetHeight : 0; firstNewIndex = activeSlideIndex;
lastNewIndex = firstNewIndex + this.getAttribute('perview') - 1; //change to preView option
}
if (nextSlideHeight !== glideTrackHeight) { for (i = firstNewIndex; i<=lastNewIndex; i++) {
glideTrack.style.height = `${nextSlideHeight}px`; visibleSlides.push(SliderChildren[i]);
} }
return visibleSlides;
}, },
setSliderHeight: function () { getHeight: function (slides) {
const activeSlide = document.querySelector('.glide__slide--active'); var newHeight = 0;
const activeSlideHeight = activeSlide ? activeSlide.offsetHeight + 50 : 0; var i = 0;
var len = slides.length;
const glideTrack = document.querySelector('.customerReviewsSlider-track');
const glideTrackHeight = glideTrack ? glideTrack.offsetHeight : 0;
if (activeSlideHeight !== glideTrackHeight) { for (i; i<len; i++) {
glideTrack.style.height = `${activeSlideHeight}px`; var slideHeight = slides[i].offsetHeight;
if(slideHeight>newHeight) {
newHeight = slideHeight;
}
} }
return newHeight;
} }
}); });
}); });
\ No newline at end of file
0% oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren