You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
1.9 KiB

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _babelHelperVueJsxMergeProps = _interopRequireDefault(require("@vue/babel-helper-vue-jsx-merge-props"));
var _utils = require("../utils");
var _functional = require("../utils/functional");
// Utils
var _createNamespace = (0, _utils.createNamespace)('loading'),
createComponent = _createNamespace[0],
bem = _createNamespace[1];
function LoadingIcon(h, props) {
if (props.type === 'spinner') {
var Spin = [];
for (var i = 0; i < 12; i++) {
Spin.push(h("i"));
}
return Spin;
}
return h("svg", {
"class": bem('circular'),
"attrs": {
"viewBox": "25 25 50 50"
}
}, [h("circle", {
"attrs": {
"cx": "50",
"cy": "50",
"r": "20",
"fill": "none"
}
})]);
}
function LoadingText(h, props, slots) {
if (slots.default) {
var style = props.textSize && {
fontSize: (0, _utils.addUnit)(props.textSize)
};
return h("span", {
"class": bem('text'),
"style": style
}, [slots.default()]);
}
}
function Loading(h, props, slots, ctx) {
var color = props.color,
size = props.size,
type = props.type;
var style = {
color: color
};
if (size) {
var iconSize = (0, _utils.addUnit)(size);
style.width = iconSize;
style.height = iconSize;
}
return h("div", (0, _babelHelperVueJsxMergeProps.default)([{
"class": bem([type, {
vertical: props.vertical
}])
}, (0, _functional.inherit)(ctx, true)]), [h("span", {
"class": bem('spinner', type),
"style": style
}, [LoadingIcon(h, props)]), LoadingText(h, props, slots)]);
}
Loading.props = {
color: String,
size: [Number, String],
vertical: Boolean,
textSize: [Number, String],
type: {
type: String,
default: 'circular'
}
};
var _default = createComponent(Loading);
exports.default = _default;