refreshless-8.x-1.x-dev/modules/refreshless_turbo/js/compatibility/ajax.js

modules/refreshless_turbo/js/compatibility/ajax.js
(function(Drupal, $, once) {

  'use strict';

  /**
   * The once() identifier for our behaviour.
   *
   * @type {String}
   */
  const onceName = 'drupal-refreshless-turbo-ajax';

  /**
   * Disable Turbo for elements handled by Drupal core's Ajax framework.
   *
   * @see Drupal.behaviors.AJAX
   *   We copy some of the logic used in core to apply to elements passed from
   *   the back-end via drupalSettings.
   */
  Drupal.behaviors.refreshlessTurboAjaxCompatibility = {

    attach(context, settings) {

      // This applies to Ajax elements passed via drupalSettings.
      Object.keys(settings.ajax || {}).forEach((key) => {

        const elementSettings = settings.ajax[key];

        if (typeof elementSettings.selector === 'undefined') {
          elementSettings.selector = `#${key}`;
        }

        $(once(
          onceName, elementSettings.selector, context,
        )).attr('data-turbo', false);

      });

      // This applies to any elements that have the 'use-ajax' and
      // 'use-ajax-submit' classes, which core also supports.
      $(once(
        onceName, '.use-ajax, .use-ajax-submit', context,
      )).attr('data-turbo', false);

    },
    detach(context, settings, trigger) {

      if (trigger !== 'unload') {
        return;
      }

      Object.keys(settings.ajax || {}).forEach((key) => {

        const elementSettings = settings.ajax[key];

        if (typeof elementSettings.selector === 'undefined') {
          elementSettings.selector = `#${key}`;
        }

        $(once.remove(
          onceName, elementSettings.selector, context,
        )).removeAttr('data-turbo');

      });

      $(once.remove(
        onceName, '.use-ajax, .use-ajax-submit', context,
      )).removeAttr('data-turbo');

    },

  };

})(Drupal, jQuery, once);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc