|
188 | 188 | this.el.slides = this.$el.getElementsByClassName('agile__track')[0].children
|
189 | 189 | this.slidesCount = this.el.slides.length
|
190 | 190 |
|
191 |
| - if (this.settings.infinite && !this.settings.fade) { |
192 |
| - this.allSlidesCount = this.slidesCount + 2 |
193 |
| - } else { |
194 |
| - this.allSlidesCount = this.slidesCount |
195 |
| - } |
196 |
| -
|
197 | 191 | for (let i = 0; i < this.slidesCount; ++i) {
|
198 | 192 | this.el.slides[i].classList.add('agile__slide')
|
199 | 193 |
|
|
206 | 200 | // Prepare track
|
207 | 201 | this.el.track = this.$el.getElementsByClassName('agile__track')[0]
|
208 | 202 |
|
209 |
| - // Prepare infinity mode |
210 |
| - if (this.settings.infinite && !this.settings.fade) { |
211 |
| - let firstSlide = this.el.track.firstChild.cloneNode(true) |
212 |
| - let lastSlide = this.el.track.lastChild.cloneNode(true) |
213 |
| -
|
214 |
| - firstSlide.classList.add('agile__slide--cloned') |
215 |
| - lastSlide.classList.add('agile__slide--cloned') |
216 |
| -
|
217 |
| - this.el.track.prepend(lastSlide) |
218 |
| - this.el.track.append(firstSlide) |
219 |
| - } |
220 |
| -
|
221 | 203 | // Prepare autoplay
|
222 | 204 | if (this.settings.autoplay) {
|
223 | 205 | this.startAutoplay()
|
|
331 | 313 | this.enableScroll()
|
332 | 314 | },
|
333 | 315 |
|
| 316 | + enableInfiniteMode () { |
| 317 | + if (!this.settings.fade && !this.el.list.getElementsByClassName('agile__slide--cloned')[0]) { |
| 318 | + let firstSlide = this.el.track.firstChild.cloneNode(true) |
| 319 | + let lastSlide = this.el.track.lastChild.cloneNode(true) |
| 320 | +
|
| 321 | + firstSlide.classList.add('agile__slide--cloned') |
| 322 | + lastSlide.classList.add('agile__slide--cloned') |
| 323 | +
|
| 324 | + this.el.track.prepend(lastSlide) |
| 325 | + this.el.track.append(firstSlide) |
| 326 | + } |
| 327 | +
|
| 328 | + this.countSlides() |
| 329 | + }, |
| 330 | +
|
| 331 | + disableInfiniteMode () { |
| 332 | + let clonedSlides = this.el.list.getElementsByClassName('agile__slide--cloned') |
| 333 | +
|
| 334 | + while (clonedSlides[0]) { |
| 335 | + clonedSlides[0].parentNode.removeChild(clonedSlides[0]) |
| 336 | + } |
| 337 | +
|
| 338 | + this.countSlides() |
| 339 | + }, |
| 340 | +
|
| 341 | + countSlides () { |
| 342 | + if (this.settings.infinite && !this.settings.fade) { |
| 343 | + this.allSlidesCount = this.slidesCount + 2 |
| 344 | + } else { |
| 345 | + this.allSlidesCount = this.slidesCount |
| 346 | + } |
| 347 | + }, |
| 348 | +
|
334 | 349 | disableScroll () {
|
335 | 350 | document.ontouchmove = function (e) {
|
336 | 351 | e.preventDefault()
|
|
466 | 481 | Object.assign(this.settings, responsiveSettings)
|
467 | 482 | }
|
468 | 483 |
|
| 484 | + // Check infinity mode status and enable/disable |
| 485 | + if (this.settings.infinite) { |
| 486 | + this.enableInfiniteMode() |
| 487 | + } else { |
| 488 | + this.disableInfiniteMode() |
| 489 | + } |
| 490 | +
|
469 | 491 | // Actions on document resize
|
470 | 492 | for (let i = 0; i < this.allSlidesCount; ++i) {
|
471 | 493 | this.el.slides[i].style.width = this.width.container + 'px'
|
|
0 commit comments