This article has been VERY useful. But I wanted something lightly different: I wanted to add a custom action, but also have the “EDIT” button (but not the “SHARE”), and to use the current item info for my custom action.
Here is the result:
// source: https://www.eliostruyf.com/adding-a-custom-action-to-a-callout-in-sharepoint-2013/
// add a special callout action for our library
SP.SOD.executeFunc("callout.js", "Callout", function () {
var itemCtx = {};
itemCtx.Templates = {};
itemCtx.BaseViewID = 'Callout';
// Define the list template type
itemCtx.ListTemplateType = 101;
itemCtx.Templates.Footer = function (itemCtx) {
// context, custom action function, show the ECB menu (boolean)
return CalloutRenderFooterTemplate(itemCtx, AddCustomAction, true);
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(itemCtx);
});
function AddCustomAction (renderCtx, calloutActionMenu) {
var itemIndex = renderCtx.CurrentItemIdx
// Add your custom action
calloutActionMenu.addAction(new CalloutAction ({
text: "Custom Action",
tooltip: 'This is your custom action',
onClickCallback: function() {
// all the data related to your item are into `renderCtx.ListData.Row[itemIndex]`
console.log('Callback from custom action');
}
}));
// re-add EDIT action
calloutActionMenu.addAction(new CalloutAction ({
text: "Edit",
onClickCallback: function(event) {
// use the default action we have when clicking on the filename into the library
// or call the EditForm if it's a list item and not a library
DispEx(this, event,'TRUE','FALSE','FALSE','SharePoint.OpenDocuments.3','1','SharePoint.OpenDocuments','','1https://your.sharepoint.com/_layouts/15/WopiFrame.aspx?sourcedoc='+renderCtx.ListData.Row[itemIndex].FileRef+'&action=default','','1','0','0','0x7fffffffffffffff')
}
}));
}