UNPKG

tdesign-vue-next

Version:
147 lines (141 loc) 5.27 kB
/** * tdesign v1.20.3 * (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-2c21b252.js'); var index = require('../../_chunks/dep-86bbc302.js'); require('@babel/runtime/helpers/slicedToArray'); require('../../_chunks/dep-c786fc66.js'); require('@babel/runtime/helpers/defineProperty'); var isFunction = require('../../_chunks/dep-f8f6dc81.js'); require('../../_chunks/dep-ce131a62.js'); require('../../config-provider/hooks/useConfig.js'); require('../../_chunks/dep-f13dc940.js'); require('../../_chunks/dep-dc718ec7.js'); require('dayjs'); require('../../_chunks/dep-e1852b70.js'); require('../../_chunks/dep-d0ba8f3b.js'); require('../../_chunks/dep-34ae74be.js'); require('../../_chunks/dep-2e72c048.js'); require('../../_chunks/dep-c1906837.js'); require('../../_chunks/dep-820ea949.js'); require('../../_chunks/dep-5ce4c94e.js'); require('../../_chunks/dep-38abd3cd.js'); require('../../_chunks/dep-48f8bd7a.js'); require('../../_chunks/dep-9488062b.js'); require('../../_chunks/dep-6475bea6.js'); require('../../_chunks/dep-53a0e29c.js'); require('../../_chunks/dep-ab3db94c.js'); require('../../_chunks/dep-577d39b3.js'); require('../../_chunks/dep-50880721.js'); require('../../_chunks/dep-00b0ff32.js'); require('../../_chunks/dep-5bcb760f.js'); require('../../_chunks/dep-bf13d379.js'); require('../../_chunks/dep-95fe29fa.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