swiper
Version:
Most modern mobile touch slider and framework with hardware accelerated transitions
75 lines (62 loc) • 2.98 kB
JavaScript
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);
if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
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;
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
});
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);
}
}