UNPKG

ionic-angular

Version:

A powerful framework for building mobile and progressive web apps with JavaScript and Angular

98 lines 3.4 kB
import { CLS, isHorizontal, offset } from './swiper-utils'; import { slideNext, slidePrev } from './swiper'; /*========================= Keyboard Control ===========================*/ function handleKeyboard(s, plt, e) { var win = plt.win(); var kc = e.keyCode || e.charCode; // Directions locks if (!s._allowSwipeToNext && (isHorizontal(s) && kc === 39 || !isHorizontal(s) && kc === 40)) { return false; } if (!s._allowSwipeToPrev && (isHorizontal(s) && kc === 37 || !isHorizontal(s) && kc === 38)) { return false; } if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { return; } var activeEle = plt.getActiveElement(); if (activeEle && activeEle.nodeName && (activeEle.nodeName.toLowerCase() === 'input' || activeEle.nodeName.toLowerCase() === 'textarea')) { return; } if (kc === 37 || kc === 39 || kc === 38 || kc === 40) { var inView = false; // Check that swiper should be inside of visible area of window if (s.container.closest('.' + CLS.slide) && !s.container.closest('.' + CLS.slideActive)) { return; } var windowScroll = { left: win.pageXOffset, top: win.pageYOffset }; var windowWidth = plt.width(); var windowHeight = plt.height(); var swiperOffset = offset(s.container, plt); if (s._rtl) { swiperOffset.left = swiperOffset.left - s.container.scrollLeft; } var swiperCoord = [ [swiperOffset.left, swiperOffset.top], [swiperOffset.left + s.renderedWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + s.renderedHeight], [swiperOffset.left + s.renderedWidth, swiperOffset.top + s.renderedHeight] ]; for (var i = 0; i < swiperCoord.length; i++) { var point = swiperCoord[i]; if (point[0] >= windowScroll.left && point[0] <= windowScroll.left + windowWidth && point[1] >= windowScroll.top && point[1] <= windowScroll.top + windowHeight) { inView = true; } } if (!inView) return; } if (isHorizontal(s)) { if (kc === 37 || kc === 39) { if (e.preventDefault) { e.preventDefault(); } else { e.returnValue = false; } } if ((kc === 39 && !s._rtl) || (kc === 37 && s._rtl)) { slideNext(s, plt); } if ((kc === 37 && !s._rtl) || (kc === 39 && s._rtl)) { slidePrev(s, plt); } } else { if (kc === 38 || kc === 40) { if (e.preventDefault) { e.preventDefault(); } else { e.returnValue = false; } } if (kc === 40) { slideNext(s, plt); } if (kc === 38) { slidePrev(s, plt); } } } export function enableKeyboardControl(s, plt, shouldEnable) { if (shouldEnable && !s._keyboardUnReg) { s._keyboardUnReg = plt.registerListener(plt.doc(), 'keydown', function (ev) { handleKeyboard(s, plt, ev); }, { zone: false }); } else if (!shouldEnable && s._keyboardUnReg) { s._keyboardUnReg(); } } //# sourceMappingURL=swiper-keyboard.js.map