# Column Menu Default Structure

Canonical page: https://www.adaptabletools.com/docs/ui-column-menu-default-structure

- AdapTable provides a default menu structure for the Column Menu (column header menu)
- We describe it in detail here so that developers can easily move or remove items

AdapTable appends a large number of menu items to the AG Grid [Column Menu](https://www.adaptabletools.com/docs/ui-column-menu/index.md).

The items available for a given column depend on a number of factors including: the column’s data type, whether it is calculated / free text / sparkline, layout editability, filters, entitlements, and other state.

By default AdapTable groups its items into **six logical blocks**.

- Only the first block is separated from the rest by a menu divider
- The other blocks appear consecutively (then AG Grid items follow).

Developers can use the `customColumnMenu` property in [Column Menu Options](https://www.adaptabletools.com/docs/technical-reference-column-menu/index.md) to reorder, restructure, or remove any of these items (and to add custom items).

- This page lists **all** Column Menu items AdapTable can provide and their default arrangement
- The menu displayed varies according to [Entitlements](https://www.adaptabletools.com/docs/handbook-permissioning/index.md), module visibility, and column / layout conditions
- When a group has only **one** visible child, AdapTable promotes that child to the root (and removes the group)

## Calculated Column

When the Calculated Column can be deleted, items appear under a **Calculated Column** group (`calculated-column-group`). Otherwise **Edit Calculated Column** is shown as a root-level item.

| Label                    | Name                       | Module                                                                     | When displayed                                      |
| ------------------------ | -------------------------- | -------------------------------------------------------------------------- | --------------------------------------------------- |
| Edit Calculated Column   | `calculated-column-edit`   | [Calculated Column](https://www.adaptabletools.com/docs/handbook-calculated-column/index.md) | Calculated column; module editable                  |
| Delete Calculated Column | `calculated-column-delete` | [Calculated Column](https://www.adaptabletools.com/docs/handbook-calculated-column/index.md) | Calculated column; module editable; can be deleted  |

---

## UI Components

### Settings Panel

From [Settings Panel](https://www.adaptabletools.com/docs/ui-settings-panel/index.md):

| Label               | Name                  | When displayed |
| ------------------- | --------------------- | -------------- |
| Open Settings Panel | `settings-panel-open` | Module visible |

### Dashboard

From [Dashboard](https://www.adaptabletools.com/docs/ui-dashboard/index.md). When more than one item is visible, they are grouped under:

| Label     | Name              | Type   |
| --------- | ----------------- | ------ |
| Dashboard | `dashboard-group` | Parent |

| Label     | Name                  | When displayed                              |
| --------- | --------------------- | ------------------------------------------- |
| Configure | `dashboard-configure` | Module editable                             |
| Expand    | `dashboard-expand`    | Dashboard has tabs and is collapsed         |
| Collapse  | `dashboard-collapse`  | Dashboard has tabs and is expanded          |
| Dock      | `dashboard-dock`      | Dashboard is floating                       |
| Float     | `dashboard-float`     | Dashboard is docked and floating is allowed |
| Hide      | `dashboard-hide`      | Dashboard is visible                        |
| Show      | `dashboard-show`      | Dashboard is hidden                         |

## Column Filter (filter actions)

When the column **already has** a column filter, **Clear Filter** and **Suspend** / **Unsuspend** are wrapped under a root parent:

| Label                             | Name                                                | Module                                                             | When displayed                       |
| --------------------------------- | --------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------ |
| Filter                            | `column-filter-group`                               | [Column Filter](https://www.adaptabletools.com/docs/handbook-column-filter/index.md) | A Column Filter exists on the column |
| Clear Filter                      | `column-filter-clear`                               | Column Filter                                                      | Child of **Filter**                  |
| Suspend Filter / Unsuspend Filter | `column-filter-suspend` / `column-filter-unsuspend` | Column Filter                                                      | Child of **Filter**                  |

- **Show Filter Bar** / **Hide Filter Bar** (`column-filter-bar-show` / `column-filter-bar-hide`) are **not** in this group
- They appear under **Grid** (see below) when the quick filter bar is available

## Styling

Format Column, Styled Column, and Flashing Cell items are nested under a **Styling** parent:

| Label   | Name            | Type   |
| ------- | --------------- | ------ |
| Styling | `styling-group` | Parent |

Child order in code: **Format Column** items → **Styled Column** items → **Flashing Cell** items.

### Format Column

From [Format Column](https://www.adaptabletools.com/docs/handbook-column-formatting/index.md). When **Create** and **Edit** (or **Show Current**) are both visible, they are wrapped under a parent labelled **Format Column** (internal name `menu-group`).

| Label                | Name                 | When displayed                                                               |
| -------------------- | -------------------- | ---------------------------------------------------------------------------- |
| Create Format Column | `format-column-add`  | Module editable; column is not a sparkline                                   |
| Edit Format Column   | `format-column-edit` | Exactly one format column targets this column                                |
| Show Current         | `format-column-edit` | More than one format column targets this column (opens Format Column screen) |

### Styled Column

From [Styled Column](https://www.adaptabletools.com/docs/handbook-styled-column-overview/index.md). Items are listed **flat** under **Styling** (not grouped per style type).

**When a styled column already exists** on the column (and is not read-only), a single **Edit …** item is shown (`styled-column-*-edit` — label reflects the type, e.g. **Edit Gradient Style**).

**When no styled column exists**, **Create …** items depend on `column.dataType` (module editable; not a tree column):

| Data type                  | Create menu items (`styled-column-*-add`)                                                      |
| -------------------------- | ---------------------------------------------------------------------------------------------- |
| `number`                   | Gradient Column, Percent Bar, Bullet Chart, Range Bar, Rating Column, Badge Style, Icon Column |
| `text`                     | Badge Style, Icon Column                                                                       |
| `textArray`, `numberArray` | Badge Style only                                                                               |

**Sparkline** columns (`numberArray` with sparkline): **Create** / **Edit Sparkline Column** (`styled-column-sparkline-add` / `styled-column-sparkline-edit`) when sparklines are enabled and the column qualifies — handled before the generic branch above.

See the [Styled Column](https://www.adaptabletools.com/docs/handbook-styled-column-overview/index.md) handbook pages for each style type.

### Flashing Cell

From [Flashing Cell](https://www.adaptabletools.com/docs/handbook-flashing-cell/index.md):

| Label                | Name                   | When displayed                                                                            |
| -------------------- | ---------------------- | ----------------------------------------------------------------------------------------- |
| Add Flashing Cell    | `flashing-cell-add`    | Module editable; not calculated / tree column; no flashing definition in scope for column |
| Delete Flashing Cell | `flashing-cell-delete` | Flashing definition already applies to column                                             |

## Grid

Layout, filter bar visibility, selection, Cell Summary, Charting, Data Import, System Status, and Grid Info are nested under **Grid** (`grid-group`).

| Label                             | Name                                                | Module                                                                     | When displayed                                                  |
| --------------------------------- | --------------------------------------------------- | -------------------------------------------------------------------------- | --------------------------------------------------------------- |
| Grid                              | `grid-group`                                        | —                                                                          | When any child is visible                                       |
| Edit Layout                       | `layout-edit`                                       | [Layout](https://www.adaptabletools.com/docs/handbook-layouts/index.md)                      | Module editable; layout not read-only                           |
| Show Filter Bar / Hide Filter Bar | `column-filter-bar-show` / `column-filter-bar-hide` | Column Filter                                                              | Quick filter available; module editable; Adaptable filtering on |
| Select                            | `select-group`                                      | —                                                                          | When any selection child is visible (see below)                 |
| See Cell Summary                  | `cell-summary-show`                                 | [Cell Summary](https://www.adaptabletools.com/docs/handbook-summarising/index.md)            | **Numeric** column; module visible                              |
| Manage Charts                     | `chart-show`                                        | [Charting](https://www.adaptabletools.com/docs/handbook-charting)                   | Module editable; at least one chart definition exists           |
| Import Data                       | `data-import`                                       | [Data Import](https://www.adaptabletools.com/docs/handbook-importing/index.md)               | Module visible                                                  |
| Show System Status                | `system-status-show`                                | [System Status](https://www.adaptabletools.com/docs/handbook-system-status-message/index.md) | Module visible                                                  |
| Grid Info                         | `grid-info-show`                                    | [Grid Info](https://www.adaptabletools.com/docs/ui-settings-panel-grid-info/index.md)       | Module visible                                                  |

### Select

Range-selection items are created by [Layout](https://www.adaptabletools.com/docs/handbook-layouts/index.md) but grouped under **Select** (`select-group`) inside **Grid**. 

The Child order is: **Grid** (`select-grid-group`) then **Column** (`select-column-group`).

| Label   | Name                 | Type   |
| ------- | -------------------- | ------ |
| Select  | `select-group`       | Parent |
| Grid    | `select-grid-group`  | Parent |
| Column  | `select-column-group`| Parent |

| Label                              | Name                            | When displayed                                    |
| ---------------------------------- | ------------------------------- | ------------------------------------------------- |
| Select Grid                        | `layout-grid-select`            | `gridApi.isGridRangeSelectable()`                 |
| Select Column                        | `layout-column-select`          | Grid range selectable; no existing cell selection |
| Select Column (Preserve Selection) | `layout-column-select-preserve` | Grid range selectable; cells already selected     |
| Select Column (Reset Selection)    | `layout-column-select-reset`    | Grid range selectable; cells already selected     |

- When a parent has only **one** visible child, AdapTable promotes that child (see Caution above)
- For example, if only **Select Grid** is available, you may see **Select** → **Select Grid** with no **Grid** / **Column** sub-groups
- Child order inside **Grid** (after **Select**): Cell Summary, Charting, Data Import, System Status, Grid Info

## Column

Column-specific layout actions, Free Text, Custom Sort, Plus Minus, and Column Info are nested under **Column** (`column-group`).

| Label                                 | Name                                   | Module                                                                  | When displayed                                                         |
| ------------------------------------- | -------------------------------------- | ----------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| Column                                | `column-group`                         | —                                                                       | When any child is visible                                              |
| Change Caption                        | `layout-column-caption-change`         | Layout                                                                  | Module editable; layout not read-only; not tree column                 |
| Hide Column                           | `layout-column-hide`                   | Layout                                                                  | Column is hideable                                                     |
| Edit Free Text Column                 | `free-text-column-edit`                | [Free Text Column](https://www.adaptabletools.com/docs/handbook-freetext-column/index.md) | Free text column; module editable                                      |
| Create Custom Sort / Edit Custom Sort | `custom-sort-add` / `custom-sort-edit` | [Custom Sort](https://www.adaptabletools.com/docs/handbook-custom-sort)          | Column sortable; module editable; no AG Grid custom comparer on column |
| Create Plus/Minus Rule                | `plus-minus-add`                       | [Plus Minus](https://www.adaptabletools.com/docs/handbook-plus-minus)            | **Numeric** column; module editable                                    |
| Column Info                           | `column-info-show`                     | [Column Info](https://www.adaptabletools.com/docs/ui-settings-panel-column-info/index.md) | Module visible; not tree column                                        |

- **Change Caption** and **Hide Column** are provided by Layout but appear under **Column** group in default structure
- Range-selection items are also from Layout but appear under **Select** (inside **Grid**) — see above.
