UNPKG

vxe-table

Version:

A PC-end table component based on Vxe UI, supporting copy-paste, data pivot table, and high-performance virtual list table solution.

44 lines (43 loc) 1.54 kB
import { h, onUnmounted, provide, inject, ref, onMounted, createCommentVNode } from 'vue'; import { defineVxeComponent } from '../../ui/src/comp'; import { columnProps } from './column'; import { watchColumn, assembleColumn, destroyColumn } from './util'; import Cell from './cell'; export default defineVxeComponent({ name: 'VxeColgroup', props: columnProps, setup(props, { slots }) { const refElem = ref(); const $xeTable = inject('$xeTable', null); const $xeParentColgroup = inject('$xeColgroup', null); if (!$xeTable) { return () => createCommentVNode(); } const columnConfig = Cell.createColumn($xeTable, props); const columnSlots = {}; 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 }; provide('$xeColgroup', $xeColgroup); provide('$xeGrid', null); return renderVN; } });