diff --git a/src/components/carousel/carousel.vue b/src/components/carousel/carousel.vue index 34f56aa..1f61de5 100644 --- a/src/components/carousel/carousel.vue +++ b/src/components/carousel/carousel.vue @@ -47,6 +47,13 @@ type: Number, default: 2000 }, + autoplayDirection: { + type: String, + default: 'left', + validator (value) { + return oneOf(value, ['left', 'right']); + } + }, easing: { type: String, default: 'ease' @@ -175,11 +182,13 @@ this.updateSlides(true, true); this.updatePos(); + this.updateOffset(); }); }, handleResize () { this.listWidth = parseInt(getStyle(this.$el, 'width')); this.updatePos(); + this.updateOffset(); }, add (offset) { let index = this.currentIndex; @@ -191,19 +200,20 @@ dotsEvent (event, n) { if (event === this.trigger && this.currentIndex !== n) { this.currentIndex = n; + // Reset autoplay timer when trigger be activated + this.setAutoplay(); } }, setAutoplay () { window.clearInterval(this.timer); if (this.autoplay) { this.timer = window.setInterval(() => { - this.add(1); + this.add(this.autoplayDirection === 'left' ? 1 : -1); }, this.autoplaySpeed); } }, updateOffset () { this.$nextTick(() => { - this.handleResize(); this.trackOffset = this.currentIndex * this.listWidth; }); } diff --git a/test/routers/carousel.vue b/test/routers/carousel.vue index 0171d80..12b8477 100644 --- a/test/routers/carousel.vue +++ b/test/routers/carousel.vue @@ -12,6 +12,13 @@ Speed +

Direction

+ + Left + Right + +
+ Switch To 0 @@ -59,6 +66,7 @@ :current-index.sync="currentIndex" :autoplay="autoplay" :autoplay-speed="autoplaySpeed" + :autoplay-direction="autoplayDirection" :dots="dots" :trigger="trigger" :arrow="arrow" @@ -185,6 +193,7 @@ currentIndex: 0, autoplay: true, autoplaySpeed: 2000, + autoplayDirection: 'left', remove: false, pushItem: [], arrow: 'hover', -- libgit2 0.21.4