fix edge selection: consistent behaviour with node selection closes
This commit is contained in:
@@ -82,15 +82,25 @@ export default (EdgeComponent: ComponentType<EdgeProps>) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const onEdgeClick = (event: React.MouseEvent<SVGGElement, MouseEvent>): void => {
|
const onEdgeClick = (event: React.MouseEvent<SVGGElement, MouseEvent>): void => {
|
||||||
const { edges, addSelectedEdges } = store.getState();
|
const { edges, addSelectedEdges, unselectNodesAndEdges, multiSelectionActive } = store.getState();
|
||||||
|
const edge = edges.find((e) => e.id === id);
|
||||||
|
|
||||||
|
if (!edge) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (isSelectable) {
|
if (isSelectable) {
|
||||||
store.setState({ nodesSelectionActive: false });
|
store.setState({ nodesSelectionActive: false });
|
||||||
addSelectedEdges([id]);
|
|
||||||
|
if (edge.selected && multiSelectionActive) {
|
||||||
|
unselectNodesAndEdges({ nodes: [], edges: [edge] });
|
||||||
|
edgeRef.current?.blur();
|
||||||
|
} else {
|
||||||
|
addSelectedEdges([id]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (onClick) {
|
if (onClick) {
|
||||||
const edge = edges.find((e) => e.id === id)!;
|
|
||||||
onClick(event, edge);
|
onClick(event, edge);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ export function handleNodeClick({
|
|||||||
if (!node.selected) {
|
if (!node.selected) {
|
||||||
addSelectedNodes([id]);
|
addSelectedNodes([id]);
|
||||||
} else if (unselect || (node.selected && multiSelectionActive)) {
|
} else if (unselect || (node.selected && multiSelectionActive)) {
|
||||||
unselectNodesAndEdges({ nodes: [node] });
|
unselectNodesAndEdges({ nodes: [node], edges: [] });
|
||||||
|
|
||||||
requestAnimationFrame(() => nodeRef?.current?.blur());
|
requestAnimationFrame(() => nodeRef?.current?.blur());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user