element-plus
Version:
A Component Library for Vue3.0
93 lines (82 loc) • 3.05 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var SkeletonItem = require('../el-skeleton-item');
var hooks = require('../hooks');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var SkeletonItem__default = /*#__PURE__*/_interopDefaultLegacy(SkeletonItem);
var script = vue.defineComponent({
name: 'ElSkeleton',
components: {
[SkeletonItem__default['default'].name]: SkeletonItem__default['default'],
},
props: {
animated: {
type: Boolean,
default: false,
},
count: {
type: Number,
default: 1,
},
rows: {
type: Number,
default: 3,
},
loading: {
type: Boolean,
default: true,
},
throttle: {
type: Number,
},
},
setup(props) {
const innerLoading = vue.computed(() => {
return props.loading;
});
const uiLoading = hooks.useThrottleRender(innerLoading, props.throttle);
return {
uiLoading,
};
},
});
function render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_skeleton_item = vue.resolveComponent("el-skeleton-item");
return (_ctx.uiLoading)
? (vue.openBlock(), vue.createBlock("div", vue.mergeProps({
key: 0,
class: ['el-skeleton', _ctx.animated ? 'is-animated' : '', ]
}, _ctx.$attrs), [
(vue.openBlock(true), vue.createBlock(vue.Fragment, null, vue.renderList(_ctx.count, (i) => {
return (vue.openBlock(), vue.createBlock(vue.Fragment, { key: i }, [
(_ctx.loading)
? vue.renderSlot(_ctx.$slots, "template", { key: 0 }, () => [
vue.createVNode(_component_el_skeleton_item, {
class: "is-first",
variant: "p"
}),
(vue.openBlock(true), vue.createBlock(vue.Fragment, null, vue.renderList(_ctx.rows, (item) => {
return (vue.openBlock(), vue.createBlock(_component_el_skeleton_item, {
key: item,
class: {
'el-skeleton__paragraph': true,
'is-last': item === _ctx.rows && _ctx.rows > 1,
},
variant: "p"
}, null, 8 /* PROPS */, ["class"]))
}), 128 /* KEYED_FRAGMENT */))
])
: vue.createCommentVNode("v-if", true)
], 64 /* STABLE_FRAGMENT */))
}), 128 /* KEYED_FRAGMENT */))
], 16 /* FULL_PROPS */))
: vue.renderSlot(_ctx.$slots, "default", vue.mergeProps({ key: 1 }, _ctx.$attrs))
}
script.render = render;
script.__file = "packages/skeleton/src/index.vue";
script.install = (app) => {
app.component(script.name, script);
};
const _Skeleton = script;
exports.default = _Skeleton;