Drupal → Создать свой ajax индикатор прогресса

14.02.2020

Пример создания индикатора прогресса с именем toggleClass, который добавляет/удаляет класс у элемента:

(function ($, Drupal) {

  /**
   * Create custom progress type "toggleClass".
   * @see Drupal.Ajax.prototype.beforeSend()
   */
  Drupal.Ajax.prototype.setProgressIndicatorToggleclass = function () {
    var $progressTarget = this.progress.target ? $(this.progress.target) : $(this.element);
    var progressClass = this.progress.class ? this.progress.class : 'ajax-progress-animation';

    // Add class
    $progressTarget.addClass(progressClass);

    // Remove class
    this.progress.object = {
      stopMonitoring: function () {
        $progressTarget.removeClass(progressClass);
      }
    };
  };

})(jQuery, Drupal);

Название функции setProgressIndicatorToggleclass строится по принципу — setProgressIndicator + название индикатора с большой буквы и маленькими все остальные буквы.

Использовать так:

$form['submit'] = [
  ...
  '#ajax' => [
    ...
    'progress' => [
      'type' => 'toggleClass',
      'target' => '.example-form .form-email',
      'class' => 'ajax-progress-animation',
    ],
  ],
];

Версия для Drupal 7

Написанное актуально для
Drupal 8
Похожие записи

Добавить комментарий