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:
41
package/src/components/Edges/BaseEdge.ts
Normal file
41
package/src/components/Edges/BaseEdge.ts
Normal 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)
|
||||
@@ -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>
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user