From a7845c6032bce197392112544d18e6df77bfddf4 Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Wed, 12 Oct 2022 16:10:48 +0200 Subject: [PATCH] fix(handles): only check for matching handle id if an id exists --- packages/core/src/components/Handle/Handle.vue | 5 ++++- packages/core/src/types/handle.ts | 8 +++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/core/src/components/Handle/Handle.vue b/packages/core/src/components/Handle/Handle.vue index 338f5b01..b67835c4 100644 --- a/packages/core/src/components/Handle/Handle.vue +++ b/packages/core/src/components/Handle/Handle.vue @@ -27,7 +27,10 @@ const { onMouseDown, onClick } = useHandle({ const isConnectable = computed(() => { if (isString(connectable) && connectable === 'single') { - return !connectedEdges.value.some((edge) => edge[type.value] === nodeId && edge[`${type.value}Handle`] === handleId) + return !connectedEdges.value.some((edge) => { + const handle = edge[`${type.value}Handle`] + return edge[type.value] === nodeId && !!handle ? edge[`${type.value}Handle`] === handleId : true + }) } else if (isFunction(connectable)) { return connectable(node, connectedEdges.value) } diff --git a/packages/core/src/types/handle.ts b/packages/core/src/types/handle.ts index 55bad53b..2376f491 100644 --- a/packages/core/src/types/handle.ts +++ b/packages/core/src/types/handle.ts @@ -22,7 +22,13 @@ export type ValidConnectionFunc = ( elements: { edges: GraphEdge[]; sourceNode: GraphNode; targetNode: GraphNode }, ) => boolean -/** set to true to allow unlimited connections, single for only one connection or use a cb function to determine connect-ability */ +/** + * set to true to allow unlimited connections, + * single for only one connection + * or use a cb function to determine connect-ability + * + * if set to single and the handle already has more than one connection, it will act the same as setting it to false + */ export type HandleConnectable = boolean | 'single' | ((node: GraphNode, connectedEdges: GraphEdge[]) => boolean) export interface HandleProps {