UNPKG

tdesign-mobile-vue

Version:
154 lines (150 loc) 5.9 kB
/** * tdesign v1.7.0 * (c) 2024 TDesign Group * @license MIT */ import { _ as _defineProperty } from '../_chunks/dep-219bb5a7.mjs'; import { defineComponent, computed, ref, onMounted, onUnmounted, createVNode, withDirectives, vShow } from 'vue'; import { useElementBounding } from '@vueuse/core'; import { BacktopIcon } from 'tdesign-icons-vue-next'; import '../shared/index.mjs'; import props from './props.mjs'; import config from '../config.mjs'; import { useTNodeJSX } from '../hooks/tnode.mjs'; import { usePrefixClass } from '../hooks/useClass.mjs'; import { isBrowser } from '../shared/util.mjs'; import '../_chunks/dep-620d73f7.mjs'; import '../shared/functions.mjs'; import '../shared/component.mjs'; import '../shared/constants.mjs'; import '../shared/render.mjs'; import '../_chunks/dep-60cadef8.mjs'; import '../_chunks/dep-8bf3054e.mjs'; import '../_chunks/dep-8140c29b.mjs'; import '../_chunks/dep-3d249f65.mjs'; import '../_chunks/dep-0d52e58f.mjs'; import '../_chunks/dep-019e292f.mjs'; import '../_chunks/dep-32364550.mjs'; import '../_chunks/dep-a836a38c.mjs'; import '../_chunks/dep-9b2de386.mjs'; import '../_chunks/dep-0ea7bbde.mjs'; import '../_chunks/dep-b437ef0b.mjs'; import '../shared/dom.mjs'; import '../_chunks/dep-91d696ea.mjs'; import '../_chunks/dep-e6c129ab.mjs'; import '../_chunks/dep-6303c50c.mjs'; import '../shared/render-tnode.mjs'; import '../shared/useToggle/index.mjs'; import '../shared/useCountDown/index.mjs'; import '../_chunks/dep-80e4de18.mjs'; import '../shared/useCountDown/utils.mjs'; import '../shared/useDefault/index.mjs'; import '../shared/useChildSlots/index.mjs'; import '../_chunks/dep-f0f403be.mjs'; import '../_chunks/dep-8d37dbf8.mjs'; import '../shared/useVModel/index.mjs'; import '../_chunks/dep-6917b9bc.mjs'; import '../shared/useTouch/index.mjs'; import '../shared/useScrollParent/index.mjs'; import '../shared/useExpose/index.mjs'; import '../shared/useTest/index.mjs'; import '../shared/useClickAway/index.mjs'; import '../shared/useGesture/index.mjs'; import '../_chunks/dep-cd74809c.mjs'; import '@use-gesture/vanilla'; import '../shared/hover.mjs'; import '../_chunks/dep-52fdc8e1.mjs'; import '../hooks/render-tnode.mjs'; import '../_chunks/dep-40507aac.mjs'; import '../_chunks/dep-2bce42ea.mjs'; import '../_chunks/dep-e57d46f3.mjs'; import '../_chunks/dep-4f44985d.mjs'; import '../_chunks/dep-6bc862af.mjs'; import '../_chunks/dep-b84be35c.mjs'; import '../_chunks/dep-08bc7a4c.mjs'; import '../_chunks/dep-b9b8ead5.mjs'; import '../_chunks/dep-6c53a3e4.mjs'; import '../_chunks/dep-d2161895.mjs'; import '../_chunks/dep-89951f45.mjs'; import '../_chunks/dep-4931819d.mjs'; import '../_chunks/dep-10f4d030.mjs'; import '../_chunks/dep-8ee6f5cd.mjs'; import '../_chunks/dep-933f3a85.mjs'; import '../_chunks/dep-ac139980.mjs'; import '../_chunks/dep-154c1925.mjs'; import '../_chunks/dep-ba131d9c.mjs'; import '../_chunks/dep-007f294e.mjs'; import '../_common/js/global-config/mobile/default-config.mjs'; import '../_common/js/global-config/mobile/locale/zh_CN.mjs'; import '../_chunks/dep-161f0c44.mjs'; import '../_chunks/dep-5fd0eaa4.mjs'; import '../_chunks/dep-3c59bf72.mjs'; import '../config-provider/type.mjs'; var prefix = config.prefix; var _BackTop = defineComponent({ name: "".concat(prefix, "-back-top"), props: props, setup: function setup(props2) { var renderTNodeJSX = useTNodeJSX(); var backTopClass = usePrefixClass("back-top"); var target = computed(function () { if (!isBrowser) return void 0; return props2.target ? props2.target() : window.document.documentElement; }); var container = ref(); var _useElementBounding = useElementBounding(target), top = _useElementBounding.top; var visible = ref(false); var backTopClasses = computed(function () { return _defineProperty(_defineProperty(_defineProperty({}, "".concat(backTopClass.value), true), "".concat(backTopClass.value, "--fixed"), props2.fixed), "".concat(backTopClass.value, "--").concat(props2.theme), true); }); var handleClick = function handleClick() { if (isBrowser) { var _props2$onToTop; container.value.scrollTop = 0 + top.value; (_props2$onToTop = props2.onToTop) === null || _props2$onToTop === void 0 || _props2$onToTop.call(props2); } }; var getContainer = function getContainer(container2) { if (typeof container2 === "function") { return container2(); } return document.documentElement; }; onMounted(function () { if (isBrowser) { container.value = getContainer(props2.container); container.value.onscroll = function () { var _container$value, _container$value2; if (((_container$value = container.value) === null || _container$value === void 0 ? void 0 : _container$value.scrollTop) >= props2.visibilityHeight) { visible.value = true; } if (visible.value && ((_container$value2 = container.value) === null || _container$value2 === void 0 ? void 0 : _container$value2.scrollTop) < props2.visibilityHeight) { visible.value = false; } }; } }); onUnmounted(function () { container.value.onscroll = null; }); var readerIcon = function readerIcon() { if (props2.icon === true) { return createVNode(BacktopIcon, { "size": "22px" }, null); } return renderTNodeJSX("icon"); }; return function () { return withDirectives(createVNode("div", { "class": backTopClasses.value, "onClick": handleClick }, [readerIcon(), props2.text && createVNode("span", { "class": "".concat(backTopClass.value, "__text--").concat(props2.theme) }, [props2.text])]), [[vShow, visible.value]]); }; } }); export { _BackTop as default }; //# sourceMappingURL=back-top.mjs.map