UNPKG

tdesign-vue-next

Version:
124 lines (120 loc) 4.35 kB
/** * tdesign v1.19.2 * (c) 2026 tdesign * @license MIT */ import { isFunction } from 'lodash-es'; import { ref, toRefs, onMounted, onUnmounted } from 'vue'; import '@babel/runtime/helpers/toConsumableArray'; import '@babel/runtime/helpers/typeof'; import '../../_chunks/dep-c68ea098.js'; import { u as usePrefixClass } from '../../_chunks/dep-e8dd47a9.js'; import '@babel/runtime/helpers/slicedToArray'; import '../../_chunks/dep-91fc762d.js'; import '@babel/runtime/helpers/defineProperty'; import '../../_chunks/dep-f0f392fb.js'; import '../../config-provider/hooks/useConfig.js'; import '../../config-provider/utils/context.js'; import '../../_chunks/dep-509ddbe3.js'; import 'dayjs'; import '@babel/runtime/helpers/createClass'; import '@babel/runtime/helpers/classCallCheck'; function useTagScroll(props) { var tagInputRef = ref(); var classPrefix = usePrefixClass(); var _toRefs = toRefs(props), excessTagsDisplayType = _toRefs.excessTagsDisplayType, readonly = _toRefs.readonly, disabled = _toRefs.disabled; var scrollDistance = ref(0); var scrollElement = ref(); var mouseEnterTimer = ref(); var isScrollable = ref(false); var updateScrollElement = function updateScrollElement(element) { var prefixElement = element.querySelector(".".concat(classPrefix.value, "-input__prefix")); scrollElement.value = prefixElement; }; var updateScrollDistance = function updateScrollDistance() { scrollDistance.value = scrollElement.value.scrollWidth - scrollElement.value.clientWidth; }; var scrollTo = function scrollTo(distance) { var _scrollElement$value; if (!isFunction((_scrollElement$value = scrollElement.value) === null || _scrollElement$value === void 0 ? void 0 : _scrollElement$value.scroll)) return; scrollElement.value.scroll({ left: distance, behavior: "smooth" }); }; var scrollToRight = function scrollToRight() { var _tagInputRef$value; var element = (_tagInputRef$value = tagInputRef.value) === null || _tagInputRef$value === void 0 ? void 0 : _tagInputRef$value.$el; if (element) { updateScrollElement(element); } if (!scrollElement.value) return; setTimeout(function () { updateScrollDistance(); scrollTo(scrollDistance.value); setTimeout(function () { isScrollable.value = true; }, 200); }, 0); }; var scrollToLeft = function scrollToLeft() { scrollTo(0); }; var onWheel = function onWheel(_ref) { var e = _ref.e; if (readonly.value || disabled.value) return; if (!scrollElement.value) return; var delta = Math.abs(e.deltaX) >= Math.abs(e.deltaY) ? e.deltaX : e.deltaY; if (delta > 0) { updateScrollDistance(); var distance = Math.min(scrollElement.value.scrollLeft + 120, scrollDistance.value); scrollTo(distance); } else if (delta < 0) { var _distance = Math.max(scrollElement.value.scrollLeft - 120, 0); scrollTo(_distance); } }; var scrollToRightOnEnter = function scrollToRightOnEnter() { if (excessTagsDisplayType.value !== "scroll") return; mouseEnterTimer.value = setTimeout(function () { scrollToRight(); clearTimeout(mouseEnterTimer.value); }, 100); }; var scrollToLeftOnLeave = function scrollToLeftOnLeave() { if (excessTagsDisplayType.value !== "scroll") return; isScrollable.value = false; scrollTo(0); clearTimeout(mouseEnterTimer.value); }; var init = function init() { var _tagInputRef$value2; var element = (_tagInputRef$value2 = tagInputRef.value) === null || _tagInputRef$value2 === void 0 ? void 0 : _tagInputRef$value2.$el; if (!element) return; updateScrollElement(element); }; var clear = function clear() { clearTimeout(mouseEnterTimer.value); }; onMounted(init); onUnmounted(clear); return { tagInputRef: tagInputRef, scrollElement: scrollElement, scrollDistance: scrollDistance, scrollTo: scrollTo, scrollToRight: scrollToRight, scrollToLeft: scrollToLeft, updateScrollElement: updateScrollElement, updateScrollDistance: updateScrollDistance, onWheel: onWheel, scrollToRightOnEnter: scrollToRightOnEnter, scrollToLeftOnLeave: scrollToLeftOnLeave, isScrollable: isScrollable }; } export { useTagScroll }; //# sourceMappingURL=useTagScroll.js.map