UNPKG

swiper

Version:

Most modern mobile touch slider and framework with hardware accelerated transitions

82 lines (68 loc) 3.13 kB
import { extend } from '../../../utils/utils'; export default function setBreakpoint() { var swiper = this; var activeIndex = swiper.activeIndex, initialized = swiper.initialized, _swiper$loopedSlides = swiper.loopedSlides, loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides, params = swiper.params, $el = swiper.$el; var breakpoints = params.breakpoints; if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters var breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; if (breakpointOnlyParams) { ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) { var paramValue = breakpointOnlyParams[param]; if (typeof paramValue === 'undefined') return; if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) { breakpointOnlyParams[param] = 'auto'; } else if (param === 'slidesPerView') { breakpointOnlyParams[param] = parseFloat(paramValue); } else { breakpointOnlyParams[param] = parseInt(paramValue, 10); } }); } var breakpointParams = breakpointOnlyParams || swiper.originalParams; var wasMultiRow = params.slidesPerColumn > 1; var isMultiRow = breakpointParams.slidesPerColumn > 1; var wasEnabled = params.enabled; var isEnabled = breakpointParams.enabled; if (wasMultiRow && !isMultiRow) { $el.removeClass(params.containerModifierClass + "multirow " + params.containerModifierClass + "multirow-column"); swiper.emitContainerClasses(); } else if (!wasMultiRow && isMultiRow) { $el.addClass(params.containerModifierClass + "multirow"); if (breakpointParams.slidesPerColumnFill === 'column') { $el.addClass(params.containerModifierClass + "multirow-column"); } swiper.emitContainerClasses(); } var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); if (directionChanged && initialized) { swiper.changeDirection(); } extend(swiper.params, breakpointParams); extend(swiper, { allowTouchMove: swiper.params.allowTouchMove, allowSlideNext: swiper.params.allowSlideNext, allowSlidePrev: swiper.params.allowSlidePrev }); if (wasEnabled && !isEnabled) { swiper.disable(); } else if (!wasEnabled && isEnabled) { swiper.enable(); } swiper.currentBreakpoint = breakpoint; swiper.emit('_beforeBreakpoint', breakpointParams); if (needsReLoop && initialized) { swiper.loopDestroy(); swiper.loopCreate(); swiper.updateSlides(); swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false); } swiper.emit('breakpoint', breakpointParams); }