@visactor/vue-vtable
Version:
The vue version of VTable
51 lines (47 loc) • 2.15 kB
JavaScript
'use strict';
var vue = require('vue');
var baseTable_vue_vue_type_script_setup_true_lang = require('./base-table.vue.js');
var vnodeUtils = require('../utils/vnodeUtils.js');
var slotUtils = require('../utils/slotUtils.js');
// 定义属性
var _sfc_main = /*@__PURE__*/ vue.defineComponent({
__name: 'list-table',
props: {
options: { type: Object, required: true },
records: { type: Array, required: false },
width: { type: [String, Number], required: false },
height: { type: [String, Number], required: false }
},
setup(__props, { expose: __expose }) {
const props = __props;
// 引用BaseTable实例
const baseTableRef = vue.ref(null);
const slots = vue.useSlots();
// 合并插槽配置
const computedOptions = vue.computed(() => {
var _a;
const flattenedSlots = vnodeUtils.flattenVNodes(((_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)) || []);
const slotOptions = slotUtils.extractListSlotOptions(flattenedSlots);
return slotUtils.mergeSlotOptions(props.options, slotOptions);
});
// 暴露实例
__expose({
vTableInstance: vue.computed(() => { var _a; return ((_a = baseTableRef.value) === null || _a === void 0 ? void 0 : _a.vTableInstance) || null; }),
});
return (_ctx, _cache) => {
return (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
vue.createVNode(baseTable_vue_vue_type_script_setup_true_lang, vue.mergeProps({
type: "list",
options: computedOptions.value,
records: __props.records,
width: __props.width,
height: __props.height,
ref_key: "baseTableRef",
ref: baseTableRef
}, _ctx.$attrs), null, 16 /* FULL_PROPS */, ["options", "records", "width", "height"]),
vue.renderSlot(_ctx.$slots, "default")
], 64 /* STABLE_FRAGMENT */));
};
}
});
module.exports = _sfc_main;