tdesign-mobile-vue
Version:
tdesign-mobile-vue
218 lines (210 loc) • 8.31 kB
JavaScript
/**
* tdesign v1.10.0
* (c) 2025 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-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