# Editing Technical Reference

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

## Adaptable Options

### Edit Options

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [customEditColumnValues](https://www.adaptabletools.com/docs/reference/editoptions.md#customeditcolumnvalues) | `(context: `[`CustomEditColumnValuesContext`](https://www.adaptabletools.com/docs/reference/customeditcolumnvaluescontext.md)`<TData>) => `[`CustomEditColumnValueInfo`](https://www.adaptabletools.com/docs/reference/customeditcolumnvalueinfo.md)`[] \| Promise<`[`CustomEditColumnValueInfo`](https://www.adaptabletools.com/docs/reference/customeditcolumnvalueinfo.md)`[]>` | List of Column values to display when Editing (i.e. in Edit Lookups, Bulk Update) |   |
| [displayServerValidationMessages](https://www.adaptabletools.com/docs/reference/editoptions.md#displayservervalidationmessages) | `boolean` | Whether to display message after Server Validation runs | true |
| [isCellEditable](https://www.adaptabletools.com/docs/reference/editoptions.md#iscelleditable) | `(cellEditableContext: `[`CellEditableContext`](https://www.adaptabletools.com/docs/reference/celleditablecontext.md)`<TData>) => boolean` | Function which checks if a given Grid Cell is editable |   |
| [plusMinusOptions](https://www.adaptabletools.com/docs/reference/editoptions.md#plusminusoptions) | [`PlusMinusOptions`](https://www.adaptabletools.com/docs/reference/plusminusoptions.md) | Keys that nudge a numeric cell up or down.<br/><br/>A Plus Minus rule can set its own key. These are the keys used when it does not. |   |
| [showSelectCellEditor](https://www.adaptabletools.com/docs/reference/editoptions.md#showselectcelleditor) | `(currentColumContext: `[`AdaptableColumnContext`](https://www.adaptabletools.com/docs/reference/adaptablecolumncontext.md)`<TData>) => boolean` | Columns that will display a Select dropdown when editing |   |
| [smartEditOptions](https://www.adaptabletools.com/docs/reference/editoptions.md#smarteditoptions) | [`SmartEditOptions`](https://www.adaptabletools.com/docs/reference/smarteditoptions.md)`<TData>` | Extra Smart Edit operations, beyond the ones AdapTable ships.<br/><br/>A Smart Edit applies one operation to every selected cell. |   |
| [validateOnServer](https://www.adaptabletools.com/docs/reference/editoptions.md#validateonserver) | `(serverValidationContext: `[`ServerValidationContext`](https://www.adaptabletools.com/docs/reference/servervalidationcontext.md)`<TData>) => Promise<`[`ServerValidationResult`](https://www.adaptabletools.com/docs/reference/servervalidationresult.md)`>` | Function to validate AdapTable data edits remotely |   |

`isCellEditable` receives a [`CellEditableContext`](https://www.adaptabletools.com/docs/reference/celleditablecontext.md):

| Property | Type | Description |
| --- | --- | --- |
| [defaultColDefEditableValue](https://www.adaptabletools.com/docs/reference/celleditablecontext.md#defaultcoldefeditablevalue) | `boolean` | Default editability according to the AG Grid Column Definition (`ColDef.editable`) |
| [gridCell](https://www.adaptabletools.com/docs/reference/celleditablecontext.md#gridcell) | [`GridCell`](https://www.adaptabletools.com/docs/reference/gridcell.md)`<TData>` | Cell being edited |
| [adaptableContext](https://www.adaptabletools.com/docs/reference/celleditablecontext.md#adaptablecontext) | `any` | Custom application Context provided in `AdaptableOptions.adaptableContext` |

`customEditColumnValues` receives a [`CustomEditColumnValuesContext`](https://www.adaptabletools.com/docs/reference/customeditcolumnvaluescontext.md) and returns [`CustomEditColumnValueInfo`](https://www.adaptabletools.com/docs/reference/customeditcolumnvalueinfo.md) objects:

| Property | Type | Description |
| --- | --- | --- |
| [currentSearchValue](https://www.adaptabletools.com/docs/reference/customeditcolumnvaluescontext.md#currentsearchvalue) | `string` | Search text in Edit - used when fetching values from server |
| [defaultValues](https://www.adaptabletools.com/docs/reference/customeditcolumnvaluescontext.md#defaultvalues) | `Required<`[`CustomEditColumnValueInfo`](https://www.adaptabletools.com/docs/reference/customeditcolumnvalueinfo.md)`>[]` | Current distinct values in Column |
| [gridCell](https://www.adaptabletools.com/docs/reference/customeditcolumnvaluescontext.md#gridcell) | [`GridCell`](https://www.adaptabletools.com/docs/reference/gridcell.md) | Currently edited Grid Cell |
| [adaptableContext](https://www.adaptabletools.com/docs/reference/customeditcolumnvaluescontext.md#adaptablecontext) | `any` | Custom application Context provided in `AdaptableOptions.adaptableContext` |

| Property | Type | Description |
| --- | --- | --- |
| [label](https://www.adaptabletools.com/docs/reference/customeditcolumnvalueinfo.md#label) | `string` | Text shown for this item. The value is shown when this is omitted. |
| [value](https://www.adaptabletools.com/docs/reference/customeditcolumnvalueinfo.md#value) | `any` | Value written into the cell when this item is chosen. |

`validateOnServer` receives a [`ServerValidationContext`](https://www.adaptabletools.com/docs/reference/servervalidationcontext.md) and returns a [`ServerValidationResult`](https://www.adaptabletools.com/docs/reference/servervalidationresult.md):

| Property | Type | Description |
| --- | --- | --- |
| [cellDataChangedInfo](https://www.adaptabletools.com/docs/reference/servervalidationcontext.md#celldatachangedinfo) | [`CellDataChangedInfo`](https://www.adaptabletools.com/docs/reference/celldatachangedinfo.md)`<TData>` | Details of Cell Edit |
| [adaptableContext](https://www.adaptabletools.com/docs/reference/servervalidationcontext.md#adaptablecontext) | `any` | Custom application Context provided in `AdaptableOptions.adaptableContext` |

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [messageType](https://www.adaptabletools.com/docs/reference/servervalidationresult.md#messagetype) | [`AdaptableMessageType`](https://www.adaptabletools.com/docs/reference/adaptablemessagetype.md) | Type of Message to Display | Info |
| [newCellValue](https://www.adaptabletools.com/docs/reference/servervalidationresult.md#newcellvalue) | `any` | Cell Value to use for after Server Validation |   |
| [validationHeader](https://www.adaptabletools.com/docs/reference/servervalidationresult.md#validationheader) | `string` | Header to diplay with validation | &#39;Server Validation Message&#39;, |
| [validationMessage](https://www.adaptabletools.com/docs/reference/servervalidationresult.md#validationmessage) | `string` | Message to diplay with validation |   |

### Smart Edit Options

| Property | Type | Description |
| --- | --- | --- |
| [customOperations](https://www.adaptabletools.com/docs/reference/smarteditoptions.md#customoperations) | [`SmartEditCustomOperation`](https://www.adaptabletools.com/docs/reference/smarteditcustomoperation.md)`<TData>[]` | Custom Operations to use in Smart Edit |

A custom operation is `{ name: string; operation: (context) => number }`. The operation receives a [`SmartEditOperationContext`](https://www.adaptabletools.com/docs/reference/smarteditoperationcontext.md):

| Property | Type | Description |
| --- | --- | --- |
| [currentCell](https://www.adaptabletools.com/docs/reference/smarteditoperationcontext.md#currentcell) | [`GridCell`](https://www.adaptabletools.com/docs/reference/gridcell.md)`<TData>` | Current selected grid cell - contains column, row and cell value information |
| [smartEditValue](https://www.adaptabletools.com/docs/reference/smarteditoperationcontext.md#smarteditvalue) | `number` | Smart Edit value |
| [adaptableContext](https://www.adaptabletools.com/docs/reference/smarteditoperationcontext.md#adaptablecontext) | `any` | Custom application Context provided in `AdaptableOptions.adaptableContext` |

### Plus Minus Options

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [decrementKey](https://www.adaptabletools.com/docs/reference/plusminusoptions.md#decrementkey) | `string` | Key to decrease cell value for nudges (if not overriden in Plus Minus Rule/Nudge).<br/><br/>Can be a single key (e.g. `'-'`) or a keyboard shortcut combination that uses<br/>`+` as the glue between parts (e.g. `'shift+Backspace'`, `'ctrl+ArrowDown'`).<br/>Supported modifiers are `ctrl`, `cmd`, `alt` and `shift`. | &#39;-&#39; |
| [incrementKey](https://www.adaptabletools.com/docs/reference/plusminusoptions.md#incrementkey) | `string` | Key to increase cell value for nudges (if not overriden in Plus Minus Rule/Nudge).<br/><br/>Can be a single key (e.g. `'+'`) or a keyboard shortcut combination that uses<br/>`+` as the glue between parts (e.g. `'shift+Enter'`, `'ctrl+ArrowUp'`).<br/>Supported modifiers are `ctrl`, `cmd`, `alt` and `shift`. | &#39;+&#39; |

---

## Adaptable State

### Plus Minus State

| Property | Type | Description |
| --- | --- | --- |
| [PlusMinusNudges](https://www.adaptabletools.com/docs/reference/plusminusstate.md#plusminusnudges) | [`PlusMinusNudge`](https://www.adaptabletools.com/docs/reference/plusminusnudge.md)`[]` | Nudges to apply. Each one names numeric columns, the amount, and optional keys. |

#### Plus Minus

| Property | Type | Description |
| --- | --- | --- |
| [DecrementKey](https://www.adaptabletools.com/docs/reference/plusminusnudge.md#decrementkey) | `string` | Optional keyboard key that decreases cell values for this nudge only (overrides the<br/>global `decrementKey` in `plusMinusOptions`).<br/><br/>Can be a single key (e.g. `'-'`) or a keyboard shortcut combination that uses `+` as the glue<br/>between parts (e.g. `'shift+Backspace'`, `'ctrl+ArrowDown'`). Supported modifiers are `ctrl`,<br/>`cmd`, `alt` and `shift`. |
| [IncrementKey](https://www.adaptabletools.com/docs/reference/plusminusnudge.md#incrementkey) | `string` | Optional keyboard key that increases cell values for this nudge only (overrides the<br/>global `incrementKey` in `plusMinusOptions`).<br/><br/>Can be a single key (e.g. `'+'`) or a keyboard shortcut combination that uses `+` as the glue<br/>between parts (e.g. `'shift+Enter'`, `'ctrl+ArrowUp'`). Supported modifiers are `ctrl`, `cmd`,<br/>`alt` and `shift`. |
| [Name](https://www.adaptabletools.com/docs/reference/plusminusnudge.md#name) | `string` | Name of the Plus Minus Nudge rule |
| [NudgeValue](https://www.adaptabletools.com/docs/reference/plusminusnudge.md#nudgevalue) | `number` | Amount added by the increment key and subtracted by the decrement key. |
| [Rule](https://www.adaptabletools.com/docs/reference/plusminusnudge.md#rule) | `string` | (Optional) AdapTableQL boolean expression, evaluated per row, to determine whether to apply the Nudge |
| [Scope](https://www.adaptabletools.com/docs/reference/plusminusnudge.md#scope) | [`ColumnScope`](https://www.adaptabletools.com/docs/reference/columnscope.md)`<`[`NumberScopeDataType`](https://www.adaptabletools.com/docs/reference/numberscopedatatype.md)`>` | Numeric columns where the nudge is applied |
| [IsReadOnly](https://www.adaptabletools.com/docs/reference/plusminusnudge.md#isreadonly) | `boolean` | Sets Entity to ReadOnly (overwriting a Strategy Entitlement of &#39;Full&#39;) |
| [IsSuspended](https://www.adaptabletools.com/docs/reference/plusminusnudge.md#issuspended) | `boolean` | Suspends (i.e. turns off) an Adaptable Object |

#### Scope

<ApiTypeCard name="ColumnScope" href="/docs/reference/columnscope" choice>

Which columns an object applies to. Set exactly one shape.

<ApiMember name="{ All: true }" href="/docs/reference/columnscope">

<ApiMemberType>

`true`

</ApiMemberType>

Matches every column. `All` must be `true`.

</ApiMember>

<ApiMember name="{ DataTypes }" href="/docs/reference/columnscope">

<ApiMemberType>

`('text' | 'number' | 'boolean' | 'date' | 'textArray' | 'numberArray')[]`

</ApiMemberType>

Data types to match, for example `['number']` or `['text', 'textArray']`. Object, tuple and unknown columns are not scope data types. Name those columns with `ColumnIds`.

</ApiMember>

<ApiMember name="{ ColumnIds }" href="/docs/reference/columnscope">

<ApiMemberType>

`string[]`

</ApiMemberType>

Column ids to match. These are AG Grid `colId` values.

</ApiMember>

<ApiMember name="{ ColumnTypes }" href="/docs/reference/columnscope">

<ApiMemberType>

`string[]`

</ApiMemberType>

AG Grid column type names, the strings set on `colDef.type`.

</ApiMember>

</ApiTypeCard>

### Shortcut State

| Property | Type | Description |
| --- | --- | --- |
| [Shortcuts](https://www.adaptabletools.com/docs/reference/shortcutstate.md#shortcuts) | [`Shortcut`](https://www.adaptabletools.com/docs/reference/shortcut.md)`[]` | Shortcuts to apply. Each one names numeric columns, a key, an operation and the second operand. |

#### Shortcut Object

| Property | Type | Description |
| --- | --- | --- |
| [Name](https://www.adaptabletools.com/docs/reference/shortcut.md#name) | `string` | Name of the Shortcut |
| [Scope](https://www.adaptabletools.com/docs/reference/shortcut.md#scope) | [`ColumnScope`](https://www.adaptabletools.com/docs/reference/columnscope.md)`<`[`NumberScopeDataType`](https://www.adaptabletools.com/docs/reference/numberscopedatatype.md)`>` | Numeric Columns where Shortcut is applied |
| [ShortcutKey](https://www.adaptabletools.com/docs/reference/shortcut.md#shortcutkey) | `string` | Key which triggers the Shortcut when pressed |
| [ShortcutOperation](https://www.adaptabletools.com/docs/reference/shortcut.md#shortcutoperation) | `'Add' \| 'Subtract' \| 'Multiply' \| 'Divide'` | The Operation: &#39;Add&#39;, &#39;Subtract&#39;, &#39;Multiply&#39;, &#39;Divide&#39; |
| [ShortcutValue](https://www.adaptabletools.com/docs/reference/shortcut.md#shortcutvalue) | `number` | Value acting as 2nd operand for ShortcutOperation (1st operand is the cell value) |
| [IsReadOnly](https://www.adaptabletools.com/docs/reference/shortcut.md#isreadonly) | `boolean` | Sets Entity to ReadOnly (overwriting a Strategy Entitlement of &#39;Full&#39;) |
| [IsSuspended](https://www.adaptabletools.com/docs/reference/shortcut.md#issuspended) | `boolean` | Suspends (i.e. turns off) an Adaptable Object |

#### Scope

`Scope` is a [Column Scope](https://www.adaptabletools.com/docs/technical-reference-column-scope/index.md) object but **limited to numeric columns**:

<ApiTypeCard name="ColumnScope" href="/docs/reference/columnscope" choice>

Which columns an object applies to. Set exactly one shape.

<ApiMember name="{ All: true }" href="/docs/reference/columnscope">

<ApiMemberType>

`true`

</ApiMemberType>

Matches every column. `All` must be `true`.

</ApiMember>

<ApiMember name="{ DataTypes }" href="/docs/reference/columnscope">

<ApiMemberType>

`('text' | 'number' | 'boolean' | 'date' | 'textArray' | 'numberArray')[]`

</ApiMemberType>

Data types to match, for example `['number']` or `['text', 'textArray']`. Object, tuple and unknown columns are not scope data types. Name those columns with `ColumnIds`.

</ApiMember>

<ApiMember name="{ ColumnIds }" href="/docs/reference/columnscope">

<ApiMemberType>

`string[]`

</ApiMemberType>

Column ids to match. These are AG Grid `colId` values.

</ApiMember>

<ApiMember name="{ ColumnTypes }" href="/docs/reference/columnscope">

<ApiMemberType>

`string[]`

</ApiMemberType>

AG Grid column type names, the strings set on `colDef.type`.

</ApiMember>

</ApiTypeCard>

---

## Adaptable API

### Smart Edit API

| Method | Returns | Description |
| --- | --- | --- |
| [getSmartEditCustomOperations()](https://www.adaptabletools.com/docs/reference/smarteditapi.md#getsmarteditcustomoperations) | [`SmartEditCustomOperation`](https://www.adaptabletools.com/docs/reference/smarteditcustomoperation.md)`[]` | Retrieves an Smart Edit Custom Operations (provided in Edit Options) |
| [getSmartEditOperation()](https://www.adaptabletools.com/docs/reference/smarteditapi.md#getsmarteditoperation) | [`SmartEditOperation`](https://www.adaptabletools.com/docs/reference/smarteditoperation.md) | Gets current Smart Edit Operation |
| [getSmartEditValue()](https://www.adaptabletools.com/docs/reference/smarteditapi.md#getsmarteditvalue) | `number` | Returns current Smart Edit Value |
| [openSmartEditSettingsPanel()](https://www.adaptabletools.com/docs/reference/smarteditapi.md#opensmarteditsettingspanel) | `void` | Opens Settings Panel with Smart Edit section selected and visible |
| [setCustomSmartEditOperation(customOperationName)](https://www.adaptabletools.com/docs/reference/smarteditapi.md#setcustomsmarteditoperation) | `void` | Sets current Smart Edit Operation to a Custom Operation |
| [setSmartEditOperation(operation)](https://www.adaptabletools.com/docs/reference/smarteditapi.md#setsmarteditoperation) | `void` | Sets (shipped) Smart Edit Operation: &#39;Add&#39;,&#39;Subtract&#39;,&#39;Multiply&#39;,&#39;Divide&#39; |
| [setSmartEditValue(smartEditValue)](https://www.adaptabletools.com/docs/reference/smarteditapi.md#setsmarteditvalue) | `void` | Sets Smart Edit Value |

### Bulk Update API

| Method | Returns | Description |
| --- | --- | --- |
| [getBulkUpdateValue()](https://www.adaptabletools.com/docs/reference/bulkupdateapi.md#getbulkupdatevalue) | `string` | The value Bulk Update will write into the selected cells. |
| [openBulkUpdateSettingsPanel()](https://www.adaptabletools.com/docs/reference/bulkupdateapi.md#openbulkupdatesettingspanel) | `void` | Opens Bulk Update Settings Panel |

### Plus Minus API

| Method | Returns | Description |
| --- | --- | --- |
| [addPlusMinusNudge(plusMinusNudge)](https://www.adaptabletools.com/docs/reference/plusminusapi.md#addplusminusnudge) | [`PlusMinusNudge`](https://www.adaptabletools.com/docs/reference/plusminusnudge.md) | Adds new Plus Minus Rule to State |
| [applyPlusMinus(cellUpdateRequests)](https://www.adaptabletools.com/docs/reference/plusminusapi.md#applyplusminus) | `void` | Applies a Plus Minus to given cells |
| [deletePlusMinusNudge(plusMinusNudge)](https://www.adaptabletools.com/docs/reference/plusminusapi.md#deleteplusminusnudge) | `void` | Deletes a plus minus rule |
| [editPlusMinusNudge(plusMinusNudge)](https://www.adaptabletools.com/docs/reference/plusminusapi.md#editplusminusnudge) | [`PlusMinusNudge`](https://www.adaptabletools.com/docs/reference/plusminusnudge.md) | Replaces Plus Minus Rule in State with given one |
| [getAllActivePlusMinus()](https://www.adaptabletools.com/docs/reference/plusminusapi.md#getallactiveplusminus) | [`PlusMinusNudge`](https://www.adaptabletools.com/docs/reference/plusminusnudge.md)`[]` | Retrieves all active (not-suspended) Plus Minus Rules in Adaptable State with those with expressions first |
| [getAllPlusMinus()](https://www.adaptabletools.com/docs/reference/plusminusapi.md#getallplusminus) | [`PlusMinusNudge`](https://www.adaptabletools.com/docs/reference/plusminusnudge.md)`[]` | Retrieves all Plus Minus Rules in Adaptable State with those with expressions first |
| [getAllSuspendedPlusMinus()](https://www.adaptabletools.com/docs/reference/plusminusapi.md#getallsuspendedplusminus) | [`PlusMinusNudge`](https://www.adaptabletools.com/docs/reference/plusminusnudge.md)`[]` | Retrieves all suspended Plus Minus Rules in Adaptable State with those with expressions first |
| [getPlusMinusById(id)](https://www.adaptabletools.com/docs/reference/plusminusapi.md#getplusminusbyid) | [`PlusMinusNudge`](https://www.adaptabletools.com/docs/reference/plusminusnudge.md) | Retrieves Plus Minus Rule by the technical ID (from `PlusMinusState`) |
| [getPlusMinusNudgeByName(name)](https://www.adaptabletools.com/docs/reference/plusminusapi.md#getplusminusnudgebyname) | [`PlusMinusNudge`](https://www.adaptabletools.com/docs/reference/plusminusnudge.md)` \| undefined` | Retrieves a Plus Minus Nudge by its Name |
| [getPlusMinusState()](https://www.adaptabletools.com/docs/reference/plusminusapi.md#getplusminusstate) | [`PlusMinusState`](https://www.adaptabletools.com/docs/reference/plusminusstate.md) | Retrieves Plus Minus section from Adaptable State (nudge rules only).<br/>Keyboard triggers are optional on each ; unset fields fall back to<br/>`AdaptableOptions.plusMinusOptions`, then `+` / `-`. |
| [openPlusMinusSettingsPanel()](https://www.adaptabletools.com/docs/reference/plusminusapi.md#openplusminussettingspanel) | `void` | Opens Settings Panel with Plus Minus section selected and visible |
| [runPlusMinusNudge(plusMinusNudge, cells, direction)](https://www.adaptabletools.com/docs/reference/plusminusapi.md#runplusminusnudge) | `void` | Applies a Plus Minus Rule to given cells |
| [suspendPlusMinusNudge(plusMinusNudge)](https://www.adaptabletools.com/docs/reference/plusminusapi.md#suspendplusminusnudge) | [`PlusMinusNudge`](https://www.adaptabletools.com/docs/reference/plusminusnudge.md) | Suspends Plus Minus Rule |
| [unSuspendPlusMinusNudge(plusMinusNudge)](https://www.adaptabletools.com/docs/reference/plusminusapi.md#unsuspendplusminusnudge) | [`PlusMinusNudge`](https://www.adaptabletools.com/docs/reference/plusminusnudge.md) | Activates a suspended Plus Minus Rule |

### Shortcut API

| Method | Returns | Description |
| --- | --- | --- |
| [addShortcut(shortcut)](https://www.adaptabletools.com/docs/reference/shortcutapi.md#addshortcut) | [`Shortcut`](https://www.adaptabletools.com/docs/reference/shortcut.md) | Adds new Shortcut to the state |
| [deleteShortcut(shortcut)](https://www.adaptabletools.com/docs/reference/shortcutapi.md#deleteshortcut) | `void` | Deletes Shortcut from the state |
| [editShortcut(shortcut)](https://www.adaptabletools.com/docs/reference/shortcutapi.md#editshortcut) | [`Shortcut`](https://www.adaptabletools.com/docs/reference/shortcut.md) | Edits Shortcut in state |
| [getActiveShortcuts()](https://www.adaptabletools.com/docs/reference/shortcutapi.md#getactiveshortcuts) | [`Shortcut`](https://www.adaptabletools.com/docs/reference/shortcut.md)`[]` | Gets all active (not-suspended) Shortcuts in Adaptable State |
| [getShortcutById(id)](https://www.adaptabletools.com/docs/reference/shortcutapi.md#getshortcutbyid) | [`Shortcut`](https://www.adaptabletools.com/docs/reference/shortcut.md) | Retrieves Shortcut by Id |
| [getShortcutByName(name)](https://www.adaptabletools.com/docs/reference/shortcutapi.md#getshortcutbyname) | [`Shortcut`](https://www.adaptabletools.com/docs/reference/shortcut.md)` \| undefined` | Retrieves a Shortcut by its Name |
| [getShortcuts()](https://www.adaptabletools.com/docs/reference/shortcutapi.md#getshortcuts) | [`Shortcut`](https://www.adaptabletools.com/docs/reference/shortcut.md)`[]` | Gets all Shortcuts in Adaptable State |
| [getShortcutState()](https://www.adaptabletools.com/docs/reference/shortcutapi.md#getshortcutstate) | [`ShortcutState`](https://www.adaptabletools.com/docs/reference/shortcutstate.md) | Retrieves Shortcut section from Adaptable State |
| [getSuspendedShortcuts()](https://www.adaptabletools.com/docs/reference/shortcutapi.md#getsuspendedshortcuts) | [`Shortcut`](https://www.adaptabletools.com/docs/reference/shortcut.md)`[]` | Gets all suspended Shortcuts in Adaptable State |
| [openShortcutSettingsPanel()](https://www.adaptabletools.com/docs/reference/shortcutapi.md#openshortcutsettingspanel) | `void` | Opens Settings Panel with Shortcut section selected and visible |
| [suspendAllShortcut()](https://www.adaptabletools.com/docs/reference/shortcutapi.md#suspendallshortcut) | `void` | Suspends all Shortcuts |
| [suspendShortcut(shortcut)](https://www.adaptabletools.com/docs/reference/shortcutapi.md#suspendshortcut) | [`Shortcut`](https://www.adaptabletools.com/docs/reference/shortcut.md) | Suspends Shortcut definition |
| [unSuspendAllShortcut()](https://www.adaptabletools.com/docs/reference/shortcutapi.md#unsuspendallshortcut) | `void` | Activates all suspended Shortcut |
| [unSuspendShortcut(shortcut)](https://www.adaptabletools.com/docs/reference/shortcutapi.md#unsuspendshortcut) | [`Shortcut`](https://www.adaptabletools.com/docs/reference/shortcut.md) | Activates a suspended Shortcut definition |

---

## Cell Changed Event

The Cell Changed Event fires whenever the contents of any cell changes in AG Grid.

This can be the result of a user cell edit or of ticking data.

### CellChangedInfo

The event comprises the [`CellChangedInfo`](https://www.adaptabletools.com/docs/reference/cellchangedinfo.md) object:

| Property | Type | Description |
| --- | --- | --- |
| [cellDataChange](https://www.adaptabletools.com/docs/reference/cellchangedinfo.md#celldatachange) | [`CellDataChangedInfo`](https://www.adaptabletools.com/docs/reference/celldatachangedinfo.md) | The change: old and new values, column, row and what triggered it. See . |
| [adaptableContext](https://www.adaptabletools.com/docs/reference/cellchangedinfo.md#adaptablecontext) | `any` | Custom application Context provided in `AdaptableOptions.adaptableContext` |

This provides a single `cellChange` property of type  [`CellDataChangedInfo`](https://www.adaptabletools.com/docs/reference/celldatachangedinfo.md) defined as follows:

| Property | Type | Description |
| --- | --- | --- |
| [changedAt](https://www.adaptabletools.com/docs/reference/celldatachangedinfo.md#changedat) | `number` | Timestamp of change occurrence (in milliseconds) |
| [column](https://www.adaptabletools.com/docs/reference/celldatachangedinfo.md#column) | [`AdaptableColumn`](https://www.adaptabletools.com/docs/reference/adaptablecolumn.md)`<TData>` | Column in which cell is situated |
| [newValue](https://www.adaptabletools.com/docs/reference/celldatachangedinfo.md#newvalue) | `any` | Value after the change.<br/><br/>Absent when `trigger` is `live`. |
| [oldValue](https://www.adaptabletools.com/docs/reference/celldatachangedinfo.md#oldvalue) | `any` | Value before the change.<br/><br/>Absent when `trigger` is `live`. |
| [preventEdit](https://www.adaptabletools.com/docs/reference/celldatachangedinfo.md#preventedit) | `boolean` | Whether the change was prevented by a validation rule |
| [primaryKeyValue](https://www.adaptabletools.com/docs/reference/celldatachangedinfo.md#primarykeyvalue) | `any` | Primary Key Column&#39;s value for the row where edited cell is situated |
| [rowData](https://www.adaptabletools.com/docs/reference/celldatachangedinfo.md#rowdata) | `TData` | Data in the Row |
| [rowNode](https://www.adaptabletools.com/docs/reference/celldatachangedinfo.md#rownode) | `IRowNode<TData>` | AG Grid RowNode that contains the cell |
| [trigger](https://www.adaptabletools.com/docs/reference/celldatachangedinfo.md#trigger) | `'edit' \| 'tick' \| 'undo' \| 'aggChange' \| 'calculatedColumnChange' \| 'live'` | What triggered the change - user, background change, a reverted change, a<br/>derived update on a Calculated Column whose source value changed, or a<br/>live Alert rule turning true for the row (`live`: no old / new value,<br/>`column` is the rule&#39;s first Scope column when it has one). |

### Event Subscription

Subscribing to the Event is done the same way as with all [Adaptable Events](https://www.adaptabletools.com/docs/technical-reference-adaptable-events/index.md):

```ts
api.eventApi.on('CellChanged', (eventInfo: CellChangedInfo) => {
    // do something with the info
});
```

See [Listening to Cell and Row Changes](https://www.adaptabletools.com/docs/handbook-managing-grid-data-changed-events/index.md) for a worked example
