UNPKG

tdesign-mobile-vue

Version:
218 lines (210 loc) 8.31 kB
/** * tdesign v1.13.2 * (c) 2026 TDesign Group * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _defineProperty = require('@babel/runtime/helpers/defineProperty'); var Vue = require('vue'); var loading_icon_gradient = require('./icon/gradient.js'); var loading_icon_spinner = require('./icon/spinner.js'); var config = require('../config.js'); var loading_props = require('./props.js'); var hooks_tnode = require('../hooks/tnode.js'); var hooks_useClass = require('../hooks/useClass.js'); var shared_dom = require('../shared/dom.js'); require('../_common/js/loading/circle-adapter.js'); require('../_common/js/utils/setStyle.js'); require('../_common/js/utils/helper.js'); require('@babel/runtime/helpers/toConsumableArray'); require('@babel/runtime/helpers/objectWithoutProperties'); require('@babel/runtime/helpers/slicedToArray'); require('../_chunks/dep-f8c1ee79.js'); require('../_chunks/dep-4e43cb11.js'); require('../_chunks/dep-db763263.js'); require('../_chunks/dep-d16bf091.js'); require('@babel/runtime/helpers/typeof'); require('../_chunks/dep-c6554877.js'); require('../_chunks/dep-a8725fec.js'); require('../_chunks/dep-dea6ba04.js'); require('../hooks/render-tnode.js'); require('../_chunks/dep-c041cd95.js'); require('../_chunks/dep-88660f08.js'); require('../_chunks/dep-bcc78903.js'); require('../_chunks/dep-e1cc657b.js'); require('../_chunks/dep-a58ecafb.js'); require('../_chunks/dep-04cf2308.js'); require('../_chunks/dep-ea3a180f.js'); require('../_chunks/dep-016f6f84.js'); require('../_chunks/dep-abe9931d.js'); require('../_chunks/dep-671f1b66.js'); require('../_chunks/dep-a1831458.js'); require('../_chunks/dep-082c7326.js'); require('../_chunks/dep-591548d1.js'); require('../_chunks/dep-a9fd9906.js'); require('../_chunks/dep-4a0acbaa.js'); require('../_common/js/utils/general.js'); require('../_chunks/dep-ede0b0a5.js'); require('../_chunks/dep-dafca6f5.js'); require('../_common/js/global-config/mobile/default-config.js'); require('../_common/js/global-config/mobile/locale/zh_CN.js'); require('../_chunks/dep-88b647f4.js'); require('../_chunks/dep-f339c931.js'); require('dayjs'); require('../_chunks/dep-89205991.js'); require('../_chunks/dep-a837a88d.js'); require('../_chunks/dep-d2416277.js'); require('../_chunks/dep-f5894bc3.js'); require('../_chunks/dep-d404c733.js'); require('../_chunks/dep-bd009758.js'); require('../_chunks/dep-83213f5d.js'); require('../_chunks/dep-412d3c4b.js'); require('../_chunks/dep-644f5d6a.js'); require('../_chunks/dep-933759bc.js'); require('../_chunks/dep-a625ee7d.js'); require('../_chunks/dep-e49294a5.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty); var prefix = config["default"].prefix; var _Loading = Vue.defineComponent({ name: "".concat(prefix, "-loading"), props: loading_props["default"], setup: function setup(props2) { var renderTNodeJSX = hooks_tnode.useTNodeJSX(); var renderTNodeContent = hooks_tnode.useContent(); var loadingClass = hooks_useClass.usePrefixClass("loading"); var delayShowLoading = Vue.ref(false); var teleportElement = Vue.ref(); var countDelay = function countDelay() { delayShowLoading.value = false; var timer = setTimeout(function () { delayShowLoading.value = true; clearTimeout(timer); }, props2.delay); }; var realLoading = Vue.computed(function () { return (!props2.delay || delayShowLoading.value) && props2.loading; }); Vue.watch(function () { return props2.loading; }, function (value) { if (value) { props2.delay && countDelay(); } }, { immediate: true }); var rootClass = Vue.computed(function () { return [loadingClass.value, _defineProperty__default["default"]({}, "".concat(loadingClass.value, "--vertical"), props2.layout === "vertical"), _defineProperty__default["default"]({}, "".concat(loadingClass.value, "--fullscreen"), props2.fullscreen), _defineProperty__default["default"]({}, "".concat(loadingClass.value, "--full"), !props2.fullscreen && !!props2.attach)]; }); var textClass = Vue.computed(function () { return ["".concat(loadingClass.value, "__text"), _defineProperty__default["default"]({}, "".concat(loadingClass.value, "__text--only"), !props2.indicator)]; }); var rootStyle = Vue.computed(function () { var style = []; if (props2.inheritColor) { style.push("color: inherit"); } if (props2.size) { style.push("font-size: ".concat(props2.size, ";")); } return style.join(";"); }); var defaultIndicator = { circular: loading_icon_gradient["default"], spinner: loading_icon_spinner["default"] }; Vue.onMounted(function () { if (props2.attach) { var attach = shared_dom.getAttach(props2.attach); if (!attach) { console.error("attach is not exist"); } else { teleportElement.value = attach; } } if (props2.fullscreen) { teleportElement.value = shared_dom.getAttach("body"); } }); var dotsLoading = Vue.computed(function () { Vue.setBlockTracking(-1); var node = Vue.createVNode("div", { "class": "".concat(loadingClass.value, "__dots"), "style": { animationPlayState: props2.pause ? "paused" : "", animationDirection: props2.reverse ? "reverse" : "", animationDuration: "".concat(props2.duration, "ms"), width: props2.size, height: props2.size } }, [Array.from({ length: 3 }).map(function (val, i) { return Vue.createVNode("div", { "class": "".concat(loadingClass.value, "__dot"), "style": props2.duration ? "animation-duration: ".concat(props2.duration / 1e3, "s; animation-delay: ").concat(props2.duration * i / 3e3, "s") : "" }, null); })]); Vue.setBlockTracking(1); return node; }); var defaultLoading = Vue.computed(function () { Vue.setBlockTracking(-1); var TIndicator = defaultIndicator[props2.theme || "circular"]; var node = Vue.createVNode(TIndicator, { "style": { animationPlayState: props2.pause ? "paused" : "", animationDirection: props2.reverse ? "reverse" : "", animationDuration: "".concat(props2.duration, "ms"), width: props2.size, height: props2.size } }, null); Vue.setBlockTracking(1); return node; }); Vue.watch(function () { return props2.loading; }, function (isLoading) { if (isLoading && props2.fullscreen) { countDelay(); shared_dom.addClass(document.body, "".concat(loadingClass.value, "--lock")); } else { shared_dom.removeClass(document.body, "".concat(loadingClass.value, "--lock")); } }); return function () { var indicator = renderTNodeJSX("indicator", { defaultNode: props2.theme === "dots" ? dotsLoading.value : defaultLoading.value }); var text = renderTNodeJSX("text"); var TNodeContent = renderTNodeContent("default", "content"); if (props2.fullscreen || props2.attach) { if (!props2.loading) return null; return Vue.createVNode(Vue.Teleport, { "disabled": !props2.attach || !teleportElement.value, "to": teleportElement.value }, { default: function _default() { return [Vue.createVNode("div", { "class": rootClass.value, "style": rootStyle.value }, [realLoading.value && indicator, text && realLoading.value && Vue.createVNode("span", { "class": textClass.value }, [text]), TNodeContent])]; } }); } return Vue.createVNode("div", { "class": rootClass.value, "style": rootStyle.value }, [realLoading.value && indicator, text && realLoading.value && Vue.createVNode("span", { "class": textClass.value }, [text]), TNodeContent]); }; } }); exports["default"] = _Loading; //# sourceMappingURL=loading.js.map