List Views may have what is called List Actions. Basically it treats every row as an actionable item so that tapping that row's icon displays a context-sensitive action ribbon below that row. As an example you may have a List view of Service Tickets, you could then define a list action bar with actions like "Close Ticket", "Delete Ticket" and "Call Customer".
The context-sensitive portion refers to the fact that the actions will have access to that rows data, most importantly the $key of that row.
Layout
Defining List Actions is very similar to toolbars and layouts for views, it takes place within the createActionLayout()
function and it returns and defines the this.actions
array:
createActionLayout: function() {
return this.actions || (this.actions = [ /* action objects /* ]
);
}
Action Objects
The action objects that describe each action button are, again, similar to toolbar objects:
{
id: 'edit',
icon: 'content/images/icons/edit_24.png',
label: this.editActionText,
enabled: this.isEditEnabled,
action: 'navigateToEditView',
/* fn: this.navigateToEditView or you can define a fn instead of action */
}
id
- the unique identify for the action.icon
- path to the icon to be used.label
- the text shown below the icon.enabled
- determines the enabled/disabled state. Can betrue/false
or a function that returnstrue/false
.fn
- Function to be called. It will be passed(action, selection)
where:action
is the action object definedselection
is the selected object and you will mainly wantselection.data
for the row context.
action
- String name of the views function to be called on click. This is a shortcut instead offn: this.functionName
. Seefn
for the parameters passed.template
- Simplate to be used instead of the List viewslistActionItemTemplate
property.security
- String or function. If defined it will be passed to theApp.hasAccessTo()
where that string will be compared to the array of secured actions. If it is not found in that list it will return false and the action object will be disabled (unless the array of actions is empty, in which it returns true for allhasAccessTo
requests).scope
- object, if defined and hasfn
defined thefn
function will be invoked with thescope
as thethis
property of the function. If not defined it will use the current view as the scope.
Enabling List Actions
Even with createActionLayout
defined there are still two flags to be on the List view in order to enable action items to be display:
allowSelection
totrue
; andenableActions
totrue
.
The first flag lets the view know that when a row is clicked it is making a selection and to keep track of any selections made. The second flag signifies that this view has actions and it adjusts various CSS classes to show the icon next to each row.
These two flags can also be sent via navigation options to the list views to disable/hide the actions. This is used in all lookup fields because when making a selection it should show these actions.