Skip to content

Commit 3055008

Browse files
committed
fix(a11y): fix focus in virtual mode enabled
fixes #8147
1 parent 60b0052 commit 3055008

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

src/modules/a11y/a11y.mjs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,10 @@ export default function A11y({ swiper, extendParams, on }) {
249249
const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
250250
if (!slideEl || !swiper.slides.includes(slideEl)) return;
251251
focusTargetSlideEl = slideEl;
252-
const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
252+
const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
253+
const isActive =
254+
(isVirtual ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : swiper.slides.indexOf(slideEl)) ===
255+
swiper.activeIndex;
253256
const isVisible =
254257
swiper.params.watchSlidesProgress &&
255258
swiper.visibleSlides &&
@@ -268,6 +271,11 @@ export default function A11y({ swiper, extendParams, on }) {
268271
swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'))),
269272
0,
270273
);
274+
} else if (isVirtual) {
275+
swiper.slideTo(
276+
swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10)),
277+
0,
278+
);
271279
} else {
272280
swiper.slideTo(swiper.getSlideIndexWhenGrid(swiper.slides.indexOf(slideEl)), 0);
273281
}

0 commit comments

Comments
 (0)