# Dashboard Technical Reference

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

## Dashboard State

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [ActiveTabIndex](https://www.adaptabletools.com/docs/reference/dashboardstate.md#activetabindex) | `number` | Zero-based index into `Tabs` of the tab that is open. |   |
| [DashboardTitle](https://www.adaptabletools.com/docs/reference/dashboardstate.md#dashboardtitle) | `string` | Title displayed in Dashboard Header | `adaptableId` in Adaptable Options |
| [FloatingPosition](https://www.adaptabletools.com/docs/reference/dashboardstate.md#floatingposition) | [`AdaptableCoordinate`](https://www.adaptabletools.com/docs/reference/adaptablecoordinate.md) | Pixel position of the Dashboard while `IsFloating` is true. `x` and `y` are offsets in pixels. |   |
| [IsCollapsed](https://www.adaptabletools.com/docs/reference/dashboardstate.md#iscollapsed) | `boolean` | Is Dashboard collapsed; if true, header is visible (but not Tabs&#39; contents) | false |
| [IsFloating](https://www.adaptabletools.com/docs/reference/dashboardstate.md#isfloating) | `boolean` | Is Dashboard floating; if true, it appears in a draggable form (double-click to revert to the default position) | false |
| [IsHidden](https://www.adaptabletools.com/docs/reference/dashboardstate.md#ishidden) | `boolean` | Whether Dashboard is completely hidden - can be made visible again in Column Menu and Tool Panel | false |
| [ModuleButtons](https://www.adaptabletools.com/docs/reference/dashboardstate.md#modulebuttons) | `AdaptableModuleButtons` | Module shortcut buttons in the Dashboard header (actions zone).<br/><br/>Opening the Settings Panel itself is handled by the fixed Home control (application icon or<br/>configuration icon) on the left of the Dashboard — do not include `'SettingsPanel'` here. | `[]` |
| [PinnedToolbars](https://www.adaptabletools.com/docs/reference/dashboardstate.md#pinnedtoolbars) | `AdaptableDashboardToolbars \| string[]` | Toolbars shown above the grid, outside any tab. |   |
| [Tabs](https://www.adaptabletools.com/docs/reference/dashboardstate.md#tabs) | [`DashboardTab`](https://www.adaptabletools.com/docs/reference/dashboardtab.md)`[]` | Named groups of toolbars. Each tab has a `Name` and the `Toolbars` it shows. | Empty Array |

### Tabs

| Property | Type | Description |
| --- | --- | --- |
| [Name](https://www.adaptabletools.com/docs/reference/dashboardtab.md#name) | `string` | Name of the Dashboard Tab as it appears in the Dashboard header |
| [Toolbars](https://www.adaptabletools.com/docs/reference/dashboardtab.md#toolbars) | `AdaptableDashboardToolbars \| string[]` | List of Toolbars to show in the Tab |
| [IsReadOnly](https://www.adaptabletools.com/docs/reference/dashboardtab.md#isreadonly) | `boolean` | Sets Entity to ReadOnly (overwriting a Strategy Entitlement of &#39;Full&#39;) |

### Floating Position

| Property | Type | Description |
| --- | --- | --- |
| [x](https://www.adaptabletools.com/docs/reference/adaptablecoordinate.md#x) | `number` | Horizontal offset, in pixels. |
| [y](https://www.adaptabletools.com/docs/reference/adaptablecoordinate.md#y) | `number` | Vertical offset, in pixels. |
| [IsReadOnly](https://www.adaptabletools.com/docs/reference/adaptablecoordinate.md#isreadonly) | `boolean` | Sets Entity to ReadOnly (overwriting a Strategy Entitlement of &#39;Full&#39;) |

## Dasboard Options

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [buttonsLocation](https://www.adaptabletools.com/docs/reference/dashboardoptions.md#buttonslocation) | [`DashboardButtonsLocation`](https://www.adaptabletools.com/docs/reference/dashboardbuttonslocation.md) | Where in Dashboard to display Module and Custom Buttons | &#39;right&#39; |
| [canFloat](https://www.adaptabletools.com/docs/reference/dashboardoptions.md#canfloat) | `boolean` | Whether the Dashboard can be floated; if true (the default), double-clicking Dashboard puts it in float mode | true |
| [customDashboardButtons](https://www.adaptabletools.com/docs/reference/dashboardoptions.md#customdashboardbuttons) | [`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<`[`DashboardButtonContext`](https://www.adaptabletools.com/docs/reference/dashboardbuttoncontext.md)`>[]` | Custom Adaptable Buttons to appear in Dashboard |   |
| [customToolbars](https://www.adaptabletools.com/docs/reference/dashboardoptions.md#customtoolbars) | [`CustomToolbar`](https://www.adaptabletools.com/docs/reference/customtoolbar.md)`[]` | Toolbars provided by Users which contain custom content |   |
| [showQuickSearchInHeader](https://www.adaptabletools.com/docs/reference/dashboardoptions.md#showquicksearchinheader) | `boolean` | Shows Quick Search input in Dashboard Header | true |

### Buttons

`buttonsLocation` is a [`DashboardButtonsLocation`](https://www.adaptabletools.com/docs/reference/dashboardbuttonslocation.md):

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

`customDashboardButtons` is a list of [`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md) objects. The click handler receives a [`DashboardButtonContext`](https://www.adaptabletools.com/docs/reference/dashboardbuttoncontext.md).

| 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 |   |

| 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; |

| Property | Type | Description |
| --- | --- | --- |
| [dashboardState](https://www.adaptabletools.com/docs/reference/dashboardbuttoncontext.md#dashboardstate) | [`DashboardState`](https://www.adaptabletools.com/docs/reference/dashboardstate.md) | Current Dashboard State |
| [adaptableContext](https://www.adaptabletools.com/docs/reference/dashboardbuttoncontext.md#adaptablecontext) | `any` | Custom application Context provided in `AdaptableOptions.adaptableContext` |

### Custom Toolbars

| Property | Type | Description |
| --- | --- | --- |
| [frameworkComponent](https://www.adaptabletools.com/docs/reference/customtoolbar.md#frameworkcomponent) | [`AdaptableFrameworkComponent`](https://www.adaptabletools.com/docs/reference/adaptableframeworkcomponent.md) | The Framework-specific (Angular, React or Vue) component to be rendered |
| [name](https://www.adaptabletools.com/docs/reference/customtoolbar.md#name) | `string` | How Toolbar is referenced (e.g. in Dashboard Popup when managing toolbars) |
| [onToolbarFormChange](https://www.adaptabletools.com/docs/reference/customtoolbar.md#ontoolbarformchange) | `(formData: TData, context: `[`CustomToolbarFormContext`](https://www.adaptabletools.com/docs/reference/customtoolbarformcontext.md)`<TData>) => void` | Callback invoked whenever the user changes a value in the toolbar form |
| [render](https://www.adaptabletools.com/docs/reference/customtoolbar.md#render) | `(customRenderContext: `[`CustomRenderContext`](https://www.adaptabletools.com/docs/reference/customrendercontext.md)`) => string \| null` | Function to provide custom content when NOT using a Framework wrapper |
| [title](https://www.adaptabletools.com/docs/reference/customtoolbar.md#title) | `string` | Title to display in Toolbar; if unset or empty string, nothing will show |
| [toolbarActions](https://www.adaptabletools.com/docs/reference/customtoolbar.md#toolbaractions) | [`ToolbarActions`](https://www.adaptabletools.com/docs/reference/toolbaractions.md) | Actions available in a Custom Dashboard Toolbar |
| [toolbarButtons](https://www.adaptabletools.com/docs/reference/customtoolbar.md#toolbarbuttons) | [`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<`[`CustomToolbarButtonContext`](https://www.adaptabletools.com/docs/reference/customtoolbarbuttoncontext.md)`>[]` | Optional set of buttons to show in the Toolbar |
| [toolbarForm](https://www.adaptabletools.com/docs/reference/customtoolbar.md#toolbarform) | [`AdaptableForm`](https://www.adaptabletools.com/docs/reference/adaptableform.md)`<`[`CustomToolbarFormContext`](https://www.adaptabletools.com/docs/reference/customtoolbarformcontext.md)`<TData>, TData>` | Optional inline form to render in the Toolbar (e.g. selects, checkboxes,<br/>inputs).<br/><br/>Use this when you want to expose interactive controls - rather than just<br/>buttons - in your Custom Toolbar without resorting to bespoke `render`<br/>or `frameworkComponent` content.<br/><br/>The form&#39;s `fields` are rendered side-by-side using the `inline` form<br/>layout. When the user changes any value the <br/>callback is invoked. Buttons declared on the form receive a<br/> which includes the current `formData`. |

`toolbarActions` is `'close'` or `'configure'`.

`toolbarButtons` is a list of AdapTable Buttons. The click handler receives a [`CustomToolbarButtonContext`](https://www.adaptabletools.com/docs/reference/customtoolbarbuttoncontext.md):

| Property | Type | Description |
| --- | --- | --- |
| [customToolbar](https://www.adaptabletools.com/docs/reference/customtoolbarbuttoncontext.md#customtoolbar) | [`CustomToolbar`](https://www.adaptabletools.com/docs/reference/customtoolbar.md) | Custom Toolbar which hosts the Button |
| [adaptableContext](https://www.adaptabletools.com/docs/reference/customtoolbarbuttoncontext.md#adaptablecontext) | `any` | Custom application Context provided in `AdaptableOptions.adaptableContext` |

`toolbarForm` 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; |

## Dashboard API

| Method | Returns | Description |
| --- | --- | --- |
| [collapseDashboard()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#collapsedashboard) | `void` | Collapses Dashboard so only Dashboard Header is visible (and not Toolbars&#39; contents) |
| [dockDashboard()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#dockdashboard) | `void` | Docks Dashboard so it &#39;snaps back&#39; into its customary position above the grid |
| [expandDashboard()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#expanddashboard) | `void` | Expands Dashboard so Toolbars in Active Tab are fully visible |
| [floatDashboard()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#floatdashboard) | `void` | Floats Dashboard so only Dashboard Header is visible (in reduced size); can be dragged to a new location |
| [getActiveTab()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#getactivetab) | [`DashboardTab`](https://www.adaptabletools.com/docs/reference/dashboardtab.md)` \| undefined` | Returns current Active Tab (if there is one) |
| [getActiveTabIndex()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#getactivetabindex) | `number \| undefined` | Returns current Active Tab index (if there is one) |
| [getCurrentToolbars()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#getcurrenttoolbars) | `AdaptableDashboardToolbars \| string[]` | Retrieves all Toolbars in Active Tab |
| [getCustomDashboardButtonByLabel(buttonLabel)](https://www.adaptabletools.com/docs/reference/dashboardapi.md#getcustomdashboardbuttonbylabel) | [`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<`[`DashboardButtonContext`](https://www.adaptabletools.com/docs/reference/dashboardbuttoncontext.md)`> \| undefined` | Retrieves first Custom Button with given Label |
| [getCustomDashboardButtons()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#getcustomdashboardbuttons) | [`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<`[`DashboardButtonContext`](https://www.adaptabletools.com/docs/reference/dashboardbuttoncontext.md)`>[]` | Retrieves all Custom Buttons |
| [getCustomToolbarByName(customToolbarName)](https://www.adaptabletools.com/docs/reference/dashboardapi.md#getcustomtoolbarbyname) | [`CustomToolbar`](https://www.adaptabletools.com/docs/reference/customtoolbar.md) | Returns Custom Toolbar with the given name |
| [getCustomToolbarHTMLElement(customToolbarName)](https://www.adaptabletools.com/docs/reference/dashboardapi.md#getcustomtoolbarhtmlelement) | `HTMLElement \| null` | Returns the HTML Element for the given Custom Toolbar. This should only be used in Vanilla AdapTable for toolbars created via a `render` function. |
| [getCustomToolbars()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#getcustomtoolbars) | [`CustomToolbar`](https://www.adaptabletools.com/docs/reference/customtoolbar.md)`[]` | Retrieves all Custom Toolbars |
| [getDashboardState()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#getdashboardstate) | [`DashboardState`](https://www.adaptabletools.com/docs/reference/dashboardstate.md) | Retrieves Dashboard section from Adaptable State |
| [getModuleButtons()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#getmodulebuttons) | `AdaptableModuleButtons` | Retrieves the Module Buttons in the Dashboard |
| [getPinnedToolbars()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#getpinnedtoolbars) | `AdaptableDashboardToolbars \| string[]` | Retrieves pinned toolbars |
| [getTabByName(tabName)](https://www.adaptabletools.com/docs/reference/dashboardapi.md#gettabbyname) | [`DashboardTab`](https://www.adaptabletools.com/docs/reference/dashboardtab.md) | Retrieves the Tab from State that matches inputted name |
| [getTabs()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#gettabs) | [`DashboardTab`](https://www.adaptabletools.com/docs/reference/dashboardtab.md)`[]` | Retrieves the Tabs in the Dashboard |
| [hideDashboard()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#hidedashboard) | `void` | Hides the Dashboard so cannot be seen |
| [isDashboardCollapsed()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#isdashboardcollapsed) | `boolean` | Is Dashboard Collapsed |
| [isDashboardDocked()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#isdashboarddocked) | `boolean` | Is Dashboard Docked |
| [isDashboardExpanded()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#isdashboardexpanded) | `boolean` | Is Dashboard Expanded |
| [isDashboardFloating()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#isdashboardfloating) | `boolean` | Is Dashboard Floating |
| [isDashboardHidden()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#isdashboardhidden) | `boolean` | Is Dashboard Hidden |
| [isDashboardVisible()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#isdashboardvisible) | `boolean` | Is Dashboard Visible |
| [isToolbarVisible(toolbar)](https://www.adaptabletools.com/docs/reference/dashboardapi.md#istoolbarvisible) | `boolean` | Checks if a given Toolbar is visible |
| [openDashboardSettingsPanel()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#opendashboardsettingspanel) | `void` | Opens Settings Panel with Dashboard section selected and visible |
| [refreshDashboard()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#refreshdashboard) | `void` | Refreshes entire Dashboard, including Toolbars and Buttons; particularly relevant for AdapTable built-in elements, as framework components are dependent on the framework specific change detection mechanisms |
| [resetCustomToolbarFormData(customToolbarName)](https://www.adaptabletools.com/docs/reference/dashboardapi.md#resetcustomtoolbarformdata) | `void` | Resets the data of a Custom Toolbar&#39;s `toolbarForm` back to the<br/>`defaultValue`s declared on its fields - clearing any user input<br/>without unmounting / re-mounting the toolbar.<br/><br/>Useful for &quot;Clear filters&quot; buttons that need to wipe both the grid<br/>filter AND the toolbar form&#39;s internal state in a single click. |
| [setActiveTab(tabName)](https://www.adaptabletools.com/docs/reference/dashboardapi.md#setactivetab) | `void` | Selects the Dashboard tab with this name. |
| [setActiveTabIndex(tabIndex)](https://www.adaptabletools.com/docs/reference/dashboardapi.md#setactivetabindex) | `void` | Selects the Dashboard tab at this index. |
| [setCustomToolbarHTMLContent(customToolbarName, htmlContent)](https://www.adaptabletools.com/docs/reference/dashboardapi.md#setcustomtoolbarhtmlcontent) | `void` | Renders the given HTML string in the given Custom Toolbar. This should only be used in Vanilla AdapTable for toolbars created via a `render` function! |
| [setDashboardTitle(title)](https://www.adaptabletools.com/docs/reference/dashboardapi.md#setdashboardtitle) | `void` | Sets the title shown in the Dashboard header. |
| [setModuleButtons(moduleButtons)](https://www.adaptabletools.com/docs/reference/dashboardapi.md#setmodulebuttons) | `void` | Sets which Module Buttons are visible |
| [setPinnedToolbars(toolbars)](https://www.adaptabletools.com/docs/reference/dashboardapi.md#setpinnedtoolbars) | `void` | Pins toolbars so they stay visible when the active tab changes. |
| [setTabs(Tabs)](https://www.adaptabletools.com/docs/reference/dashboardapi.md#settabs) | `void` | Replaces the tabs shown in the Dashboard. |
| [showDashboard()](https://www.adaptabletools.com/docs/reference/dashboardapi.md#showdashboard) | `void` | Makes the Dashboard visible |

## AdapTable Events

There are 2 [Adaptable Events](https://www.adaptabletools.com/docs/technical-reference-adaptable-events/index.md) which are fired by AdapTable related to the Dashboard:

### Dashboard Changed

The Dashboard Changed Event fires when anything has changed in the Dashboard.

The [`DashboardChangedInfo`](https://www.adaptabletools.com/docs/reference/dashboardchangedinfo.md) object which is provided, includes the trigger for the Change and new and old versions of Dashboard State.

It includes these properties:

| Property | Type | Description |
| --- | --- | --- |
| [actionName](https://www.adaptabletools.com/docs/reference/dashboardchangedinfo.md#actionname) | `string` | What changed.<br/><br/>`ADAPTABLE_READY` is the first event, shortly after startup.<br/><br/>Otherwise it is the Redux action type:<br/>`DASHBOARD_SET_IS_COLLAPSED`, `DASHBOARD_SET_IS_HIDDEN`, `DASHBOARD_SET_IS_FLOATING`, `DASHBOARD_SET_FLOATING_POSITION`, `DASHBOARD_SET_MODULE_BUTTONS`, `DASHBOARD_SET_TABS`, `DASHBOARD_ACTIVE_TAB_INDEX_CHANGE`, `DASHBOARD_CLOSE_TOOLBAR`. |
| [newDashboardState](https://www.adaptabletools.com/docs/reference/dashboardchangedinfo.md#newdashboardstate) | [`DashboardState`](https://www.adaptabletools.com/docs/reference/dashboardstate.md) | Dashboard State after this change. |
| [oldDashboardState](https://www.adaptabletools.com/docs/reference/dashboardchangedinfo.md#olddashboardstate) | [`DashboardState`](https://www.adaptabletools.com/docs/reference/dashboardstate.md) | Dashboard State before this change.<br/><br/>`null` when `actionName` is `ADAPTABLE_READY`. |
| [adaptableContext](https://www.adaptabletools.com/docs/reference/dashboardchangedinfo.md#adaptablecontext) | `any` | Custom application Context provided in `AdaptableOptions.adaptableContext` |

And these methods:

| Method | Returns | Description |
| --- | --- | --- |
| [isToolbarStateChangedToHidden(toolbarName)](https://www.adaptabletools.com/docs/reference/dashboardchangedinfo.md#istoolbarstatechangedtohidden) | `boolean` | Whether `toolbarName` became hidden because of this change.<br/><br/>True when the toolbar left the active tab, or it stayed in the active tab and the Dashboard was collapsed or hidden. |
| [isToolbarStateChangedToVisible(toolbarName)](https://www.adaptabletools.com/docs/reference/dashboardchangedinfo.md#istoolbarstatechangedtovisible) | `boolean` | Whether `toolbarName` became visible because of this change.<br/><br/>True when the toolbar entered the active tab, or it was already in the active tab and the Dashboard was expanded or unhidden. |

### Custom Toolbar Configured

The Custom Toolbar Configured Event fires when the *Configure* button has been clicked in a [Custom Toolbar](https://www.adaptabletools.com/docs/ui-dashboard-custom-toolbars/index.md).

The [`CustomToolbarConfiguredInfo`](https://www.adaptabletools.com/docs/reference/customtoolbarconfiguredinfo.md) simply provides the particular Custom Toolbar where the button was clicked:

| Property | Type | Description |
| --- | --- | --- |
| [customToolbar](https://www.adaptabletools.com/docs/reference/customtoolbarconfiguredinfo.md#customtoolbar) | [`CustomToolbar`](https://www.adaptabletools.com/docs/reference/customtoolbar.md) | Custom toolbar whose Configure button was clicked. |
| [adaptableContext](https://www.adaptabletools.com/docs/reference/customtoolbarconfiguredinfo.md#adaptablecontext) | `any` | Custom application Context provided in `AdaptableOptions.adaptableContext` |

### Events Subscription

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

```ts
api.eventApi.on('DashboardChanged', (eventInfo: DashboardChangedInfo) => {
});

api.eventApi.on('CustomToolbarConfigured', (eventInfo: CustomToolbarConfiguredInfo) => {
});

```
