Skip to content

Commit

Permalink
feat: add fully visible slides classes
Browse files Browse the repository at this point in the history
fixes #6773
  • Loading branch information
nolimits4web committed Sep 29, 2023
1 parent 2a99dbd commit 902a4c4
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/components-shared/params-list.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ const paramsList = [
'slideClass',
'slideActiveClass',
'slideVisibleClass',
'slideFullyVisibleClass',
'slideNextClass',
'slidePrevClass',
'wrapperClass',
Expand Down
1 change: 1 addition & 0 deletions src/core/core.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -640,6 +640,7 @@ class Swiper {
slides.forEach((slideEl) => {
slideEl.classList.remove(
params.slideVisibleClass,
params.slideFullyVisibleClass,
params.slideActiveClass,
params.slideNextClass,
params.slidePrevClass,
Expand Down
1 change: 1 addition & 0 deletions src/core/defaults.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ export default {
slideClass: 'swiper-slide',
slideActiveClass: 'swiper-slide-active',
slideVisibleClass: 'swiper-slide-visible',
slideFullyVisibleClass: 'swiper-slide-fully-visible',
slideNextClass: 'swiper-slide-next',
slidePrevClass: 'swiper-slide-prev',
wrapperClass: 'swiper-wrapper',
Expand Down
9 changes: 8 additions & 1 deletion src/core/update/updateSlidesProgress.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export default function updateSlidesProgress(translate = (this && this.translate

// Visible Slides
slides.forEach((slideEl) => {
slideEl.classList.remove(params.slideVisibleClass);
slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass);
});

swiper.visibleSlidesIndexes = [];
Expand Down Expand Up @@ -43,6 +43,10 @@ export default function updateSlidesProgress(translate = (this && this.translate
(slide.swiperSlideSize + spaceBetween);
const slideBefore = -(offsetCenter - slideOffset);
const slideAfter = slideBefore + swiper.slidesSizesGrid[i];

const isFullyVisible =
slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];

const isVisible =
(slideBefore >= 0 && slideBefore < swiper.size - 1) ||
(slideAfter > 1 && slideAfter <= swiper.size) ||
Expand All @@ -52,6 +56,9 @@ export default function updateSlidesProgress(translate = (this && this.translate
swiper.visibleSlidesIndexes.push(i);
slides[i].classList.add(params.slideVisibleClass);
}
if (isFullyVisible) {
slides[i].classList.add(params.slideFullyVisibleClass);
}
slide.progress = rtl ? -slideProgress : slideProgress;
slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
}
Expand Down
4 changes: 4 additions & 0 deletions src/swiper-vue.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,10 @@ declare const Swiper: DefineComponent<
type: StringConstructor;
default: undefined;
};
slideFullyVisibleClass: {
type: StringConstructor;
default: undefined;
};
slideNextClass: {
type: StringConstructor;
default: undefined;
Expand Down
11 changes: 10 additions & 1 deletion src/types/swiper-options.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -774,7 +774,7 @@ export interface SwiperOptions {
slideActiveClass?: string;

/**
* CSS class name of currently visible slide
* CSS class name of currently/partially visible slide
*
* @default 'swiper-slide-visible'
*
Expand All @@ -784,6 +784,15 @@ export interface SwiperOptions {
*/
slideVisibleClass?: string;

/**
* CSS class name of fully (when whole slide is in the viewport) visible slide
*
* @default 'swiper-slide-fully-visible'
*
* @note Not supported in Swiper React/Vue
*/
slideFullyVisibleClass?: string;

/**
* CSS class name of slide which is right after currently active slide
*
Expand Down
1 change: 1 addition & 0 deletions src/vue/swiper.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ const Swiper = {
slideClass: { type: String, default: undefined },
slideActiveClass: { type: String, default: undefined },
slideVisibleClass: { type: String, default: undefined },
slideFullyVisibleClass: { type: String, default: undefined },
slideNextClass: { type: String, default: undefined },
slidePrevClass: { type: String, default: undefined },
wrapperClass: { type: String, default: undefined },
Expand Down

0 comments on commit 902a4c4

Please sign in to comment.