fix: nodes as fragments

feat: accept vnode as edge text
This commit is contained in:
Braks
2021-10-20 22:39:54 +02:00
parent b2b1fe822f
commit 64a4b8c418
9 changed files with 53 additions and 40 deletions
+1 -1
View File
@@ -123,7 +123,7 @@ const edgePos = computed(() =>
v-if="!props.edge.isHidden && isVisible(edgePos)"
:class="[
'revue-flow__edge',
`revue-flow__edge-${props.type.name || 'default'}`,
`revue-flow__edge-${props.edge.type || 'default'}`,
{
selected: isSelected,
animated: props.edge.animated,
+11 -2
View File
@@ -4,7 +4,12 @@ import { HTMLAttributes, VNode } from 'vue'
interface EdgeTextProps extends HTMLAttributes {
x: number
y: number
label?: string | VNode
label?:
| string
| {
component: VNode
props?: any
}
labelStyle?: any
labelShowBg?: boolean
labelBgStyle?: any
@@ -38,7 +43,11 @@ const { width = 0, height = 0, x = 0, y = 0 } = useElementBounding(edgeRef)
:ry="props.labelBgBorderRadius"
/>
<text ref="edge-text" class="revue-flow__edge-text" :y="height / 2" dy="0.3em" :style="props.labelStyle">
<component :is="props.label" v-if="typeof props.label !== 'string'" />
<component
:is="props.label.component"
v-if="typeof props.label.component !== 'undefined'"
v-bind="{ ...props, ...props.label.props, width, height, x, y }"
/>
<template v-else>
{{ props.label }}
</template>