# Column Menu Technical Reference

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

## Column Menu Options

| Property | Type | Description |
| --- | --- | --- |
| [customColumnMenu](https://www.adaptabletools.com/docs/reference/columnmenuoptions.md#customcolumnmenu) | `(menuContext: `[`CustomColumnMenuContext`](https://www.adaptabletools.com/docs/reference/customcolumnmenucontext.md)`<TData>) => `[`CustomColumnMenuItem`](https://www.adaptabletools.com/docs/reference/customcolumnmenuitem.md)`[]` | Customises Column Menu (default column menu items are available in the provided context) |

`customColumnMenu` receives a [`CustomColumnMenuContext`](https://www.adaptabletools.com/docs/reference/customcolumnmenucontext.md):

| Property | Type | Description |
| --- | --- | --- |
| [defaultAdaptableMenuItems](https://www.adaptabletools.com/docs/reference/customcolumnmenucontext.md#defaultadaptablemenuitems) | [`AdaptableSystemColumnMenuItem`](https://www.adaptabletools.com/docs/reference/adaptablesystemcolumnmenuitem.md)`<`[`AdaptableColumnMenuItemName`](https://www.adaptabletools.com/docs/reference/adaptablecolumnmenuitemname.md)`>[]` | Flat list of all available AdapTable Menu Items |
| [defaultAdaptableMenuStructure](https://www.adaptabletools.com/docs/reference/customcolumnmenucontext.md#defaultadaptablemenustructure) | `(`[`AdaptableSystemColumnMenuItem`](https://www.adaptabletools.com/docs/reference/adaptablesystemcolumnmenuitem.md)`<`[`AdaptableColumnMenuItemName`](https://www.adaptabletools.com/docs/reference/adaptablecolumnmenuitemname.md)`> \| `[`MenuSeparator`](https://www.adaptabletools.com/docs/reference/menuseparator.md)`)[]` | Default structure of Adaptable Menu Items |
| [defaultAgGridMenuItems](https://www.adaptabletools.com/docs/reference/customcolumnmenucontext.md#defaultaggridmenuitems) | [`AgGridMenuItem`](https://www.adaptabletools.com/docs/reference/aggridmenuitem.md)`<`[`AgGridColumnMenuItemType`](https://www.adaptabletools.com/docs/reference/aggridcolumnmenuitemtype.md)`>[]` | Flat list of all available AG Grid Menu Items |
| [defaultAgGridMenuStructure](https://www.adaptabletools.com/docs/reference/customcolumnmenucontext.md#defaultaggridmenustructure) | `(`[`AgGridMenuItem`](https://www.adaptabletools.com/docs/reference/aggridmenuitem.md)`<`[`AgGridColumnMenuItemType`](https://www.adaptabletools.com/docs/reference/aggridcolumnmenuitemtype.md)`> \| \{ menuType: 'Group'; label: string; subMenuItems: `[`AgGridMenuItem`](https://www.adaptabletools.com/docs/reference/aggridmenuitem.md)`<`[`AgGridColumnMenuItemType`](https://www.adaptabletools.com/docs/reference/aggridcolumnmenuitemtype.md)`>[]; disabled?: boolean; icon?: `[`AdaptableIcon`](https://www.adaptabletools.com/docs/reference/adaptableicon.md)`; \})[]` | Default structure of AG Grid Menu Items |
| [adaptableContext](https://www.adaptabletools.com/docs/reference/customcolumnmenucontext.md#adaptablecontext) | `any` | Custom application Context provided in `AdaptableOptions.adaptableContext` |

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

| Property | Type | Description |
| --- | --- | --- |
| [disabled](https://www.adaptabletools.com/docs/reference/usercolumnmenuitem.md#disabled) | `boolean` | Whether menu item is disabled |
| [frameworkComponent](https://www.adaptabletools.com/docs/reference/usercolumnmenuitem.md#frameworkcomponent) | [`MenuItemFrameworkComponent`](https://www.adaptabletools.com/docs/reference/menuitemframeworkcomponent.md)`<`[`ColumnMenuContext`](https://www.adaptabletools.com/docs/reference/columnmenucontext.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/usercolumnmenuitem.md#hidden) | `boolean` | Whether menu item is hidden |
| [icon](https://www.adaptabletools.com/docs/reference/usercolumnmenuitem.md#icon) | [`AdaptableIcon`](https://www.adaptabletools.com/docs/reference/adaptableicon.md) | Optional icon to display |
| [label](https://www.adaptabletools.com/docs/reference/usercolumnmenuitem.md#label) | `string` | Text to appear in the Menu Item |
| [menuItemParams](https://www.adaptabletools.com/docs/reference/usercolumnmenuitem.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/usercolumnmenuitem.md#menutype) | `'User'` | Type of Menu - always &#39;User&#39; |
| [onClick](https://www.adaptabletools.com/docs/reference/usercolumnmenuitem.md#onclick) | `(menuContext: `[`ColumnMenuContext`](https://www.adaptabletools.com/docs/reference/columnmenucontext.md)`) => void` | Function invoked when the Menu Item is clicked |
| [subMenuItems](https://www.adaptabletools.com/docs/reference/usercolumnmenuitem.md#submenuitems) | [`CustomColumnMenuItem`](https://www.adaptabletools.com/docs/reference/customcolumnmenuitem.md)`[]` | Array of Menu Items, enabling limitless levels of menus |

## Column Menu API

| Method | Returns | Description |
| --- | --- | --- |
| [createDefaultMenuStructure(context)](https://www.adaptabletools.com/docs/reference/columnmenuapi.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/columnmenuapi.md#creategroupmenu) | [`CustomGroupColumnMenuItem`](https://www.adaptabletools.com/docs/reference/customgroupcolumnmenuitem.md) | Creates a Group Menu Item |
| [getColumnMenuItemByLabel(label, context)](https://www.adaptabletools.com/docs/reference/columnmenuapi.md#getcolumnmenuitembylabel) | [`AdaptableSystemColumnMenuItem`](https://www.adaptabletools.com/docs/reference/adaptablesystemcolumnmenuitem.md)`<`[`AdaptableColumnMenuItemName`](https://www.adaptabletools.com/docs/reference/adaptablecolumnmenuitemname.md)`>` | Returns Menu Item with given label |
| [getColumnMenuItemByName(menuItemName, context)](https://www.adaptabletools.com/docs/reference/columnmenuapi.md#getcolumnmenuitembyname) | [`AdaptableSystemColumnMenuItem`](https://www.adaptabletools.com/docs/reference/adaptablesystemcolumnmenuitem.md)`<`[`AdaptableColumnMenuItemName`](https://www.adaptabletools.com/docs/reference/adaptablecolumnmenuitemname.md)`>` | Returns the Menu Item with given name |
| [getColumnMenuItemsByCategories(categories, context)](https://www.adaptabletools.com/docs/reference/columnmenuapi.md#getcolumnmenuitemsbycategories) | [`AdaptableSystemColumnMenuItem`](https://www.adaptabletools.com/docs/reference/adaptablesystemcolumnmenuitem.md)`<`[`AdaptableColumnMenuItemName`](https://www.adaptabletools.com/docs/reference/adaptablecolumnmenuitemname.md)`>[]` | Gets all Menu Items in given categories |
| [getColumnMenuItemsByCategory(category, context)](https://www.adaptabletools.com/docs/reference/columnmenuapi.md#getcolumnmenuitemsbycategory) | [`AdaptableSystemColumnMenuItem`](https://www.adaptabletools.com/docs/reference/adaptablesystemcolumnmenuitem.md)`<`[`AdaptableColumnMenuItemName`](https://www.adaptabletools.com/docs/reference/adaptablecolumnmenuitemname.md)`>[]` | Gets all Menu Items in a given category |
| [getColumnMenuItemsByLabels(labels, context)](https://www.adaptabletools.com/docs/reference/columnmenuapi.md#getcolumnmenuitemsbylabels) | [`AdaptableSystemColumnMenuItem`](https://www.adaptabletools.com/docs/reference/adaptablesystemcolumnmenuitem.md)`<`[`AdaptableColumnMenuItemName`](https://www.adaptabletools.com/docs/reference/adaptablecolumnmenuitemname.md)`>[]` | Returns Menu Items with given labels |
| [getColumnMenuItemsByNames(menuItemNames, context)](https://www.adaptabletools.com/docs/reference/columnmenuapi.md#getcolumnmenuitemsbynames) | [`AdaptableSystemColumnMenuItem`](https://www.adaptabletools.com/docs/reference/adaptablesystemcolumnmenuitem.md)`<`[`AdaptableColumnMenuItemName`](https://www.adaptabletools.com/docs/reference/adaptablecolumnmenuitemname.md)`>[]` | Returns the Menu Items with given names |
| [hideColumnMenu()](https://www.adaptabletools.com/docs/reference/columnmenuapi.md#hidecolumnmenu) | `void` | Hide the Column Menu |
| [removeAdaptableColumnMenuItemByName(menuItemName, context)](https://www.adaptabletools.com/docs/reference/columnmenuapi.md#removeadaptablecolumnmenuitembyname) | `any` | Removes Menu Item with given name |
| [removeAdaptableColumnMenuItemsByNames(menuItemNames, context)](https://www.adaptabletools.com/docs/reference/columnmenuapi.md#removeadaptablecolumnmenuitemsbynames) | `any` | Removes Menu Items with given names |
| [showColumnMenu(columnKey)](https://www.adaptabletools.com/docs/reference/columnmenuapi.md#showcolumnmenu) | `void` | Opens the Column Menu for a column. |
