UNPKG

element-plus

Version:

A Component Library for Vue3.0

56 lines (52 loc) 1.6 kB
import { computed, defineComponent, h, inject } from 'vue' import { elDescriptionsKey, IDescriptionsInject } from './descriptions.type' export default defineComponent({ name: 'ElDescriptionsCell', props: { cell: { type: Object, }, tag: { type: String, }, type: { type: String, }, }, setup(props) { const descriptions = inject(elDescriptionsKey, {} as IDescriptionsInject) const label = computed(() => props.cell?.children?.label?.() || props.cell?.props?.label) const content = computed(() => props.cell?.children?.default?.()) const span = computed(() => props.cell?.props?.span || 1) return { descriptions, label: label, content: content, span: span, } }, render() { switch (this.type) { case 'label': return h(this.tag, { class: ['el-descriptions__label', { 'is-bordered-label': this.descriptions.border }], colSpan: this.descriptions.direction === 'vertical' ? this.span : 1, }, this.label) case 'content': return h(this.tag, { class: 'el-descriptions__content', colSpan: this.descriptions.direction === 'vertical' ? this.span : this.span * 2 - 1, }, this.content) default: return h('td', { colSpan: this.span, }, [ h('span', { class: ['el-descriptions__label', { 'is-bordered-label': this.descriptions.border }], }, this.label), h('span', { class: 'el-descriptions__content', }, this.content)]) } }, })