Interactive Edges
By default, edges in the graph are not interactive.
To enable interaction with edges, you can pass the interactiveDistance
parameter to the edge shape constructor.
This example shows how to handle click event for an edge:
import { CanvasBuilder, BezierEdgeShape } from "@html-graph/html-graph";
const element = document.getElementById("canvas");
const canvas = new CanvasBuilder(element)
.setDefaults({
edges: {
shapeFactory: (edgeId) => {
const shape = new BezierEdgeShape({
hasTargetArrow: true,
interactiveDistance: 10,
});
shape.element.addEventListener("click", (event) => {
console.log(`clicked on edge with id: ${edgeId}`);
});
return shape;
},
},
})
.build();
Try out this demo, which toggles edge line animated dash on edge click:
When used with connectable ports it is recommended to set edge priority below node priority to ensure ports remain accessible:
const canvas = new CanvasBuilder(element)
.setDefaults({
nodes: {
priority: 1, // higher z-index
},
edges: {
priority: 0, // lower z-index
shapeFactory: (edgeId) => {
const shape = new BezierEdgeShape({
hasTargetArrow: true,
interactiveDistance: 10,
});
// ... event handlers ...
return shape;
},
},
})
.enableUserDraggableNodes({
moveEdgesOnTop: false, // keeps edges under nodes during node dragging
})
.enableUserTransformableViewport()
.enableBackground()
.build();
Related Pages