# Action Columns Technical Reference

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

## Action Column Options

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [actionColumns](https://www.adaptabletools.com/docs/reference/actioncolumnoptions.md#actioncolumns) | [`ActionColumn`](https://www.adaptabletools.com/docs/reference/actioncolumn.md)`<TData>[]` | Columns containing interactive Controls used for performing Actions | undefined |

### Action Column

| Property | Type | Description |
| --- | --- | --- |
| [columnId](https://www.adaptabletools.com/docs/reference/actioncolumn.md#columnid) | `string` | Mandatory &#39;Id&#39;; if no value set for `friendlyName`, this will also be Column name |
| [controls](https://www.adaptabletools.com/docs/reference/actioncolumn.md#controls) | [`ActionColumnControl`](https://www.adaptabletools.com/docs/reference/actioncolumncontrol.md)`<TData>[]` | Interactive Controls to display in each Column cell (each is identified by `type` e.g. `'button'` or `'command'`) |
| [friendlyName](https://www.adaptabletools.com/docs/reference/actioncolumn.md#friendlyname) | `string` | How Column appears in Column Header, Menus; if no value set, `columnId` is used |
| [rowScope](https://www.adaptabletools.com/docs/reference/actioncolumn.md#rowscope) | [`RowScope`](https://www.adaptabletools.com/docs/reference/rowscope.md) | Which types of Rows should contain the Controls (i.e. data, grouped, summary) |
| [settings](https://www.adaptabletools.com/docs/reference/actioncolumn.md#settings) | [`ActionColumnSettings`](https://www.adaptabletools.com/docs/reference/actioncolumnsettings.md) | Optional properties to configure the Column (e.g. width, overflow, resizable) |

#### Row Scope

| Property | Type | Description |
| --- | --- | --- |
| [ExcludeDataRows](https://www.adaptabletools.com/docs/reference/rowscope.md#excludedatarows) | `boolean` | Exclude regular data rows |
| [ExcludeGroupRows](https://www.adaptabletools.com/docs/reference/rowscope.md#excludegrouprows) | `boolean` | Exclude Group Rows |
| [ExcludeSummaryRows](https://www.adaptabletools.com/docs/reference/rowscope.md#excludesummaryrows) | `boolean` | Exclude Summary Rows (used in Row Summaries) |
| [ExcludeTotalRows](https://www.adaptabletools.com/docs/reference/rowscope.md#excludetotalrows) | `boolean` | Exclude Grand Total Rows (used in Aggregations) |

### Action Column Settings

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [autoWidth](https://www.adaptabletools.com/docs/reference/actioncolumnsettings.md#autowidth) | `boolean` | When true, estimates column width from Control labels/icons at setup time.<br/>Dynamic labels and icons (functions) are not measured — set `width` explicitly in those cases. | false |
| [minWidth](https://www.adaptabletools.com/docs/reference/actioncolumnsettings.md#minwidth) | `number` | Minimum width (in pixels) for the column; also used as the column width when `autoWidth` is false |   |
| [overflow](https://www.adaptabletools.com/docs/reference/actioncolumnsettings.md#overflow) | `'none' \| 'menu'` | How Controls behave when they don&#39;t all fit in the cell width.<br/><br/>- `'none'` (default): Controls render inline and may be clipped.<br/>- `'menu'`: overflowing Controls collapse into a &quot;⋯&quot; menu. | &#39;none&#39; |
| [resizable](https://www.adaptabletools.com/docs/reference/actioncolumnsettings.md#resizable) | `boolean` | Whether Column can be resized (by dragging column header edges) | true |
| [suppressMenu](https://www.adaptabletools.com/docs/reference/actioncolumnsettings.md#suppressmenu) | `boolean` | Whether no menu should be shown for this Column header. | false |
| [suppressMovable](https://www.adaptabletools.com/docs/reference/actioncolumnsettings.md#suppressmovable) | `boolean` | Whether if this Column should be movable via dragging | false |
| [width](https://www.adaptabletools.com/docs/reference/actioncolumnsettings.md#width) | `number` | Preferred width (in pixels) for Column; takes precedence over `autoWidth` and `minWidth` |   |

### Action Column Controls

`controls` is an array of [`ActionColumnControl`](https://www.adaptabletools.com/docs/reference/actioncolumncontrol.md) — a union keyed on `type`:

| Type        | Object                                                                      |
| ----------- | --------------------------------------------------------------------------- |
| `button`    | [`ButtonControl`](https://www.adaptabletools.com/docs/reference/buttoncontrol.md)                        |
| `toggle`    | [`ToggleControl`](https://www.adaptabletools.com/docs/reference/togglecontrol.md)                        |
| `link`      | [`LinkControl`](https://www.adaptabletools.com/docs/reference/linkcontrol.md)                            |
| `select`    | [`SelectControl`](https://www.adaptabletools.com/docs/reference/selectcontrol.md)                        |
| `command`   | [`CommandControl`](https://www.adaptabletools.com/docs/reference/commandcontrol.md)                      |
| `menu`      | [`MenuControl`](https://www.adaptabletools.com/docs/reference/menucontrol.md)                            |
| `form`      | [`FormControl`](https://www.adaptabletools.com/docs/reference/formcontrol.md)                            |
| `custom`    | [`CustomControl`](https://www.adaptabletools.com/docs/reference/customcontrol.md)                        |

Shared properties live on [`BaseControl`](https://www.adaptabletools.com/docs/reference/basecontrol.md):

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [disabled](https://www.adaptabletools.com/docs/reference/basecontrol.md#disabled) | [`ValueOrFunction`](https://www.adaptabletools.com/docs/reference/valueorfunction.md)`<boolean, CTX>` | Whether the Control is disabled - static boolean or a function of the context |   |
| [hidden](https://www.adaptabletools.com/docs/reference/basecontrol.md#hidden) | [`ValueOrFunction`](https://www.adaptabletools.com/docs/reference/valueorfunction.md)`<boolean, CTX>` | Whether the Control is hidden - static boolean or a function of the context |   |
| [icon](https://www.adaptabletools.com/docs/reference/basecontrol.md#icon) | [`ValueOrFunction`](https://www.adaptabletools.com/docs/reference/valueorfunction.md)`<`[`AdaptableIcon`](https://www.adaptabletools.com/docs/reference/adaptableicon.md)`, CTX>` | Icon for the Control - static `AdaptableIcon` or a function of the context |   |
| [iconPosition](https://www.adaptabletools.com/docs/reference/basecontrol.md#iconposition) | `'start' \| 'end'` | Where the icon appears relative to the label | &#39;start&#39; |
| [id](https://www.adaptabletools.com/docs/reference/basecontrol.md#id) | `string` | Optional stable identifier for the Control (useful for testing / targeting) |   |
| [label](https://www.adaptabletools.com/docs/reference/basecontrol.md#label) | [`ValueOrFunction`](https://www.adaptabletools.com/docs/reference/valueorfunction.md)`<string, CTX>` | Label for the Control - static string or a function of the context |   |
| [style](https://www.adaptabletools.com/docs/reference/basecontrol.md#style) | [`ValueOrFunction`](https://www.adaptabletools.com/docs/reference/valueorfunction.md)`<`[`ButtonStyle`](https://www.adaptabletools.com/docs/reference/buttonstyle.md)`, CTX>` | Style for the Control - static `ButtonStyle` or a function of the context |   |
| [tooltip](https://www.adaptabletools.com/docs/reference/basecontrol.md#tooltip) | [`ValueOrFunction`](https://www.adaptabletools.com/docs/reference/valueorfunction.md)`<string, CTX>` | Tooltip for the Control - static string or a function of the context |   |

#### Button

| Property | Type | Description |
| --- | --- | --- |
| [busyLabel](https://www.adaptabletools.com/docs/reference/buttoncontrol.md#busylabel) | `string` | Label shown while an async `onClick` is pending. |
| [confirm](https://www.adaptabletools.com/docs/reference/buttoncontrol.md#confirm) | [`ConfirmConfig`](https://www.adaptabletools.com/docs/reference/confirmconfig.md)`<CTX>` | Optional confirmation prompt shown before `onClick` runs. |
| [onClick](https://www.adaptabletools.com/docs/reference/buttoncontrol.md#onclick) | `(context: CTX) => void \| Promise<void>` | Handler invoked when the button is clicked. May return a `Promise`, in which<br/>case the button shows a busy/pending state and is disabled until it resolves. |
| [type](https://www.adaptabletools.com/docs/reference/buttoncontrol.md#type) | `'button'` | Discriminator. Set to `'button'`. |

`confirm` is a [`ConfirmConfig`](https://www.adaptabletools.com/docs/reference/confirmconfig.md):

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [cancelLabel](https://www.adaptabletools.com/docs/reference/confirmconfig.md#cancellabel) | `string` | Label for the cancel button | &#39;Cancel&#39; |
| [confirmLabel](https://www.adaptabletools.com/docs/reference/confirmconfig.md#confirmlabel) | `string` | Label for the confirm button | &#39;Confirm&#39; |
| [message](https://www.adaptabletools.com/docs/reference/confirmconfig.md#message) | [`ValueOrFunction`](https://www.adaptabletools.com/docs/reference/valueorfunction.md)`<string, CTX>` | Body message of the confirmation prompt - static or a function of the context. |   |
| [title](https://www.adaptabletools.com/docs/reference/confirmconfig.md#title) | [`ValueOrFunction`](https://www.adaptabletools.com/docs/reference/valueorfunction.md)`<string, CTX>` | Title of the confirmation prompt - static or a function of the context. |   |
| [tone](https://www.adaptabletools.com/docs/reference/confirmconfig.md#tone) | `'default' \| 'danger'` | Visual tone of the prompt | &#39;default&#39; |

#### Toggle

A toggle is either bound to a row field or driven by handlers. Both share `type: 'toggle'` and `variant?: 'switch' | 'checkbox' | 'button'` (default `'switch'`), plus the base control properties.

| Form | Extra properties |
| --- | --- |
| Field | `field: string` — the row property to read and write |
| Handlers | `value: boolean` or a function of the context, and `onChange(checked, context)` |

#### Link

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [href](https://www.adaptabletools.com/docs/reference/linkcontrol.md#href) | [`ValueOrFunction`](https://www.adaptabletools.com/docs/reference/valueorfunction.md)`<string, CTX>` | The link target - static string or a function of the context. |   |
| [target](https://www.adaptabletools.com/docs/reference/linkcontrol.md#target) | `'_blank' \| '_self'` | Where to open the link | &#39;_self&#39; |
| [type](https://www.adaptabletools.com/docs/reference/linkcontrol.md#type) | `'link'` | Discriminator. Set to `'link'`. |   |

#### Select

| Property | Type | Description |
| --- | --- | --- |
| [onChange](https://www.adaptabletools.com/docs/reference/selectcontrol.md#onchange) | `(value: string, context: CTX) => void \| Promise<void>` | Handler invoked when the selected value changes. May return a `Promise`. |
| [options](https://www.adaptabletools.com/docs/reference/selectcontrol.md#options) | [`ValueOrFunction`](https://www.adaptabletools.com/docs/reference/valueorfunction.md)`<`[`AdaptableFormFieldOption`](https://www.adaptabletools.com/docs/reference/adaptableformfieldoption.md)`[], CTX>` | The options to choose from - a static array or a function of the context.<br/>Reuses  so Forms and Action Columns share one vocabulary. |
| [placeholder](https://www.adaptabletools.com/docs/reference/selectcontrol.md#placeholder) | `string` | Placeholder shown when no value is selected. |
| [type](https://www.adaptabletools.com/docs/reference/selectcontrol.md#type) | `'select'` | Discriminator. Set to `'select'`. |
| [value](https://www.adaptabletools.com/docs/reference/selectcontrol.md#value) | [`ValueOrFunction`](https://www.adaptabletools.com/docs/reference/valueorfunction.md)`<string, CTX>` | The currently selected value - static or a function of the context. |

`options` entries are [`AdaptableFormFieldOption`](https://www.adaptabletools.com/docs/reference/adaptableformfieldoption.md) objects:

| Property | Type | Description |
| --- | --- | --- |
| [label](https://www.adaptabletools.com/docs/reference/adaptableformfieldoption.md#label) | `string` | Text shown for this choice. |
| [value](https://www.adaptabletools.com/docs/reference/adaptableformfieldoption.md#value) | `any` | Value written into the form data when this choice is selected. |

#### Command

| Property | Type | Description |
| --- | --- | --- |
| [command](https://www.adaptabletools.com/docs/reference/commandcontrol.md#command) | [`ActionCommand`](https://www.adaptabletools.com/docs/reference/actioncommand.md) | The built-in command to run: `'create'`, `'clone'`, `'edit'` or `'delete'`. |
| [confirm](https://www.adaptabletools.com/docs/reference/commandcontrol.md#confirm) | [`ConfirmConfig`](https://www.adaptabletools.com/docs/reference/confirmconfig.md)`<CTX>` | Optional confirmation prompt shown before the command runs. |
| [type](https://www.adaptabletools.com/docs/reference/commandcontrol.md#type) | `'command'` | Discriminator. Set to `'command'`. |

`command` is an [`ActionCommand`](https://www.adaptabletools.com/docs/reference/actioncommand.md):

[See API: actioncommand](https://www.adaptabletools.com/docs/reference/actioncommand.md)

#### Menu

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [controls](https://www.adaptabletools.com/docs/reference/menucontrol.md#controls) | [`ActionColumnControl`](https://www.adaptabletools.com/docs/reference/actioncolumncontrol.md)`<TData, CTX>[]` | The Controls shown inside the menu. Menus may be nested. |   |
| [primary](https://www.adaptabletools.com/docs/reference/menucontrol.md#primary) | [`ActionColumnControl`](https://www.adaptabletools.com/docs/reference/actioncolumncontrol.md)`<TData, CTX>` | The primary, directly-clickable Control when `variant` is `'split'`. |   |
| [type](https://www.adaptabletools.com/docs/reference/menucontrol.md#type) | `'menu'` | Discriminator. Set to `'menu'`. |   |
| [variant](https://www.adaptabletools.com/docs/reference/menucontrol.md#variant) | `'dropdown' \| 'split'` | `'dropdown'` (default) shows a single trigger; `'split'` renders `primary`<br/>as a directly-clickable action alongside a chevron that opens `controls`. | &#39;dropdown&#39; |

#### Form

| Property | Type | Description |
| --- | --- | --- |
| [form](https://www.adaptabletools.com/docs/reference/formcontrol.md#form) | [`AdaptableForm`](https://www.adaptabletools.com/docs/reference/adaptableform.md)`<any>` | The Form to display. Its `onSubmit` receives the entered `formData` and the<br/>Action Column context, so it can write back to the row. |
| [getInitialData](https://www.adaptabletools.com/docs/reference/formcontrol.md#getinitialdata) | `(context: CTX) => Record<string, any>` | Optional function to seed the Form&#39;s initial data from the current row. |
| [type](https://www.adaptabletools.com/docs/reference/formcontrol.md#type) | `'form'` | Discriminator. Set to `'form'`. |

`form` is an [`AdaptableForm`](https://www.adaptabletools.com/docs/reference/adaptableform.md):

Defines the form. `fields` is a list of fields, rows of fields, or field groups. `buttons` are the form buttons. `layout` is `rows` (the default) or `inline`.

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [buttons](https://www.adaptabletools.com/docs/reference/adaptableform.md#buttons) | [`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<T>[]` | Buttons to include in the Form |   |
| [description](https://www.adaptabletools.com/docs/reference/adaptableform.md#description) | `string` | Additional information to appear in the Form |   |
| [fields](https://www.adaptabletools.com/docs/reference/adaptableform.md#fields) | `(`[`AdaptableFormField`](https://www.adaptabletools.com/docs/reference/adaptableformfield.md)` \| `[`AdaptableFormField`](https://www.adaptabletools.com/docs/reference/adaptableformfield.md)`[] \| `[`AdaptableFormFieldGroup`](https://www.adaptabletools.com/docs/reference/adaptableformfieldgroup.md)`)[]` | Collection of Dynamic Fields and Field Groups to display.<br/><br/>Items can be:<br/>- a single  (rendered on its own row in the<br/> default `rows` layout, or as one cell in the `inline` layout),<br/>- an array of  (rendered side-by-side on the<br/> same row in the `rows` layout), or<br/>- an  (a labelled section that<br/> visually groups related fields). |   |
| [layout](https://www.adaptabletools.com/docs/reference/adaptableform.md#layout) | [`AdaptableFormLayout`](https://www.adaptabletools.com/docs/reference/adaptableformlayout.md) | How the form&#39;s fields are arranged on screen.<br/><br/>- `rows` (default): each field on its own row, label on the left and<br/> input on the right. Suitable for popups / wizards.<br/>- `inline`: fields are placed side-by-side on a single horizontal line,<br/> with the label rendered immediately before its input. Designed for<br/> compact contexts such as Dashboard Custom Toolbars where vertical<br/> real-estate is scarce. | &#39;rows&#39; |
| [onSubmit](https://www.adaptabletools.com/docs/reference/adaptableform.md#onsubmit) | `(formData: TData, context: T) => void` | Optional form-level submit hook.<br/><br/>Fired when the user presses `Enter` while focus is inside any field<br/>input AND the form is currently valid. The full `formData` is passed<br/>through, typed as `TData` if you&#39;ve supplied a custom shape.<br/><br/>Use this as an ergonomic shortcut to avoid wiring an explicit &quot;Submit&quot;<br/>button - or in addition to one, so power users can press Enter to<br/>commit. If the form is invalid the hook is not invoked. |   |
| [title](https://www.adaptabletools.com/docs/reference/adaptableform.md#title) | `string` | Title to appear in the Form |   |

Each field is an <ApiLink name="AdaptableFormField" link="adaptableformfield"/>:

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [clearToDefault](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#cleartodefault) | `boolean` | For single `select` fields only. When the user clears the combobox,<br/>whether to restore  instead of leaving the field empty.<br/><br/>Defaults to `true` when `defaultValue` is set, otherwise `false`.<br/>Set to `false` when an empty selection is a distinct state from the default. |   |
| [defaultValue](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#defaultvalue) | `string \| boolean \| number \| Array<string \| number \| boolean>` | Field Default Value - can be of type string, boolean, number, or for<br/>`select` fields with `multi: true` an array of those.<br/><br/>For single `select` fields, this is also the value restored when the user<br/>clears the combobox (unless  is `false`). |   |
| [disabled](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#disabled) | `boolean \| ((formData: `[`AdaptableFormData`](https://www.adaptabletools.com/docs/reference/adaptableformdata.md)`, context: `[`BaseContext`](https://www.adaptabletools.com/docs/reference/basecontext.md)`) => boolean)` | Disable the field&#39;s input. Either a boolean or a function evaluated<br/>against the current form data. Disabled fields render but the user<br/>cannot edit them. |   |
| [fieldType](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#fieldtype) | [`AdaptableFormFieldType`](https://www.adaptabletools.com/docs/reference/adaptableformfieldtype.md) | Field Type - dictates which UI control is rendered |   |
| [helpText](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#helptext) | `string` | Inline help text rendered immediately below the field&#39;s input. Useful<br/>for short explanations such as &quot;format: YYYY-MM-DD&quot; or &quot;min 3 chars&quot;. |   |
| [hidden](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#hidden) | `boolean \| ((formData: `[`AdaptableFormData`](https://www.adaptabletools.com/docs/reference/adaptableformdata.md)`, context: `[`BaseContext`](https://www.adaptabletools.com/docs/reference/basecontext.md)`) => boolean)` | Hide the field. Either a boolean or a function evaluated against the<br/>current form data. Hidden fields are not rendered and are excluded from<br/>validation. |   |
| [label](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#label) | `string` | Label to display in the Field |   |
| [max](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#max) | `number \| string` | Maximum allowed value. For `number` and `slider`: the highest accepted<br/>number. For `date`, `time` and `datetime`: the latest allowed value in<br/>ISO format. |   |
| [maxLength](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#maxlength) | `number` | Maximum length for `text` and `textarea` fields. |   |
| [min](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#min) | `number \| string` | Minimum allowed value. For `number` and `slider`: the lowest accepted<br/>number. For `date`, `time` and `datetime`: the earliest allowed value<br/>in ISO format (`YYYY-MM-DD` / `HH:mm` / `YYYY-MM-DDTHH:mm`). |   |
| [minLength](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#minlength) | `number` | Minimum length for `text` and `textarea` fields. |   |
| [multi](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#multi) | `boolean` | For `select` fields only. When `true` the field renders as a<br/>multi-select combobox; the field&#39;s value is an array of selected<br/>`option.value`s rather than a single value. | false |
| [name](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#name) | `string` | Name of the Field |   |
| [onValueChange](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#onvaluechange) | `(value: any, context: `[`BaseContext`](https://www.adaptabletools.com/docs/reference/basecontext.md)`) => void` | Optional callback invoked whenever value of this field changes |   |
| [options](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#options) | [`AdaptableFormFieldOption`](https://www.adaptabletools.com/docs/reference/adaptableformfieldoption.md)`[] \| ((formData: `[`AdaptableFormData`](https://www.adaptabletools.com/docs/reference/adaptableformdata.md)`, context: `[`BaseContext`](https://www.adaptabletools.com/docs/reference/basecontext.md)`) => `[`AdaptableFormFieldOption`](https://www.adaptabletools.com/docs/reference/adaptableformfieldoption.md)`[] \| Promise<`[`AdaptableFormFieldOption`](https://www.adaptabletools.com/docs/reference/adaptableformfieldoption.md)`[]>)` | Items to populate the `select` and `radio` fieldTypes.<br/><br/>Either a static array, or a function that derives the options from the<br/>current form data and Adaptable context. The function form may return<br/>a Promise for asynchronously-loaded options - the form will render the<br/>field with no items until the promise resolves. |   |
| [pattern](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#pattern) | `string` | Regular expression that the value of a `text` field must match. |   |
| [placeholder](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#placeholder) | `string` | Placeholder text shown inside `text`, `textarea`, `number`, `date`,<br/>`time` and `datetime` inputs when empty. For `select` fields it is<br/>rendered as the empty-state label when no value is selected.<br/><br/>When omitted on a `select` field with a , the label of<br/>the matching `options` entry is used as the empty-state label. |   |
| [render](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#render) | `(params: `[`AdaptableFormFieldRenderParams`](https://www.adaptabletools.com/docs/reference/adaptableformfieldrenderparams.md)`) => React.ReactNode` | For `custom` fields only. Renders an arbitrary React node as the<br/>field&#39;s input. Receives the current value, a `setValue` setter<br/>(controlled), the current form data, the Adaptable context and the<br/>resolved `disabled` state.<br/><br/>Use this as an escape hatch when none of the built-in `fieldType`s<br/>fit - e.g. to render a star-rating widget, a tag editor or any<br/>bespoke control. |   |
| [required](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#required) | `boolean` | If `true` the field is treated as required. An empty value (`''`,<br/>`null`, `undefined`, or unchecked checkbox) will produce a validation<br/>error. |   |
| [rows](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#rows) | `number` | For `textarea` fields: the visible number of text rows. | 3 |
| [step](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#step) | `number` | Stepping interval for `number`, `slider`, `time` and `datetime`<br/>fields. |   |
| [tooltip](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#tooltip) | `string` | Tooltip shown when hovering the field&#39;s label. |   |
| [validate](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#validate) | `(value: any, formData: `[`AdaptableFormData`](https://www.adaptabletools.com/docs/reference/adaptableformdata.md)`, context: `[`BaseContext`](https://www.adaptabletools.com/docs/reference/basecontext.md)`) => string \| null \| undefined` | Custom field-level validation. Return an error message string to mark<br/>the field invalid, or `null`/`undefined` if the value is valid.<br/><br/>Custom validation runs *after* built-in checks (`required`, `min`,<br/>`max`, `pattern`, etc.) - the first failing check wins. |   |

`fieldType` is an <ApiLink name="AdaptableFormFieldType" link="adaptableformfieldtype"/>:

[See API: adaptableformfieldtype](https://www.adaptabletools.com/docs/reference/adaptableformfieldtype.md)

Select and radio `options` are <ApiLink name="AdaptableFormFieldOption" link="adaptableformfieldoption"/> objects:

| Property | Type | Description |
| --- | --- | --- |
| [label](https://www.adaptabletools.com/docs/reference/adaptableformfieldoption.md#label) | `string` | Text shown for this choice. |
| [value](https://www.adaptabletools.com/docs/reference/adaptableformfieldoption.md#value) | `any` | Value written into the form data when this choice is selected. |

`layout` is an <ApiLink name="AdaptableFormLayout" link="adaptableformlayout"/>:

[See API: adaptableformlayout](https://www.adaptabletools.com/docs/reference/adaptableformlayout.md)

`buttons` are <ApiLink name="AdaptableButton" link="adaptablebutton"/> objects:

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [buttonStyle](https://www.adaptabletools.com/docs/reference/adaptablebutton.md#buttonstyle) | [`ButtonStyle`](https://www.adaptabletools.com/docs/reference/buttonstyle.md)` \| ((button: `[`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<CONTEXT_TYPE>, context: CONTEXT_TYPE) => `[`ButtonStyle`](https://www.adaptabletools.com/docs/reference/buttonstyle.md)`)` | Style for Button - can be object or function that provides a `ButtonStyle` object |   |
| [disabled](https://www.adaptabletools.com/docs/reference/adaptablebutton.md#disabled) | `(button: `[`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<CONTEXT_TYPE>, context: CONTEXT_TYPE) => boolean` | Function that disables / enables the button based on its evaluation result |   |
| [hidden](https://www.adaptabletools.com/docs/reference/adaptablebutton.md#hidden) | `(button: `[`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<CONTEXT_TYPE>, context: CONTEXT_TYPE) => boolean` | Function which sets whether Button is hidden |   |
| [icon](https://www.adaptabletools.com/docs/reference/adaptablebutton.md#icon) | [`AdaptableIcon`](https://www.adaptabletools.com/docs/reference/adaptableicon.md)` \| ((button: `[`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<CONTEXT_TYPE>, context: CONTEXT_TYPE) => `[`AdaptableIcon`](https://www.adaptabletools.com/docs/reference/adaptableicon.md)`)` | Icon for Button - can be object or function that provides a `AdaptableIcon` object |   |
| [iconPosition](https://www.adaptabletools.com/docs/reference/adaptablebutton.md#iconposition) | `'start' \| 'end'` | Where the icon appears relative to the label | &#39;start&#39; |
| [label](https://www.adaptabletools.com/docs/reference/adaptablebutton.md#label) | `string \| ((button: `[`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<CONTEXT_TYPE>, context: CONTEXT_TYPE) => string)` | Label for Button - can be string or function that provides string |   |
| [onClick](https://www.adaptabletools.com/docs/reference/adaptablebutton.md#onclick) | `(button: `[`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<CONTEXT_TYPE>, context: CONTEXT_TYPE) => void` | Function to invoke when button is clicked |   |
| [tooltip](https://www.adaptabletools.com/docs/reference/adaptablebutton.md#tooltip) | `string \| ((button: `[`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<CONTEXT_TYPE>, context: CONTEXT_TYPE) => string)` | Tooltip for Button - can be string or function that provides string |   |

`buttonStyle` is a <ApiLink name="ButtonStyle" link="buttonstyle"/>:

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [className](https://www.adaptabletools.com/docs/reference/buttonstyle.md#classname) | `string` | CSS Classname to use for the Button |   |
| [tone](https://www.adaptabletools.com/docs/reference/buttonstyle.md#tone) | `'success' \| 'error' \| 'neutral' \| 'none' \| 'warning' \| 'info' \| 'accent'` | Button&#39;s Tone - values: &#39;success&#39;, &#39;error&#39;, &#39;neutral&#39;, &#39;none&#39;, &#39;warning&#39;, &#39;info&#39;, &#39;accent&#39; | &#39;neutral&#39; |
| [variant](https://www.adaptabletools.com/docs/reference/buttonstyle.md#variant) | `'text' \| 'outlined' \| 'raised'` | How Button appears - values: &#39;text&#39;, &#39;outlined&#39;, &#39;raised&#39; | &#39;outlined&#39; |

#### Custom

| Property | Type | Description |
| --- | --- | --- |
| [frameworkComponent](https://www.adaptabletools.com/docs/reference/customcontrol.md#frameworkcomponent) | [`AdaptableFrameworkComponent`](https://www.adaptabletools.com/docs/reference/adaptableframeworkcomponent.md) | Framework-specific (Angular / Vue / React) component to render in the cell.<br/>Use this for the Angular and Vue variants of AdapTable. |
| [render](https://www.adaptabletools.com/docs/reference/customcontrol.md#render) | `(context: CTX) => React.ReactNode` | React render function returning a node for the cell, with full row context injected.<br/>Use this in the React variant of AdapTable. |
| [renderHTML](https://www.adaptabletools.com/docs/reference/customcontrol.md#renderhtml) | [`CustomRenderFunction`](https://www.adaptabletools.com/docs/reference/customrenderfunction.md) | Framework-agnostic render function returning an HTML string (mount/destroy phases). |
| [type](https://www.adaptabletools.com/docs/reference/customcontrol.md#type) | `'custom'` | Discriminator. Set to `'custom'`. |

-----------

## Action Column API

| Method | Returns | Description |
| --- | --- | --- |
| [getActionColumnForColumnId(columnId)](https://www.adaptabletools.com/docs/reference/actioncolumnapi.md#getactioncolumnforcolumnid) | [`ActionColumn`](https://www.adaptabletools.com/docs/reference/actioncolumn.md)` \| undefined` | Returns Action Column with given Id |
| [getActionColumns()](https://www.adaptabletools.com/docs/reference/actioncolumnapi.md#getactioncolumns) | [`ActionColumn`](https://www.adaptabletools.com/docs/reference/actioncolumn.md)`[]` | Retrieves the Action Columns provided in Action Column Options |
