Actions
Custom actions can be applied to 4 areas of an object-table: rows, cells, columns and the object-table itself.
Empty action
In the event that a table contains no rows, an <empty-action>
node can be used to add additional UI functionality.
Note: This works in addition to the empty-message
attribute that is available on an object-table
.
Row actions
Similar to bind, a row can trigger an action by nesting a standard action
tag in an object-table
. For example:
Tip: It is good practice to place actions at the top of an object-table
When using a function to specify the icon
attribute on <action/>
, it has access to $object
(note: not $selection
), for example:
Cell actions
When an action
is specified within a column
, the action will fire when the particular column is selected. The icon
, in this case, is placed on the right - and should not be confused with a standard cell icon, which is independent of the action
icon
.
Much like a row action, this function also has access to $selection
.
Combining row and cell actions
In the case where both a row and cell action are present, the cell action will take precedence and prevent the row action from firing.
Column actions
A column action is displayed next to the column heading, in the same place the filter icon would normally be. If the action is specified, the header-action
icon is used regardless if filters are enabled or not.
Note: Unlike row and cell actions, this function does not have access to $selection
, as they are only rendered once per column.
Common patterns
Header actions can be used in interesting patterns, as follows:
Combo menu
In this example the header action displays a dropdown menu with a set of options, where and when pressed.
Combo menu with original filter capability
Pin frozen column
In this example, when the action is pressed, a view variable is set which indicates that the particular column should 'freeze' to the left.
object-table
actions
object-table
actionsVersion compatibility
object-table
actions were introduced in version 4.34.6 of the JourneyApps Container.
object-table
actions enable additional buttons to be appended to the controls area of an object-table
. Additionally, these buttons can call functions passing the current data in the object-table
.
For example:
Each of the buttons call a function in their on-press
attribute with the following three parameters:
$filteredData
: An object of the form{columns: string[], rows: DatabaseObject[]}
.DatabaseObject
refers to the familiar JourneyApps object that can be used to update values in the database.filteredDisplayData
: An object of the form{columns: string[], rows: string[][]}
. The rows correspond to the text currently displayed in the table. This object can be directly passed to CSV'sstringify()
function to create a CSV export of the table's data.controls
: An object of the form{page: number, totalPages: number, limit: number, filters: {string: string[]}}
. This represents the current state of the search criteria and filters applied to theobject-table
.
In both parameters where data is passed to the function the sort order and current table filters are applied to the data.
Tip: When you have more than one button in the button-group
and would like to emphasize one of them, use mode="split"
. This will display the first button in the group and place the rest in an actionSheet
.
Example: Select all items on a page
$filteredData
contains an array of all the DB objects currently rendered in the table across all pages. In the above example we ‘slice’ out the specific page that we are interested in - in this case it's the current page which is store in the controls
parameter.
Example: One-click CSV export
Last updated