tdesign-mobile-vue
Version:
tdesign-mobile-vue
218 lines (210 loc) • 8.31 kB
JavaScript
/**
* tdesign v1.15.0
* (c) 2026 TDesign Group
* @license MIT
*/
;
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-cb7c9eda.js');
require('../_chunks/dep-19edd656.js');
require('../_chunks/dep-194379ee.js');
require('../_chunks/dep-16ad1a12.js');
require('@babel/runtime/helpers/typeof');
require('../_chunks/dep-642ebff4.js');
require('../_chunks/dep-527cf8f4.js');
require('../_chunks/dep-faa5bfcf.js');
require('../hooks/render-tnode.js');
require('../_chunks/dep-e224a131.js');
require('../_chunks/dep-7c3f62db.js');
require('../_chunks/dep-f6a2d298.js');
require('../_chunks/dep-800a2ea8.js');
require('../_chunks/dep-43708eba.js');
require('../_chunks/dep-fb97f75f.js');
require('../_chunks/dep-2a1aba78.js');
require('../_chunks/dep-2255a654.js');
require('../_chunks/dep-9b240313.js');
require('../_chunks/dep-b9f96695.js');
require('../_chunks/dep-aee19c43.js');
require('../_chunks/dep-9d8a972e.js');
require('../_chunks/dep-f7499720.js');
require('../_chunks/dep-8e913c55.js');
require('../_chunks/dep-4bbf6d4f.js');
require('../_common/js/utils/general.js');
require('../_chunks/dep-9990e77b.js');
require('../_chunks/dep-00f961e4.js');
require('../_common/js/global-config/mobile/default-config.js');
require('../_common/js/global-config/mobile/locale/zh_CN.js');
require('../_chunks/dep-60a4bcda.js');
require('../_chunks/dep-0f8521ff.js');
require('dayjs');
require('../_chunks/dep-663766d0.js');
require('../_chunks/dep-0abf2cb5.js');
require('../_chunks/dep-1232d344.js');
require('../_chunks/dep-4f58ec50.js');
require('../_chunks/dep-f527f423.js');
require('../_chunks/dep-e8a08cb5.js');
require('../_chunks/dep-3bfe327c.js');
require('../_chunks/dep-c6906728.js');
require('../_chunks/dep-858df101.js');
require('../_chunks/dep-310a1957.js');
require('../_chunks/dep-c4e7cd96.js');
require('../_chunks/dep-dfc30a62.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