Grid xml column:
<column name="actions" class="My\Test\Ui\Component\Listing\Columns\Feeds\AdvancedActions>
<argument name="data" xsi:type="array>
<item name="config" xsi:type="array>
<item name="component" xsi:type="string>My_Test/js/grid/columns/actions</item>
<item name="dataType" xsi:type="string>text</item>
<item name="label" xsi:type="string" translate="true>Actions</item>
<item name="sortOrder" xsi:type="number>90</item>
</item>
</argument>
</column>
Actions.js
define(
[
'jquery',
'underscore',
'mageUtils',
'uiRegistry',
'Magento_Ui/js/grid/columns/actions',
'Magento_Ui/js/modal/confirm'
], function ($, _, utils, registry, Column, confirm) {
'use strict';
return Column.extend(
{
/**
* Applies specified action.
*
* @param {String} actionIndex - Actions' identifier.
* @param {Number} rowIndex - Index of a row.
* @returns {ActionsColumn} Chainable.
*/
applyAction: function (actionIndex, rowIndex) {
var action = this.getAction(rowIndex, actionIndex),
callback = this._getCallback(action);
if (action.confirm) {
this._confirm(action, callback);
} else if (action.popup) {
this._popup(action, callback);
} else {
callback();
}
return this;
},
_popup: function (action, callback) {
var popupData = action.popup;
var dataType = popupData.type;
//Start loader
var body = $('body').loader();
body.loader('show');
if (popupData.file !== undefined && popupData.file !== '') {
$.ajax(
{
url: popupData.file,
async: false,
dataType: "text",
type: 'GET',
showLoader: true, //use for display loader
success: function (data) {
popupData.message = data;
}
}
);
}
//Stop loader
body.loader('hide');
},
});
Used " showLoader: true, " and "var body = $('body').loader(); body.loader('show');" but unable to start loader while ajax request.
Need an alternative to start loader during ajax call.