Unify Logo Footer.svg
Unify Applications
Logo
Row Actions & Selection

Row Actions & Selection

Logo

7 mins READ

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.

PropertyTypeDefaultDescription
visibilityVISIBLE | OVERFLOWVISIBLEButton in the actions column, or entry in the per-row dots menu. Set by dragging between groups
buttonType"button" | "icon-button"buttonVisible actions only: text button or icon-only button
labelstringButton text or menu entry text. Translatable
appearance.iconiconPlusIcon-button actions take one icon; text buttons take optional start/end icons
appearance.disabledconditionDisable the action per row based on the row's own values
appearance.visibilityconditionShow or hide the action per row. Rows where every overflow action is hidden get no dots menu
appearance.loadingconditionShow a spinner on the action per row
permissionspermission ruleRestricts 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:

PropertyDefaultDescription
Show FloatingfalseShow actions only on hover, floating over the row. Saves column space but invisible on touch devices
Gapgap-0Space between action buttons
Column WidthautoFixed width; leave empty to size from the actions
Pin ColumnrightKeeps 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.

  1. The user selects one or more rows (bulk actions require Row Selection = Multiple).

  2. The toolbar is replaced by a bulk-actions bar showing the selected-row count, your bulk action buttons, and a clear-selection control.

  3. An action's On Click handler runs with the full selection available, e.g. {{ table1.selectedRows }}.

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

ModeValueWhat users get
NoneNONE (default)No selection at all
SingleSINGLEClicking a row selects it; clicking again deselects. Optional radio column
MultipleMULTIA checkbox column with a header select-all checkbox

What Selection Exposes

BindingTypeModeDescription
{{ id.selectedRow }}objectSingleThe selected row's full data
{{ id.selectedRowKey }}stringSingleThe selected row's primary key
{{ id.selectedRows }}arrayMultipleFull data of every selected row
{{ id.selectedRowKeys }}arrayMultiplePrimary keys of every selected row

Selection Events and Methods

Event / MethodAvailable whenWhat it does
On Select Row (event)AlwaysFires when a row is selected
On Change Row Selection (event)Multiple onlyFires when a checkbox is toggled
selectRow(rowId)Single onlySelects the row with the given primary key
selectRows(rowIds)Multiple onlySelects the rows with the given keys
selectAllRows()Multiple onlySelects every row on the current page (not the whole dataset)
clearRowSelection()AlwaysClears 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.

PropertyDefaultDescription
Children KeyThe 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 ControlOwn ColumnWhether 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.

PageRelationship
Table OverviewFull events, methods and exposed state
Toolbar & ViewsBulk actions replace the toolbar while rows are selected
Inline EditingHow edits interact with row selection and the changeset