# Context Menu Technical Reference

Canonical page: https://www.adaptabletools.com/docs/technical-reference-context-menu

## Context Menu Options

| Property | Type | Description |
| --- | --- | --- |
| [customContextMenu](https://www.adaptabletools.com/docs/reference/contextmenuoptions.md#customcontextmenu) | `(menuContext: `[`CustomContextMenuContext`](https://www.adaptabletools.com/docs/reference/customcontextmenucontext.md)`<TData>) => `[`CustomContextMenuItem`](https://www.adaptabletools.com/docs/reference/customcontextmenuitem.md)`[]` | Customises Context Menu (default context menu items are available in provided context) |

`customContextMenu` receives a [`CustomContextMenuContext`](https://www.adaptabletools.com/docs/reference/customcontextmenucontext.md):

| Property | Type | Description |
| --- | --- | --- |
| [defaultAdaptableMenuItems](https://www.adaptabletools.com/docs/reference/customcontextmenucontext.md#defaultadaptablemenuitems) | [`AdaptableSystemContextMenuItem`](https://www.adaptabletools.com/docs/reference/adaptablesystemcontextmenuitem.md)`<`[`AdaptableContextMenuItemName`](https://www.adaptabletools.com/docs/reference/adaptablecontextmenuitemname.md)`>[]` | Flat list of all available AdapTable Menu Items |
| [defaultAdaptableMenuStructure](https://www.adaptabletools.com/docs/reference/customcontextmenucontext.md#defaultadaptablemenustructure) | [`DefaultAdaptableMenuStructure`](https://www.adaptabletools.com/docs/reference/defaultadaptablemenustructure.md) | Default structure of Adaptable Menu Items |
| [defaultAgGridMenuItems](https://www.adaptabletools.com/docs/reference/customcontextmenucontext.md#defaultaggridmenuitems) | [`AgGridMenuItem`](https://www.adaptabletools.com/docs/reference/aggridmenuitem.md)`<`[`AgGridContextMenuItemType`](https://www.adaptabletools.com/docs/reference/aggridcontextmenuitemtype.md)`>[]` | Flat list of all available AG Grid Menu Items |
| [defaultAgGridMenuStructure](https://www.adaptabletools.com/docs/reference/customcontextmenucontext.md#defaultaggridmenustructure) | [`DefaultAgGridMenuStructure`](https://www.adaptabletools.com/docs/reference/defaultaggridmenustructure.md) | Default structure of AG Grid Menu Items |
| [adaptableContext](https://www.adaptabletools.com/docs/reference/customcontextmenucontext.md#adaptablecontext) | `any` | Custom application Context provided in `AdaptableOptions.adaptableContext` |

A menu entry the user supplies is a [`UserContextMenuItem`](https://www.adaptabletools.com/docs/reference/usercontextmenuitem.md):

| Property | Type | Description |
| --- | --- | --- |
| [disabled](https://www.adaptabletools.com/docs/reference/usercontextmenuitem.md#disabled) | `boolean` | Whether menu item is disabled |
| [frameworkComponent](https://www.adaptabletools.com/docs/reference/usercontextmenuitem.md#frameworkcomponent) | [`MenuItemFrameworkComponent`](https://www.adaptabletools.com/docs/reference/menuitemframeworkcomponent.md)`<`[`ContextMenuContext`](https://www.adaptabletools.com/docs/reference/contextmenucontext.md)`>` | Optional Framework Component (React, Angular or Vue) used to render the<br/>content of this menu item.<br/><br/>When supplied, AG Grid renders the component inside the menu row using<br/>its own framework adapter. The component receives AG Grid&#39;s<br/>`CustomMenuItemProps`, with the AdapTable-specific extras<br/>(`adaptableApi`, `menuContext`, plus anything passed via<br/>`menuItemParams`) available as `props.menuItemParams`.<br/><br/>Supported in the React, Vue and Angular variants of AdapTable.<br/><br/>For Vue, supply a factory that returns the Vue Component (NOT a render<br/>call), e.g. `({ adaptableApi }) => MyMenuItem`. AG Grid Vue then<br/>instantiates the component using its own framework adapter and passes<br/>`name`, `icon`, `menuItemParams`, ... as props.<br/><br/>For Angular, supply `{ type: MyMenuItemComponent }` where the component<br/>implements `IMenuItemAngularComp` (with `agInit(params)` to receive<br/>`params.menuItemParams.adaptableApi` and `params.menuItemParams.menuContext`).<br/>The `onSetup` callback on `AngularFrameworkComponent` is NOT honoured<br/>for menu items because AG Grid owns the component lifecycle. |
| [hidden](https://www.adaptabletools.com/docs/reference/usercontextmenuitem.md#hidden) | `boolean` | Whether menu item is hidden |
| [icon](https://www.adaptabletools.com/docs/reference/usercontextmenuitem.md#icon) | [`AdaptableIcon`](https://www.adaptabletools.com/docs/reference/adaptableicon.md) | Optional icon to display |
| [label](https://www.adaptabletools.com/docs/reference/usercontextmenuitem.md#label) | `string` | Text to appear in the Menu Item |
| [menuItemParams](https://www.adaptabletools.com/docs/reference/usercontextmenuitem.md#menuitemparams) | `Record<string, unknown>` | Extra parameters passed through to the Framework Component (alongside<br/>`adaptableApi` and `menuContext`). |
| [menuType](https://www.adaptabletools.com/docs/reference/usercontextmenuitem.md#menutype) | `'User'` | Type of Menu - always &#39;User&#39; |
| [onClick](https://www.adaptabletools.com/docs/reference/usercontextmenuitem.md#onclick) | `(menuContext: `[`ContextMenuContext`](https://www.adaptabletools.com/docs/reference/contextmenucontext.md)`) => void` | Function invoked when the Menu Item is clicked |
| [subMenuItems](https://www.adaptabletools.com/docs/reference/usercontextmenuitem.md#submenuitems) | [`CustomContextMenuItem`](https://www.adaptabletools.com/docs/reference/customcontextmenuitem.md)`[]` | Array of Menu Items, enabling limitless levels of menus |

## Context Menu API

| Method | Returns | Description |
| --- | --- | --- |
| [createDefaultMenuStructure(context)](https://www.adaptabletools.com/docs/reference/contextmenuapi.md#createdefaultmenustructure) | `any` | Creates default menu structure; useful as final line in custom implementation |
| [createGroupMenu(label, subMenuItems, disabled, icon)](https://www.adaptabletools.com/docs/reference/contextmenuapi.md#creategroupmenu) | [`CustomGroupContextMenuItem`](https://www.adaptabletools.com/docs/reference/customgroupcontextmenuitem.md) | Creates a Group Menu Item |
| [getContextMenuItemByLabel(label, context)](https://www.adaptabletools.com/docs/reference/contextmenuapi.md#getcontextmenuitembylabel) | [`AdaptableSystemContextMenuItem`](https://www.adaptabletools.com/docs/reference/adaptablesystemcontextmenuitem.md)`<`[`AdaptableContextMenuItemName`](https://www.adaptabletools.com/docs/reference/adaptablecontextmenuitemname.md)`>` | Returns Menu Item with given label |
| [getContextMenuItemByName(menuItemName, context)](https://www.adaptabletools.com/docs/reference/contextmenuapi.md#getcontextmenuitembyname) | [`AdaptableSystemContextMenuItem`](https://www.adaptabletools.com/docs/reference/adaptablesystemcontextmenuitem.md)`<`[`AdaptableContextMenuItemName`](https://www.adaptabletools.com/docs/reference/adaptablecontextmenuitemname.md)`>` | Returns the Menu Item with given name |
| [getContextMenuItemsByCategories(categories, context)](https://www.adaptabletools.com/docs/reference/contextmenuapi.md#getcontextmenuitemsbycategories) | [`AdaptableSystemContextMenuItem`](https://www.adaptabletools.com/docs/reference/adaptablesystemcontextmenuitem.md)`<`[`AdaptableContextMenuItemName`](https://www.adaptabletools.com/docs/reference/adaptablecontextmenuitemname.md)`>[]` | Gets all Menu Items in given categories |
| [getContextMenuItemsByCategory(category, context)](https://www.adaptabletools.com/docs/reference/contextmenuapi.md#getcontextmenuitemsbycategory) | [`AdaptableSystemContextMenuItem`](https://www.adaptabletools.com/docs/reference/adaptablesystemcontextmenuitem.md)`<`[`AdaptableContextMenuItemName`](https://www.adaptabletools.com/docs/reference/adaptablecontextmenuitemname.md)`>[]` | Gets all Menu Items in a given category |
| [getContextMenuItemsByLabels(labels, context)](https://www.adaptabletools.com/docs/reference/contextmenuapi.md#getcontextmenuitemsbylabels) | [`AdaptableSystemContextMenuItem`](https://www.adaptabletools.com/docs/reference/adaptablesystemcontextmenuitem.md)`<`[`AdaptableContextMenuItemName`](https://www.adaptabletools.com/docs/reference/adaptablecontextmenuitemname.md)`>[]` | Returns Menu Items with given labels |
| [getContextMenuItemsByNames(menuItemNames, context)](https://www.adaptabletools.com/docs/reference/contextmenuapi.md#getcontextmenuitemsbynames) | [`AdaptableSystemContextMenuItem`](https://www.adaptabletools.com/docs/reference/adaptablesystemcontextmenuitem.md)`<`[`AdaptableContextMenuItemName`](https://www.adaptabletools.com/docs/reference/adaptablecontextmenuitemname.md)`>[]` | Returns the Menu Items with given names |
| [hideContextMenu()](https://www.adaptabletools.com/docs/reference/contextmenuapi.md#hidecontextmenu) | `void` | Hide the Context Menu |
| [removeAdaptableContextMenuItemByName(menuItemName, context)](https://www.adaptabletools.com/docs/reference/contextmenuapi.md#removeadaptablecontextmenuitembyname) | `any` | Removes Menu Item with given name |
| [removeAdaptableContextMenuItemsByNames(menuItemNames, context)](https://www.adaptabletools.com/docs/reference/contextmenuapi.md#removeadaptablecontextmenuitemsbynames) | `any` | Removes Menu Items with given names |
