saturn-ui
Version:
🪐 一款轻量级、模块化的Web可视化UI组件库(含大屏、GIS、图表、视频、后台等模块) 👍
97 lines (91 loc) • 3.92 kB
JavaScript
import { defineComponent, openBlock, createElementBlock, createElementVNode, normalizeStyle, Fragment, renderList, toDisplayString } from 'vue';
const withInstall = (main, extra) => {
main.install = (app) => {
for (const comp of [main, ...Object.values(extra ?? {})]) {
app.component(comp.name, comp);
}
};
if (extra) {
for (const [key, comp] of Object.entries(extra)) {
main[key] = comp;
}
}
return main;
};
const _hoisted_1 = { class: "ice-list" };
const _hoisted_2 = ["title"];
var script = defineComponent({
props: {
listData: {
type: Array,
required: true,
default: () => [
{
name: '小明',
age: 18,
grade: '一年级',
tset: '00000000000000000000000000000000000000000'
},
{ name: '小明', age: 18, grade: '一年级', tset: '00' },
{ name: '小明', age: 18, grade: '一年级', tset: '00' },
{ name: '小明', age: 18, grade: '一年级', tset: '00' },
{ name: '小明', age: 18, grade: '一年级', tset: '00' },
{ name: '小明', age: 18, grade: '一年级', tset: '00' }
]
},
width: {
type: String,
required: true,
default: '110%'
},
maxHeight: {
type: Number,
required: true,
default: 234
},
rowHeight: {
type: Number,
required: true,
default: 50
}
},
setup(__props) {
return (_ctx, _cache) => {
return (openBlock(), createElementBlock("div", _hoisted_1, [
createElementVNode("table", {
style: normalizeStyle({ width: __props.width + 'px' || __props.width })
}, [
createElementVNode("thead", null, [
createElementVNode("tr", {
style: normalizeStyle({ height: __props.rowHeight + 'px' })
}, [
(openBlock(true), createElementBlock(Fragment, null, renderList(Object.keys(__props.listData[0]), (item) => {
return (openBlock(), createElementBlock("th", { key: item }, toDisplayString(item), 1));
}), 128))
], 4)
]),
createElementVNode("tbody", {
style: normalizeStyle({ maxHeight: __props.maxHeight + 'px' })
}, [
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.listData, (row) => {
return (openBlock(), createElementBlock("tr", {
key: row,
style: normalizeStyle({ height: __props.rowHeight + 'px' })
}, [
(openBlock(true), createElementBlock(Fragment, null, renderList(Object.values(row), (row_item, index) => {
return (openBlock(), createElementBlock("td", {
key: row_item + '_' + index,
title: String(row_item)
}, toDisplayString(row_item), 9, _hoisted_2));
}), 128))
], 4));
}), 128))
], 4)
], 4)
]));
};
}
});
script.__file = "packages/IceList/index.vue";
const IceList = withInstall(script, { name: 'IceList' });
export { IceList, IceList as default };