Row actions overview

How per-row actions are defined, rendered, and executed

Row actions come from the control table structure and per-row row.actions on data rows. They appear in a dedicated actions column or inline per column depending on structure.

Structure → Redux

ApiTablesController dispatches _getStructureRowActions with flattened actions:

  • If structure has general_actions, nested maps are flattened to a single list
  • _checkActionsInRegularCells(true) when actions are keyed by column name

Rendering (./ApiTables/core/TableRowActions.tsx)

ModeWhen
Popover menuDefault — list of actions in dropdown
Inline buttonscol.separated_action === true
Per-column subsetactionsInRegularCellsrow.actions[col.name]
Full row setrow.actions object keys

Each action maps to a component in RowActionsElements.tsx by action_type.

Selection intersection

When user selects rows (react-data-table-component):

// Effect in TableRowActions
dispatch(_getSelectedRowActions(
  getIntersectedRowActions(selectedRows.map(r => r.actions))
));

Only actions marked applicableAsBulkAction appear in ActionsOfSelection toolbar for multi-row use.

Execution path

  1. User triggers action in RowActionsElements
  2. If requireModal(action) → set clickedRowAction (confirmation or custom_control prefetch)
  3. Else → rowActionsPostHandler with row id / selected_ids
  4. Success handlers in useUtilsProvider update data or open modals

requireModal:

action?.need_confirmation || action?.action_type === 'custom_control'

Files

FileRole
./ApiTables/core/TableRowActions.tsxMenu / inline actions
./ApiTables/general-components/RowActionsElements.tsxtoggle, redirect, copy, general POST
./ApiTables/core/ActionsOfSelection.tsxSelected-row action bar
./ApiTables/table-modals/RowActionsModals.tsxView + confirmation
./ApiTables/table-providers/slices/rowActionsSlice.tsAction state

On this page