refactor(edges): Change base edge to functional component

# What's changed?

* Change base edge into a functional component (doesn't need a state)
* Export base edge for convenience
This commit is contained in:
Braks
2022-04-21 16:39:17 +02:00
parent 6c2c7c4fd4
commit f1bbed1751
3 changed files with 42 additions and 46 deletions

View File

@@ -0,0 +1,41 @@
import { CSSProperties, FunctionalComponent } from 'vue'
import EdgeText from './EdgeText.vue'
interface Props {
centerX: number
centerY: number
path: string
label?: any
style?: CSSProperties
labelStyle?: any
labelShowBg?: boolean
labelBgStyle?: any
labelBgPadding?: [number, number]
labelBgBorderRadius?: number
markerStart?: string
markerEnd?: string
}
export default (function BaseEdge(props: Props, { attrs }) {
return [
h('path', {
style: attrs.style,
d: props.path,
class: 'vue-flow__edge-path',
markerEnd: props.markerEnd,
markerStart: props.markerStart,
}),
props.label
? h(EdgeText, {
x: props.centerX,
y: props.centerY,
label: props.label,
labelStyle: props.labelStyle,
labelShowBg: props.labelShowBg,
labelBgStyle: props.labelBgStyle,
labelBgPadding: props.labelBgPadding,
labelBgBorderRadius: props.labelBgBorderRadius,
})
: null,
]
} as FunctionalComponent)

View File

@@ -1,46 +0,0 @@
<script lang="ts" setup>
import { CSSProperties } from 'vue'
import EdgeText from './EdgeText.vue'
interface Props {
centerX: number
centerY: number
path: string
label?: any
style?: CSSProperties
labelStyle?: any
labelShowBg?: boolean
labelBgStyle?: any
labelBgPadding?: [number, number]
labelBgBorderRadius?: number
markerStart?: string
markerEnd?: string
}
const props = defineProps<Props>()
</script>
<script lang="ts">
export default {
name: 'BaseEdge',
inheritAttrs: false,
}
</script>
<template>
<path
:style="props.style"
:d="props.path"
class="vue-flow__edge-path"
:marker-end="props.markerEnd"
:marker-start="props.markerStart"
/>
<EdgeText
v-if="props.label"
:x="props.centerX"
:y="props.centerY"
:label="props.label"
:label-style="props.labelStyle"
:label-show-bg="props.labelShowBg"
:label-bg-style="props.labelBgStyle"
:label-bg-padding="props.labelBgPadding"
:label-bg-border-radius="props.labelBgBorderRadius"
/>
</template>

View File

@@ -6,6 +6,7 @@ export { default as StepEdge } from './components/Edges/StepEdge.vue'
export { default as BezierEdge } from './components/Edges/BezierEdge.vue'
export { default as SimpleBezierEdge } from './components/Edges/SimpleBezierEdge.vue'
export { default as SmoothStepEdge } from './components/Edges/SmoothStepEdge.vue'
export { default as BaseEdge } from './components/Edges/BaseEdge'
export {
getBezierPath,