Normally, browsers will display a context menu when you press right mouse button over some element. If done over amCharts 5, it will display a context menu for a <canvas> element. This tutorial will show how you can disable default behavior of a right-click on canvas elements, as well as attach built-in rightclick event to apply your own logic.
Disabling built-in context menu
To disable default context menu, we'll need to cancel contextmenu event, on the <div> root element is placed in:
root.dom.addEventListener("contextmenu", function(ev) {
ev.preventDefault();
});
root.dom.addEventListener("contextmenu", function(ev) {
ev.preventDefault();
});
Or we can use amCharts 5' built-in utility, which returns a Disposer:
am5.utils.addEventListener(root.dom, "contextmenu", function(ev) {
ev.preventDefault();
});
am5.utils.addEventListener(root.dom, "contextmenu", function(ev) {
ev.preventDefault();
});
And to be completely on the safe side, we can add that disposer to root element disposer list, so when root element is disposed, the event handler goes with it:
root.addDisposer(
am5.utils.addEventListener(root.dom, "contextmenu", function(ev) {
ev.preventDefault();
})
);
root.addDisposer(
am5.utils.addEventListener(root.dom, "contextmenu", function(ev) {
ev.preventDefault();
})
);
Adding right-click event
With built-in context menu out of the way, we can add amCharts rightclick event on the target elements.
The following code adds one to Force-directed tree nodes:
series.nodes.template.events.on("rightclick", function(ev) {
console.log("Right click")
});
series.nodes.template.events.on("rightclick", function(ev) {
console.log("Right click")
});
See the Pen amCharts 5: Disabling built-in context menu by amCharts team (@amcharts) on CodePen.