UNPKG

tdesign-mobile-vue

Version:
218 lines (210 loc) 8.31 kB
/** * tdesign v1.10.0 * (c) 2025 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-f1dfb936.js'); require('../_chunks/dep-a53404c8.js'); require('../_chunks/dep-93492f08.js'); require('../_chunks/dep-afbc7386.js'); require('@babel/runtime/helpers/typeof'); require('../_chunks/dep-77928cee.js'); require('../_chunks/dep-37157f59.js'); require('../_chunks/dep-7185f130.js'); require('../hooks/render-tnode.js'); require('../_chunks/dep-e7a19ef8.js'); require('../_chunks/dep-4ac62806.js'); require('../_chunks/dep-4c545d76.js'); require('../_chunks/dep-2c2d52bc.js'); require('../_chunks/dep-916464c0.js'); require('../_chunks/dep-e2ced27d.js'); require('../_chunks/dep-6e037233.js'); require('../_chunks/dep-1d4bd4d5.js'); require('../_chunks/dep-d9829397.js'); require('../_chunks/dep-3faf272b.js'); require('../_chunks/dep-3911e21a.js'); require('../_chunks/dep-e7b24284.js'); require('../_chunks/dep-5c74143d.js'); require('../_chunks/dep-86a65b5b.js'); require('../_chunks/dep-ca892ae6.js'); require('../_common/js/utils/general.js'); require('../_chunks/dep-8faf539a.js'); require('../_chunks/dep-89a5c268.js'); require('../_common/js/global-config/mobile/default-config.js'); require('../_common/js/global-config/mobile/locale/zh_CN.js'); require('../_chunks/dep-f1b022d4.js'); require('../_chunks/dep-cf7b394b.js'); require('dayjs'); require('../_chunks/dep-820109e5.js'); require('../_chunks/dep-f1b8f994.js'); require('../_chunks/dep-ea958be9.js'); require('../_chunks/dep-3beabe42.js'); require('../_chunks/dep-4010f39f.js'); require('../_chunks/dep-ca176637.js'); require('../_chunks/dep-7cea0cb6.js'); require('../_chunks/dep-260a218a.js'); require('../_chunks/dep-bfb01be8.js'); require('../_chunks/dep-2ef39d0b.js'); require('../_chunks/dep-ece32dab.js'); require('../_chunks/dep-2920a2ac.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