UNPKG

ivue-material-plus

Version:

A high quality UI components Library with Vue.js

65 lines (60 loc) 1.78 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var tabsTouch = (data, container, wrapper, activeIndex) => { const { proxy } = vue.getCurrentInstance(); const onTouchStart = (e) => { data.startX = data.scrollOffset + e.touchstartX; container.value.style.transition = "none"; container.value.style.willChange = "transform"; }; const onTouchMove = (e) => { data.scrollOffset = data.startX - e.touchmoveX; }; const onTouchEnd = () => { const maxScrollOffset = container.value.clientWidth - wrapper.value.clientWidth; container.value.style.transition = ""; container.value.style.willChange = ""; if (data.scrollOffset < 0 || !data.isOverflowing) { data.scrollOffset = 0; } else if (data.scrollOffset >= maxScrollOffset) { data.scrollOffset = maxScrollOffset; } }; const newOffset = (direction) => { const clientWidth = wrapper.value.clientWidth; if (direction === "prev") { return Math.max(data.scrollOffset - clientWidth, 0); } else { return Math.min( data.scrollOffset + clientWidth, container.value.clientWidth - clientWidth ); } }; const handleSwipeItem = (direction) => { if (direction === "next") { const index = activeIndex.value + 1; const tab = data.tabs[index]; if (tab) { proxy.tabNavClick(tab); } } if (direction === "prev") { const index = activeIndex.value - 1; const tab = data.tabs[index]; if (tab) { proxy.tabNavClick(tab); } } }; return { onTouchStart, onTouchMove, onTouchEnd, newOffset, handleSwipeItem }; }; exports["default"] = tabsTouch; //# sourceMappingURL=tabs-touch.js.map