UNPKG

vxe-table-demonic

Version:

一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...

49 lines (48 loc) 1.78 kB
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(); } });