Grid xml column:
<column name='actions' class='MyTestUiComponentListingColumnsFeedsAdvancedActions'>
<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.
4
Answers
I faced the same issue. In my case, I need to load the
'jquery/ui'
dependency.Please have a look at the below code which might help.
Just add the
loader
dependency to the end:showLoader: true
andvar body = $('body'); body.loader('hide');
will start working.Try
$('body').trigger('processStart')
&$('body').trigger('processStop')