UNPKG

ivue-material-plus

Version:

A high quality UI components Library with Vue.js

61 lines (58 loc) 1.72 kB
import { getCurrentInstance } from 'vue'; var tabsTouch = (data, container, wrapper, activeIndex) => { const { proxy } = 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 }; }; export { tabsTouch as default }; //# sourceMappingURL=tabs-touch.mjs.map