Files
element-plus/packages/components/tree/src/tree-node-content.vue
一只前端汪 23201e2f4d fix(components): [tree] default slots not displayed (#14939)
* fix(components): [tree] default slots not displayed

* test: add customize some node contents
2023-11-27 16:33:35 +08:00

34 lines
970 B
Vue

<script lang="ts">
// @ts-nocheck
import { defineComponent, h, inject, renderSlot } from 'vue'
import { useNamespace } from '@element-plus/hooks'
import type { ComponentInternalInstance } from 'vue'
import type { RootTreeType } from './tree.type'
export default defineComponent({
name: 'ElTreeNodeContent',
props: {
node: {
type: Object,
required: true,
},
renderContent: Function,
},
setup(props) {
const ns = useNamespace('tree')
const nodeInstance = inject<ComponentInternalInstance>('NodeInstance')
const tree = inject<RootTreeType>('RootTree')
return () => {
const node = props.node
const { data, store } = node
return props.renderContent
? props.renderContent(h, { _self: nodeInstance, node, data, store })
: renderSlot(tree.ctx.slots, 'default', { node, data }, () => [
h('span', { class: ns.be('node', 'label') }, [node.label]),
])
}
},
})
</script>