vxe-table-demonic
Version:
一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...
49 lines (48 loc) • 1.78 kB
JavaScript
import { defineComponent, h, onUnmounted, inject, ref, reactive, onMounted, provide, nextTick } from 'vue';
import { errLog } from '../../tools/log';
import { createItem, watchItem, destroyItem, assemItem } from './util';
import { formItemProps } from './form-item';
export default defineComponent({
name: 'VxeFormGather',
props: formItemProps,
setup: function (props, _a) {
var slots = _a.slots;
var refElem = ref();
var $xeform = inject('$xeform', {});
var formGather = inject('$xeformgather', null);
var defaultSlot = slots.default;
var formItem = reactive(createItem($xeform, props));
var xeformitem = { formItem: formItem };
var xeformiteminfo = { itemConfig: formItem };
formItem.children = [];
provide('$xeformiteminfo', xeformiteminfo);
provide('$xeformgather', xeformitem);
provide('$xeformitem', null);
watchItem(props, formItem);
onMounted(function () {
assemItem($xeform, refElem.value, formItem, formGather);
});
onUnmounted(function () {
destroyItem($xeform, formItem);
});
if (process.env.NODE_ENV === 'development') {
nextTick(function () {
if ($xeform && $xeform.props.customLayout) {
errLog('vxe.error.errConflicts', ['custom-layout', '<form-gather ...>']);
}
});
}
var renderVN = function () {
return h('div', {
ref: refElem
}, defaultSlot ? defaultSlot() : []);
};
var $xeformgather = {
renderVN: renderVN
};
return $xeformgather;
},
render: function () {
return this.renderVN();
}
});