diff --git a/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx index defaf0229..ec4cd6b34 100644 --- a/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx @@ -446,7 +446,7 @@ export default function Page({ )} { - if(validateSelection(lastSelection!).length===0){ + if(validateSelection(lastSelection!,edges).length===0){ const {newFlow} = generateFlow(lastSelection!,reactFlowInstance!,getRandomName()); const newGroupNode = generateNodeFromFlow(newFlow) setNodes((oldNodes)=>[...oldNodes.filter((oldNodes)=>!lastSelection?.nodes.some((selectionNode)=>selectionNode.id===oldNodes.id)),newGroupNode]) @@ -464,7 +464,7 @@ export default function Page({ else{ setErrorData({ title: "Invalid selection", - list: validateSelection(lastSelection!), + list: validateSelection(lastSelection!,edges), }); } }}/> diff --git a/src/frontend/src/utils/reactflowUtils.ts b/src/frontend/src/utils/reactflowUtils.ts index 9ddfa5dcb..357fa2113 100644 --- a/src/frontend/src/utils/reactflowUtils.ts +++ b/src/frontend/src/utils/reactflowUtils.ts @@ -486,8 +486,18 @@ export function concatFlows( } export function validateSelection( - selection: OnSelectionChangeParams + selection: OnSelectionChangeParams, + edges: Edge[] ): Array { + //add edges to selection if selection mode selected only nodes + if(selection.edges.length === 0){ + selection.edges = edges.filter( + (edge) => + selection.nodes.some((node) => node.id === edge.target) && + selection.nodes.some((node) => node.id === edge.source) + ); + } + let errorsArray: Array = []; // check if there is more than one node if (selection.nodes.length < 2) {