Skip to content

Commit 6bbb73d

Browse files
committed
fix(scrollbar): correctly update scrollbar on changeDirection
fixes #7263
1 parent e5c04c3 commit 6bbb73d

File tree

6 files changed

+32
-15
lines changed

6 files changed

+32
-15
lines changed

src/core/core.mjs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,11 @@ class Swiper {
504504
}
505505

506506
el.swiper = swiper;
507-
if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {
507+
if (
508+
el.parentNode &&
509+
el.parentNode.host &&
510+
el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()
511+
) {
508512
swiper.isElement = true;
509513
}
510514

src/modules/a11y/a11y.mjs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import classesToSelector from '../../shared/classes-to-selector.mjs';
2-
import { createElement, elementIndex } from '../../shared/utils.mjs';
2+
import { createElement, elementIndex, makeElementsArray } from '../../shared/utils.mjs';
33

44
export default function A11y({ swiper, extendParams, on }) {
55
extendParams({
@@ -33,9 +33,6 @@ export default function A11y({ swiper, extendParams, on }) {
3333
notification.innerHTML = message;
3434
}
3535

36-
const makeElementsArray = el =>
37-
(Array.isArray(el) ? el : [el]).filter((e) => !!e)
38-
3936
function getRandomNumber(size = 16) {
4037
const randomChar = () => Math.round(16 * Math.random()).toString(16);
4138
return 'x'.repeat(size).replace(/x/g, randomChar);
@@ -297,7 +294,7 @@ export default function A11y({ swiper, extendParams, on }) {
297294

298295
// Pagination
299296
if (hasClickablePagination()) {
300-
const paginationEl = makeElementsArray(swiper.pagination.el)
297+
const paginationEl = makeElementsArray(swiper.pagination.el);
301298
paginationEl.forEach((el) => {
302299
el.addEventListener('keydown', onEnterOrSpaceKey);
303300
});
@@ -322,7 +319,7 @@ export default function A11y({ swiper, extendParams, on }) {
322319

323320
// Pagination
324321
if (hasClickablePagination()) {
325-
const paginationEl = makeElementsArray(swiper.pagination.el)
322+
const paginationEl = makeElementsArray(swiper.pagination.el);
326323
paginationEl.forEach((el) => {
327324
el.removeEventListener('keydown', onEnterOrSpaceKey);
328325
});

src/modules/navigation/navigation.mjs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import createElementIfNotDefined from '../../shared/create-element-if-not-defined.mjs';
2+
import { makeElementsArray } from '../../shared/utils.mjs';
23

34
export default function Navigation({ swiper, extendParams, on, emit }) {
45
extendParams({
@@ -19,8 +20,6 @@ export default function Navigation({ swiper, extendParams, on, emit }) {
1920
prevEl: null,
2021
};
2122

22-
const makeElementsArray = (el) => (Array.isArray(el) ? el : [el]).filter((e) => !!e);
23-
2423
function getEl(el) {
2524
let res;
2625
if (el && typeof el === 'string' && swiper.isElement) {

src/modules/pagination/pagination.mjs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
import classesToSelector from '../../shared/classes-to-selector.mjs';
22
import createElementIfNotDefined from '../../shared/create-element-if-not-defined.mjs';
3-
import { elementIndex, elementOuterSize, elementParents } from '../../shared/utils.mjs';
3+
import {
4+
elementIndex,
5+
elementOuterSize,
6+
elementParents,
7+
makeElementsArray,
8+
} from '../../shared/utils.mjs';
49

510
export default function Pagination({ swiper, extendParams, on, emit }) {
611
const pfx = 'swiper-pagination';
@@ -44,8 +49,6 @@ export default function Pagination({ swiper, extendParams, on, emit }) {
4449
let bulletSize;
4550
let dynamicBulletIndex = 0;
4651

47-
const makeElementsArray = (el) => (Array.isArray(el) ? el : [el]).filter((e) => !!e);
48-
4952
function isPaginationDisabled() {
5053
return (
5154
!swiper.params.pagination.el ||

src/modules/scrollbar/scrollbar.mjs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { getDocument } from 'ssr-window';
2-
import { createElement, elementOffset, nextTick } from '../../shared/utils.mjs';
2+
import { createElement, elementOffset, makeElementsArray, nextTick } from '../../shared/utils.mjs';
33
import createElementIfNotDefined from '../../shared/create-element-if-not-defined.mjs';
44
import classesToSelector from '../../shared/classes-to-selector.mjs';
55
import classesToTokens from '../../shared/classes-to-tokens.mjs';
@@ -301,6 +301,17 @@ export default function Scrollbar({ swiper, extendParams, on, emit }) {
301301
disableDraggable();
302302
}
303303

304+
on('changeDirection', () => {
305+
if (!swiper.scrollbar || !swiper.scrollbar.el) return;
306+
const params = swiper.params.scrollbar;
307+
let { el } = swiper.scrollbar;
308+
el = makeElementsArray(el);
309+
el.forEach((subEl) => {
310+
subEl.classList.remove(params.horizontalClass, params.verticalClass);
311+
subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
312+
});
313+
});
314+
304315
on('init', () => {
305316
if (swiper.params.scrollbar.enabled === false) {
306317
// eslint-disable-next-line
@@ -311,7 +322,7 @@ export default function Scrollbar({ swiper, extendParams, on, emit }) {
311322
setTranslate();
312323
}
313324
});
314-
on('update resize observerUpdate lock unlock', () => {
325+
on('update resize observerUpdate lock unlock changeDirection', () => {
315326
updateSize();
316327
});
317328
on('setTranslate', () => {

src/shared/utils.mjs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,9 @@ function elementOuterSize(el, size, includeMargins) {
316316
}
317317
return el.offsetWidth;
318318
}
319-
319+
function makeElementsArray(el) {
320+
return (Array.isArray(el) ? el : [el]).filter((e) => !!e);
321+
}
320322
export {
321323
animateCSSModeScroll,
322324
deleteProps,
@@ -341,4 +343,5 @@ export {
341343
elementParents,
342344
elementTransitionEnd,
343345
elementOuterSize,
346+
makeElementsArray,
344347
};

0 commit comments

Comments
 (0)