All files / src/mixins autoplay.js

100% Statements 15/15
80% Branches 8/10
100% Functions 5/5
100% Lines 15/15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59    3x     3x                                   20x         1x 1x 1x           1x 1x       20x 1x         20x 1x 1x     20x       3x    
const autoplay = {
  props: {
    /**
     * Flag to enable autoplay
     */
    autoplay: {
      type: Boolean,
      default: false,
    },
    /**
     * Time elapsed before advancing slide
     */
    autoplayTimeout: {
      type: Number,
      default: 2000,
    },
    /**
     * Flag to pause autoplay on hover
     */
    autoplayHoverPause: {
      type: Boolean,
      default: false,
    },
  },
  data() {
    return {
      autoplayInterval: null,
    }
  },E
  destroyed() {
    if (!this.$isServer) {
      this.$el.removeEventListener("mouseenter", this.pauseAutoplay)
      this.$el.removeEventListener("mouseleave", this.startAutoplay)
    }
  },
  methods: {
    paEuseAutoplay() {
      if (this.autoplayInterval) {
        this.autoplayInterval = clearInterval(this.autoplayInterval)
      }
    },
    startAutoplay() {
      if (this.autoplay) {
        this.autoplayInterval = setInterval(this.advancePage, this.autoplayTimeout)
      }
    },
  },
  mounted() {
    if (!this.$isServer && this.autoplayHoverPause) {
      this.$el.addEventListener("mouseenter", this.pauseAutoplay)
      this.$el.addEventListener("mouseleave", this.startAutoplay)
    }
 
    this.startAutoplay()
  },
}
 
export default autoplay