fix(core,nodes): always set a handle id

This commit is contained in:
braks
2022-11-04 16:20:03 +01:00
committed by Braks
parent 73dfca5f57
commit 84adeb7e39
@@ -6,7 +6,7 @@ import { ConnectionMode } from '../../types'
import type { HandleProps } from '../../types/handle' import type { HandleProps } from '../../types/handle'
import { getDimensions } from '../../utils' import { getDimensions } from '../../utils'
const { position = 'top' as Position, connectable = true, id, isValidConnection, ...props } = defineProps<HandleProps>() const { position = 'top' as Position, connectable, id, isValidConnection, ...props } = defineProps<HandleProps>()
const type = toRef(props, 'type', 'source') const type = toRef(props, 'type', 'source')
@@ -16,7 +16,7 @@ const { id: nodeId, node, nodeEl, connectedEdges } = useNode()
const handle = ref<HTMLDivElement>() const handle = ref<HTMLDivElement>()
const handleId = $computed(() => id ?? (connectionMode === ConnectionMode.Strict ? null : `${nodeId}__handle-${position}`)) const handleId = $computed(() => id ?? `${nodeId}__handle-${position}`)
const { onMouseDown, onClick } = useHandle({ const { onMouseDown, onClick } = useHandle({
nodeId, nodeId,
@@ -35,10 +35,11 @@ const isConnectable = computed(() => {
return connectable(node, connectedEdges.value) return connectable(node, connectedEdges.value)
} }
return connectable return connectable || true
}) })
onMounted(() => { onMounted(() => {
// set up handle bounds if they don't exist yet (i.e. the handle was added after the node has already been mounted)
const existingBounds = node.handleBounds[type.value]?.find((b) => b.id === handleId) const existingBounds = node.handleBounds[type.value]?.find((b) => b.id === handleId)
if (!vueFlowRef || existingBounds) return if (!vueFlowRef || existingBounds) return