ivue-material-plus
Version:
A high quality UI components Library with Vue.js
65 lines (60 loc) • 1.78 kB
JavaScript
;
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