Newer Version Available

This content describes an older version of this product. View Latest

Quick Action APIs in Lightning Experience

A lightning:quickActionAPI component allows you to access methods for programmatically controlling quick actions on record pages. This component is supported in Lightning Experience.
Available in: Lightning Experience
Available in: Group, Professional, Enterprise, Performance, Unlimited, and Developer Editions

For example, if you have a custom component that displays Knowledge articles, you can use the lightning:quickActionAPI component to attach and send a Knowledge article from your custom component using the Email quick action on the case record page.

To access these methods, create an instance of the lightning:quickActionAPI component inside your Lightning component or page and assign an aura:id attribute to it.

1<lightning:quickActionAPI aura:id="quickActionAPI"/>

This component provides similar functionality to the Publisher APIs in Salesforce Classic.

Sample Code

This example creates two buttons that interact with the Update Case quick action on a case record page in Lightning Experience. The controller code uses the following Quick Action API methods: selectAction, setActionFieldValues, and invokeAction.

Component code:

1<aura:component implements="flexipage:availableForRecordHome" description="My Lightning Component">
2    <lightning:quickActionAPI aura:id="quickActionAPI" />
3    <div>
4        <lightning:button label="Select Update Case Action" onclick="{!c.selectUpdateCaseAction}"/>
5        <lightning:button label="Update Case Status Field" onclick="{!c.updateCaseStatusAction}"/>
6    </div>
7</aura:component>

Controller code:

1({
2    selectUpdateCaseAction : function( cmp, event, helper) {
3        var actionAPI = cmp.find("quickActionAPI");
4        var args = { actionName :"Case.UpdateCase" };
5        actionAPI.selectAction(args).then(function(result) {
6            // Action selected; show data and set field values
7        }).catch(function(e) {
8            if (e.errors) {
9                // If the specified action isn't found on the page, 
10                // show an error message in the my component 
11            }
12        });
13    },
14    
15    updateCaseStatusAction : function( cmp, event, helper ) {
16        var actionAPI = cmp.find("quickActionAPI");
17        var fields = { Status : { value : "Closed"}, 
18                       Subject : { value : "Sets by lightning:quickActionAPI component" }, 
19                       accountName : { Id : "accountId" } };
20        var args = { actionName : "Case.UpdateCase", 
21                     entityName : "Case",
22                     targetFields : fields };
23        actionAPI.setActionFieldValues(args).then(function() {
24            actionAPI.invokeAction(args);
25        }).catch(function(e) {
26            console.error(e.errors);
27        });
28    }
29})

To help you work with the Quick Action APIs, use the targetableFields property in the response you get from the selectAction API call. The targetableFields property provides you with the API field names for quick actions on a specific object’s Lightning record page. The following example assumes that there’s a pickList component with quick action fields.

1getAvailableActionFields : function(cmp, event, helper ) {
2        var actionAPI = cmp.find("quickActionAPI");
3        var fieldPickList = cmp.find("fieldPickList");
4        var args = {actionName :"Case.UpdateCase"};
5        actionAPI.selectAction(args).then(function(result) {
6            var fields = result.targetableFields;
7            fields.forEach(function(field){
8             fieldPickList.addItems(field.fieldName);
9            });  
10        }).catch(function(e) {
11         //error handling
12        });
13}

Tip