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, privacy policy and cookie policy

Browse other questions tagged or ask your own question.