logo

G6

  • Docs
  • API
  • Playground
  • Community
  • Productsantv logo arrow
  • 5.0.47
  • Introduction
  • Data
  • Getting Started
    • Quick Start
    • Installation
    • Integration
      • react
      • vue
      • angular
    • Step-by-step guide
  • Graph
    • Extensions En
    • Graph
    • Options
    • extension
  • Element
    • Element Overview
    • Element State
    • Node
      • Node Overview
      • Build-in Node
        • Common Node Configurations
        • Diamond
        • Donut
        • Ellipse
        • Hexagon
        • Html
        • Image
        • Rect
        • Star
        • Triangle
        • Circle
      • Custom Node
      • Define Nodes with React
    • Edge
      • Edge Overview
      • Build-in Edge
        • Common Edge Configurations
        • Cubic Bezier Curve
        • CubicHorizontal Bezier Curve
        • CubicVertical Bezier Curve
        • Line
        • Polyline
        • Quadratic Bezier Curve
      • Custom Edge
    • Combo
      • Combo Overview
      • Build-in Combo
        • Circle
        • Combo Configuration Options
        • Rect
      • Custom Combo
    • Shape
      • Shape and KeyShape
      • Atomic Shapes and Their Properties
      • Design and Implementation of Composite Shape
  • Layout
    • Layout Overview
    • Build-in Layout
      • 3D Force-Directed Layout
      • AntvDagre Layout
      • Circular Layout
      • ComboCombined Layout
      • Common Layout Configuration Options
      • CompactBox
      • Concentric Layout
      • D3 Force-Directed Layout
      • Dagre Layout
      • Dendrogram Layout
      • Fishbone Layout
      • Force Force-directed Layout
      • ForceAtlas2 Force-directed Layout
      • Fruchterman Force-directed Layout
      • Grid Layout
      • Indented Tree
      • MDS High-dimensional Data Dimensionality Reduction Layout
      • Mindmap Tree
      • Radial Layout
      • Random Layout
      • Snake Layout
    • Custom Layout
  • Behavior
    • Behavior Overview
    • Build-in Behavior
      • AutoAdaptLabel
      • BrushSelect
      • ClickSelect
      • CollapseExpand
      • CreateEdge
      • DragCanvas
      • DragElement
      • DragElementForce
      • FixElementSize
      • FocusElement
      • HoverActivate
      • LassoSelect
      • OptimizeViewportTransform
      • ScrollCanvas
      • ZoomCanvas
    • Custom Behavior
  • Plugin
    • Plugin Overview
    • Build-in Plugin
      • Background
      • BubbleSets
      • Contextmenu
      • EdgeBundling
      • EdgeFilterLens
      • Fisheye
      • Fullscreen
      • GridLine
      • History
      • Hull
      • Legend
      • Minimap
      • Snapline
      • Timebar
      • Toolbar
      • Tooltip
      • Watermark
    • Custom Plugin
  • Transform
    • Data Transformation Overview
    • Build-in Transform
      • MapNodeSize
      • PlaceRadialLabels
      • ProcessParallelEdges
    • Custom Transform
  • Theme
    • Theme Overview
    • Custom Theme
    • Palette
    • Custom Palette
  • Animation
    • Animation Overview
    • Custom Animation
  • Further Reading
    • Event
    • renderer
    • coordinate
    • download-image
    • Using Iconfont
    • Use 3D
    • Bundle Project
  • What's new
    • Feature
    • Upgrade To 5.0
  • FAQ
  • contribute

Contextmenu

Previous
BubbleSets
Next
EdgeBundling

Resources

Ant Design
Galacea Effects
Umi-React Application Framework
Dumi-Component doc generator
ahooks-React Hooks Library

Community

Ant Financial Experience Tech
seeconfSEE Conf-Experience Tech Conference

Help

GitHub
StackOverflow

more productsMore Productions

Ant DesignAnt Design-Enterprise UI design language
yuqueYuque-Knowledge creation and Sharing tool
EggEgg-Enterprise-class Node development framework
kitchenKitchen-Sketch Tool set
GalaceanGalacean-互动图形解决方案
xtechLiven Experience technology
© Copyright 2025 Ant Group Co., Ltd..备案号:京ICP备15032932号-38

Loading...

Overview

The context menu, also known as the right-click menu, is a menu that appears when a user clicks on a specific area. It supports triggering custom events before and after clicking. Through the context menu, specific element operations can be integrated, making it convenient to control a particular item when needed.

Use Cases

This plugin is mainly used for:

  • Various interactions with elements: viewing nodes, viewing edges, deleting nodes, etc.

Basic Usage

Below is a simple example of initializing the Contextmenu plugin:

