6

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 you have read our privacy policy.

Browse other questions tagged or ask your own question.