UNPKG

vxe-table-ro-test

Version:

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

57 lines (45 loc) 1.63 kB
import { defineComponent, h, onUnmounted, provide, inject, ref, onMounted, Slot, createCommentVNode } from 'vue' import { columnProps } from './column' import { XEColumnInstance, watchColumn, assembleColumn, destroyColumn } from './util' import Cell from './cell' import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types' export default defineComponent({ name: 'VxeColgroup', props: columnProps, setup (props, { slots }) { const refElem = ref<HTMLDivElement>() const $xeTable = inject<(VxeTableConstructor & VxeTablePrivateMethods) | null>('$xeTable', null) const $xeParentColgroup = inject<XEColumnInstance | null>('$xeColgroup', null) if (!$xeTable) { return () => createCommentVNode() } const columnConfig = Cell.createColumn($xeTable, props) const columnSlots: { header?: Slot; } = {} if (slots.header) { columnSlots.header = slots.header } columnConfig.slots = columnSlots columnConfig.children = [] watchColumn($xeTable, props, columnConfig) onMounted(() => { const elem = refElem.value if (elem) { assembleColumn($xeTable, elem, columnConfig, $xeParentColgroup) } }) onUnmounted(() => { destroyColumn($xeTable, columnConfig) }) const renderVN = () => { return h('div', { ref: refElem }, slots.default ? slots.default() : []) } const $xeColgroup = { columnConfig } as XEColumnInstance provide('$xeColgroup', $xeColgroup) provide('$xeGrid', null) return renderVN } })