const graph = new Graph({
plugins: [
{
type: 'contextmenu',
// Enable right-click menu only on nodes, by default all elements are enabled
enable: (e) => e.targetType === 'node',
getItems: () => {
return [{ name: 'View Details', value: 'detail' }];
},
onClick: (value) => {
if (value === 'detail') console.log('Display node details');
},
},
],
});

Configuration Options

PropertyDescriptionTypeDefault ValueRequired
classNameAdditional class name for the menu DOMstringg6-contextmenu
triggerHow to trigger the right-click menu: contextmenu for right-click, click for clickclick | contextmenucontextmenu
offsetOffset of the menu display in X and Y directions[number, number][4, 4]
onClickCallback method triggered after the menu is clicked, example(value: string, target: HTMLElement, current: Element) => void-
getItemsReturns the list of menu items, supports Promise type return value. It is a shortcut configuration for getContent(event: IElementEvent) => Item[] | Promise<Item[]>-
getContentReturns the content of the menu, supports Promise type return value, can also use getItems for shortcut configuration(event: IElementEvent) => HTMLElement | string | Promise<HTMLElement | string>-
loadingContentMenu content used when getContent returns a PromiseHTMLElement | string-
enableWhether it is available, determines whether the right-click menu is supported by parameters, by default all are availableboolean | (event: IElementEvent) => booleantrue

Item

Each menu item (Item) contains the following properties:

PropertyDescriptionTypeRequired
nameName displayed for the menu itemstring✓
valueValue corresponding to the menu itemstring✓

onClick

This function is triggered after clicking a menu item, and the function has three parameters:

  • value: Corresponds to the value of the menu item
  • target: The DOM node of the menu item container
  • current: The element that triggered the menu item, for example, if it is a node, you can use current to get the node information (id), or to modify the element

Code Examples

Basic Right-click Menu

const data = {
nodes: [
{ id: 'node-1', type: 'circle', data: { cluster: 'node-type1' } },
{ id: 'node-2', type: 'rect', data: { cluster: 'node-type2' } },
],
edges: [{ source: 'node-1', target: 'node-2', data: { cluster: 'edge-type1' } }],
};
const graph = new Graph({
data,
layout: { type: 'grid' },
plugins: [
{
type: 'contextmenu',
trigger: 'contextmenu', // 'click' or 'contextmenu'
onClick: (value, target, current) => {
alert('You have clicked the「' + value + '」item');
},
getItems: () => {
return [
{ name: 'View Details', value: 'detail' },
{ name: 'Delete', value: 'delete' },
];
},
},
],
});

Edge Right-click Menu

const data = {
nodes: [
{ id: 'node-1', type: 'circle', data: { cluster: 'node-type1' } },
{ id: 'node-2', type: 'rect', data: { cluster: 'node-type2' } },
],
edges: [{ source: 'node-1', target: 'node-2', data: { cluster: 'edge-type1' } }],
};
const graph = new Graph({
data,
layout: { type: 'grid' },
plugins: [
{
type: 'contextmenu',
trigger: 'contextmenu',
getItems: () => {
return [{ name: 'Change Start Point', value: 'change' }];
},
onClick: (value) => {
if (value === 'change') console.log('Execute change start point operation here');
},
// Enable right-click menu only on edges
enable: (e) => e.targetType === 'edge',
},
],
});

Asynchronous Loading of Menu Items

const data = {
nodes: [
{ id: 'node-1', type: 'circle', data: { cluster: 'node-type1' } },
{ id: 'node-2', type: 'rect', data: { cluster: 'node-type2' } },
],
edges: [{ source: 'node-1', target: 'node-2', data: { cluster: 'edge-type1' } }],
};
const graph = new Graph({
data,
layout: { type: 'grid' },
plugins: [
{
type: 'contextmenu',
trigger: 'contextmenu',
getItems: async () => {
// Toolbar configuration can be obtained from the server or other asynchronous sources
const response = await fetch('/api/contextmenu-config');
const items = await response.json();
return items;
},
// Enable right-click menu only on nodes
enable: (e) => e.targetType === 'node',
},
],
});

Dynamic Control of Menu Items

const data = {
nodes: [
{ id: 'node-1', type: 'circle', data: { cluster: 'node-type1' } },
{ id: 'node-2', type: 'rect', data: { cluster: 'node-type2' } },
],
edges: [{ source: 'node-1', target: 'node-2', data: { cluster: 'edge-type1' } }],
};
const graph = new Graph({
data,
layout: { type: 'grid' },
plugins: [
{
type: 'contextmenu',
trigger: 'contextmenu',
getItems: (e) => {
if (e.target.id === 'node-1') {
return [
{
name: 'Delete Node',
value: 'delete',
},
];
}
if (e.target.type === 'edge') {
return [
{
name: 'Move Edge',
value: 'move',
},
];
}
return [];
},
},
],
});

Practical Examples