Skip to content

Commit 6925acf

Browse files
committed
fix(core): make autoHeight work with Virtual slides
fixes #4525
1 parent 1a10247 commit 6925acf

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

src/components/core/update/updateAutoHeight.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
11
export default function updateAutoHeight(speed) {
22
const swiper = this;
33
const activeSlides = [];
4+
const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
45
let newHeight = 0;
56
let i;
67
if (typeof speed === 'number') {
78
swiper.setTransition(speed);
89
} else if (speed === true) {
910
swiper.setTransition(swiper.params.speed);
1011
}
12+
13+
const getSlideByIndex = (index) => {
14+
if (isVirtual) {
15+
return swiper.slides.filter(
16+
(el) => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index,
17+
)[0];
18+
}
19+
return swiper.slides.eq(index)[0];
20+
};
1121
// Find slides currently in view
1222
if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
1323
if (swiper.params.centeredSlides) {
@@ -17,12 +27,12 @@ export default function updateAutoHeight(speed) {
1727
} else {
1828
for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
1929
const index = swiper.activeIndex + i;
20-
if (index > swiper.slides.length) break;
21-
activeSlides.push(swiper.slides.eq(index)[0]);
30+
if (index > swiper.slides.length && !isVirtual) break;
31+
activeSlides.push(getSlideByIndex(index));
2232
}
2333
}
2434
} else {
25-
activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
35+
activeSlides.push(getSlideByIndex(swiper.activeIndex));
2636
}
2737

2838
// Find new height from highest slide in view

0 commit comments

Comments
 (0)