updateSlidesClasses.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. export default function updateSlidesClasses() {
  2. const swiper = this;
  3. const {
  4. slides,
  5. params,
  6. $wrapperEl,
  7. activeIndex,
  8. realIndex
  9. } = swiper;
  10. const isVirtual = swiper.virtual && params.virtual.enabled;
  11. slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);
  12. let activeSlide;
  13. if (isVirtual) {
  14. activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`);
  15. } else {
  16. activeSlide = slides.eq(activeIndex);
  17. } // Active classes
  18. activeSlide.addClass(params.slideActiveClass);
  19. if (params.loop) {
  20. // Duplicate to all looped slides
  21. if (activeSlide.hasClass(params.slideDuplicateClass)) {
  22. $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass);
  23. } else {
  24. $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass);
  25. }
  26. } // Next Slide
  27. let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);
  28. if (params.loop && nextSlide.length === 0) {
  29. nextSlide = slides.eq(0);
  30. nextSlide.addClass(params.slideNextClass);
  31. } // Prev Slide
  32. let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);
  33. if (params.loop && prevSlide.length === 0) {
  34. prevSlide = slides.eq(-1);
  35. prevSlide.addClass(params.slidePrevClass);
  36. }
  37. if (params.loop) {
  38. // Duplicate to all looped slides
  39. if (nextSlide.hasClass(params.slideDuplicateClass)) {
  40. $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass);
  41. } else {
  42. $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass);
  43. }
  44. if (prevSlide.hasClass(params.slideDuplicateClass)) {
  45. $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass);
  46. } else {
  47. $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass);
  48. }
  49. }
  50. swiper.emitSlidesClasses();
  51. }