Row Actions
Configure row actions under Inspector → Content → Row Actions. Each action is either visible (a button in the actions column) or an overflow entry (inside a per-row dots menu). Drag the action between the Visible Actions and Hidden in overflow groups to choose placement.
| Property | Type | Default | Description |
visibility | VISIBLE | OVERFLOW | VISIBLE | Button in the actions column, or entry in the per-row dots menu. Set by dragging between groups |
buttonType | "button" | "icon-button" | button | Visible actions only: text button or icon-only button |
label | string | — | Button text or menu entry text. Translatable |
appearance.icon | icon | Plus | Icon-button actions take one icon; text buttons take optional start/end icons |
appearance.disabled | condition | — | Disable the action per row based on the row's own values |
appearance.visibility | condition | — | Show or hide the action per row. Rows where every overflow action is hidden get no dots menu |
appearance.loading | condition | — | Show a spinner on the action per row |
permissions | permission rule | — | Restricts who sees the action |
Per-row Conditions
Every bindable property ��� label, icon, disabled, loading, visibility — is evaluated once per row with that row's data in scope. A disabled condition like {{ table1.context.currentRow.status }} === 'Closed' disables the button only on rows with that status.
Using the Clicked Row in the Handler
Inside a row action's On Click handler, the clicked row's data is available as:
{{ table1.context.currentRow }}— the clicked row's full data{{ table1.context.currentRowIndex }}— its position (0-indexed)
The click also selects the row: {{ table1.selectedRow }} and {{ table1.selectedRowKey }} are set before the handler runs, so anything on the page bound to the selection also updates.
The Actions Column
Select the actions column in the builder to configure it:
| Property | Default | Description |
| Show Floating | false | Show actions only on hover, floating over the row. Saves column space but invisible on touch devices |
| Gap | gap-0 | Space between action buttons |
| Column Width | auto | Fixed width; leave empty to size from the actions |
| Pin Column | right | Keeps the actions column visible during horizontal scroll. Set to left to move actions to the left side |
Warning: Floating actions are invisible on touch devices. With Show Floating on, actions appear only on pointer hover — users on touch screens have no hover. Use non-floating actions or an overflow menu when the table must work on touch.
Bulk Actions
Bulk actions use the same configuration as row actions but appear only when rows are selected, replacing the toolbar. Configure them under Inspector → Content → Bulk Actions.
The user selects one or more rows (bulk actions require Row Selection = Multiple).
The toolbar is replaced by a bulk-actions bar showing the selected-row count, your bulk action buttons, and a clear-selection control.
An action's On Click handler runs with the full selection available, e.g.
{{ table1.selectedRows }}.Clearing the selection brings the normal toolbar back.
Warning: Bulk actions lock selection to Multiple. While any bulk action is configured, Single and None are disabled in the inspector. Remove the bulk actions first if you need Single or None selection.
Warning: Selection does not clear after a bulk action. Running a bulk action leaves rows selected. If the action deleted them, they linger in {{ table1.selectedRows }} with stale data. Always end destructive handlers with the table's clearRowSelection method.
Row Selection
Configure row selection under Inspector → Content → Row Selection.
| Mode | Value | What users get |
| None | NONE (default) | No selection at all |
| Single | SINGLE | Clicking a row selects it; clicking again deselects. Optional radio column |
| Multiple | MULTI | A checkbox column with a header select-all checkbox |
What Selection Exposes
| Binding | Type | Mode | Description |
{{ id.selectedRow }} | object | Single | The selected row's full data |
{{ id.selectedRowKey }} | string | Single | The selected row's primary key |
{{ id.selectedRows }} | array | Multiple | Full data of every selected row |
{{ id.selectedRowKeys }} | array | Multiple | Primary keys of every selected row |
Selection Events and Methods
| Event / Method | Available when | What it does |
| On Select Row (event) | Always | Fires when a row is selected |
| On Change Row Selection (event) | Multiple only | Fires when a checkbox is toggled |
selectRow(rowId) | Single only | Selects the row with the given primary key |
selectRows(rowIds) | Multiple only | Selects the rows with the given keys |
selectAllRows() | Multiple only | Selects every row on the current page (not the whole dataset) |
clearRowSelection() | Always | Clears the current selection |
Note: Selection methods do nothing while the table is hidden. If you call selectRows while the table is behind an inactive tab or inside a closed drawer, the call silently does nothing and is not queued. Run selection methods only after the table is visible.
Disabling Selection for Specific Rows
With Multiple selection, a condition field appears under the selection toggle. Rows matching it get a disabled checkbox that the select-all also skips. The condition is evaluated per row with that row's values in scope. This disable condition is only available with Multiple mode — Single has no equivalent.
Expandable Sub Rows
Add the Sub Rows add-on to nest child rows under parents. Children render with the same columns as their parent, indented by depth, and nesting can go multiple levels. Configure under Inspector → Content → Add-ons → Sub Rows.
| Property | Default | Description |
| Children Key | — | The row field that contains the nested rows |
| Expandable Flag (optional) | — | A field that decides whether a row shows the expand chevron. Overrides the "chevron when children exist" default |
| Expand Control | Own Column | Whether the chevron gets a dedicated column or sits inside the first column's cell |
Note: Rows always start collapsed. There is no setting to open them by default. Call expandAllRows from a page-load event to open everything up front. There is no event that fires on expand or collapse.
Warning: Sub Rows and Detail Panel are mutually exclusive. You can use one or the other per table, not both.
Frequently Asked Questions
How do I run a delete action only on the row the user clicked, not on all selected rows?
Use a row action (not a bulk action). In its On Click handler, bind the delete call's input to {{ table1.context.currentRow.id }} — this always refers to the exact row whose action button was clicked. After the delete, call refetchData to reload the grid. Row actions are scoped to their own row; bulk actions operate on all selected rows.
I set selection to Single but nothing visible happens when I click a row. Why?
With Show Selection Radio turned off, Single mode shows no selection column at all. The click still sets {{ table1.selectedRow }}, but there is no visual feedback on the table itself. Turn on Show Selection Radio (Inspector → Content → Row Selection) to make the selection visible.
Select All only selected 30 rows, but I have 200 records. Why?
The header select-all and the selectAllRows method select the rows currently loaded on the current page — with paginated data, unfetched rows on other pages are not selected. If you need to act on all 200 records, either load them all on one page or run your action server-side using only the filter criteria rather than the selected keys.
After my bulk delete, the deleted rows are still showing in selectedRows. Why?
Selection survives a bulk action and rows that left the data keep the values captured at selection time. You must explicitly call clearRowSelection at the end of your bulk action handler to reset the selection and remove stale values.
Can I show sub rows only for some parent rows?
Yes — set an Expandable Flag field in the Sub Rows add-on. The chevron only appears on rows where that field is truthy. Rows flagged as expandable show a chevron even if their children field is empty; rows flagged off hide the chevron even if they have children. Without the flag, the chevron appears whenever the children field is a non-empty list.
Related Pages
| Page | Relationship |
| Table Overview | Full events, methods and exposed state |
| Toolbar & Views | Bulk actions replace the toolbar while rows are selected |
| Inline Editing | How edits interact with row selection and the changeset |