UNPKG

tdesign-vue-next

Version:
147 lines (141 loc) 5.27 kB
/** * tdesign v1.20.0 * (c) 2026 tdesign * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var Vue = require('vue'); require('@babel/runtime/helpers/toConsumableArray'); require('@babel/runtime/helpers/typeof'); require('../../_chunks/dep-0e867224.js'); var index = require('../../_chunks/dep-b9c82189.js'); require('@babel/runtime/helpers/slicedToArray'); require('../../_chunks/dep-ce392f73.js'); require('@babel/runtime/helpers/defineProperty'); var isFunction = require('../../_chunks/dep-cd6733fb.js'); require('../../_chunks/dep-b3ef977e.js'); require('../../config-provider/hooks/useConfig.js'); require('../../_chunks/dep-a64c9b8c.js'); require('../../_chunks/dep-aafbacfe.js'); require('dayjs'); require('../../_chunks/dep-c539b8cf.js'); require('../../_chunks/dep-bd404105.js'); require('../../_chunks/dep-5ed96ff4.js'); require('../../_chunks/dep-caa8987f.js'); require('../../_chunks/dep-5c730151.js'); require('../../_chunks/dep-b937ef62.js'); require('../../_chunks/dep-0ad5a5a6.js'); require('../../_chunks/dep-8e3205d4.js'); require('../../_chunks/dep-68ca5b5a.js'); require('../../_chunks/dep-ce54d478.js'); require('../../_chunks/dep-9b493151.js'); require('../../_chunks/dep-933eb47e.js'); require('../../_chunks/dep-01e6d254.js'); require('../../_chunks/dep-d3fa0c96.js'); require('../../_chunks/dep-f549ecb7.js'); require('../../_chunks/dep-5a252af6.js'); require('../../_chunks/dep-f4839f43.js'); require('../../_chunks/dep-330e6dfc.js'); require('../../_chunks/dep-af55a921.js'); require('@babel/runtime/helpers/createClass'); require('@babel/runtime/helpers/classCallCheck'); function useTagScroll(props) { var tagInputRef = Vue.ref(); var classPrefix = index.usePrefixClass(); var _toRefs = Vue.toRefs(props), excessTagsDisplayType = _toRefs.excessTagsDisplayType, readonly = _toRefs.readonly, disabled = _toRefs.disabled; var scrollDistance = Vue.ref(0); var scrollElement = Vue.ref(); var mouseEnterTimer = Vue.ref(); var isScrollable = Vue.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.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); }; Vue.onMounted(init); Vue.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 }; } exports.useTagScroll = useTagScroll; //# sourceMappingURL=useTagScroll.js.map