swiper
Version:
Most modern mobile touch slider and framework with hardware accelerated transitions
174 lines (150 loc) • 5.33 kB
JavaScript
"use strict";
exports.__esModule = true;
exports.default = void 0;
var _dom = _interopRequireDefault(require("../../utils/dom"));
var _utils = require("../../utils/utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
var Navigation = {
update: function update() {
// Update Navigation Buttons
var swiper = this;
var params = swiper.params.navigation;
if (swiper.params.loop) return;
var _swiper$navigation = swiper.navigation,
$nextEl = _swiper$navigation.$nextEl,
$prevEl = _swiper$navigation.$prevEl;
if ($prevEl && $prevEl.length > 0) {
if (swiper.isBeginning) {
$prevEl.addClass(params.disabledClass);
} else {
$prevEl.removeClass(params.disabledClass);
}
$prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
}
if ($nextEl && $nextEl.length > 0) {
if (swiper.isEnd) {
$nextEl.addClass(params.disabledClass);
} else {
$nextEl.removeClass(params.disabledClass);
}
$nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
}
},
onPrevClick: function onPrevClick(e) {
var swiper = this;
e.preventDefault();
if (swiper.isBeginning && !swiper.params.loop) return;
swiper.slidePrev();
},
onNextClick: function onNextClick(e) {
var swiper = this;
e.preventDefault();
if (swiper.isEnd && !swiper.params.loop) return;
swiper.slideNext();
},
init: function init() {
var swiper = this;
var params = swiper.params.navigation;
if (!(params.nextEl || params.prevEl)) return;
var $nextEl;
var $prevEl;
if (params.nextEl) {
$nextEl = (0, _dom.default)(params.nextEl);
if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {
$nextEl = swiper.$el.find(params.nextEl);
}
}
if (params.prevEl) {
$prevEl = (0, _dom.default)(params.prevEl);
if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {
$prevEl = swiper.$el.find(params.prevEl);
}
}
if ($nextEl && $nextEl.length > 0) {
$nextEl.on('click', swiper.navigation.onNextClick);
}
if ($prevEl && $prevEl.length > 0) {
$prevEl.on('click', swiper.navigation.onPrevClick);
}
(0, _utils.extend)(swiper.navigation, {
$nextEl: $nextEl,
nextEl: $nextEl && $nextEl[0],
$prevEl: $prevEl,
prevEl: $prevEl && $prevEl[0]
});
},
destroy: function destroy() {
var swiper = this;
var _swiper$navigation2 = swiper.navigation,
$nextEl = _swiper$navigation2.$nextEl,
$prevEl = _swiper$navigation2.$prevEl;
if ($nextEl && $nextEl.length) {
$nextEl.off('click', swiper.navigation.onNextClick);
$nextEl.removeClass(swiper.params.navigation.disabledClass);
}
if ($prevEl && $prevEl.length) {
$prevEl.off('click', swiper.navigation.onPrevClick);
$prevEl.removeClass(swiper.params.navigation.disabledClass);
}
}
};
var _default = {
name: 'navigation',
params: {
navigation: {
nextEl: null,
prevEl: null,
hideOnClick: false,
disabledClass: 'swiper-button-disabled',
hiddenClass: 'swiper-button-hidden',
lockClass: 'swiper-button-lock'
}
},
create: function create() {
var swiper = this;
(0, _utils.bindModuleMethods)(swiper, {
navigation: _extends({}, Navigation)
});
},
on: {
init: function init(swiper) {
swiper.navigation.init();
swiper.navigation.update();
},
toEdge: function toEdge(swiper) {
swiper.navigation.update();
},
fromEdge: function fromEdge(swiper) {
swiper.navigation.update();
},
destroy: function destroy(swiper) {
swiper.navigation.destroy();
},
click: function click(swiper, e) {
var _swiper$navigation3 = swiper.navigation,
$nextEl = _swiper$navigation3.$nextEl,
$prevEl = _swiper$navigation3.$prevEl;
if (swiper.params.navigation.hideOnClick && !(0, _dom.default)(e.target).is($prevEl) && !(0, _dom.default)(e.target).is($nextEl)) {
var isHidden;
if ($nextEl) {
isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
} else if ($prevEl) {
isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
}
if (isHidden === true) {
swiper.emit('navigationShow');
} else {
swiper.emit('navigationHide');
}
if ($nextEl) {
$nextEl.toggleClass(swiper.params.navigation.hiddenClass);
}
if ($prevEl) {
$prevEl.toggleClass(swiper.params.navigation.hiddenClass);
}
}
}
}
};
exports.default = _default;