5

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.

1
  • 1
    It will not show when async: false. If you must need async: false then you will have to use and initiate custom loader using ajax beforeSend and hide after ajax complete Dec 10, 2019 at 12:11

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.