muser-8.x-1.x-dev/modules/custom/muser_project/js/project-activate_link.js

modules/custom/muser_project/js/project-activate_link.js
(function ($) {
(function (Drupal) {
  Drupal.behaviors.projectActivateAttach = {
    attach: function attach(context) {
      var links = context.querySelectorAll('.project-activate a');
      links.forEach(function (link) {
        return link.addEventListener('click', function (event) {
          // Use Take advangage of what the flag module does here.
          return event.target.parentNode.classList.add('flag-waiting');
        });
      });
    }
  };

  Drupal.behaviors.projectContextualMenu = {
    attach: function attach(context) {

      var contextual_menus = $('.project__contextual-links', context).once('contextual-links--processed')
        .on('click', function(event) {
          let $this = $(this);
          contextual_menus.not(this).removeClass('contextual-links--open');
          $this.toggleClass('contextual-links--open');
          if ($this.hasClass('contextual-links--open')) {
            contextual_menus.find('a').attr('tabindex', 0);
          }
          else {
            contextual_menus.find('a').attr('tabindex', -1);
          }
          // event.preventDefault();
          // event.stopPropagation();
        });
      contextual_menus.find('a').attr('tabindex', -1);

      window.addEventListener('keyup', function(e) {
        e = e || window.event;
        let isEscape = false;
        if ("key" in e) {
          isEscape = (e.key === "Escape" || e.key === "Esc");
        } else {
          isEscape = (e.keyCode === 27);
        }
        if (isEscape) {
          $('.project__contextual-links', context).removeClass('contextual-links--open');
          contextual_menus.find('a').attr('tabindex', -1);
        }
      }, false);
      $(document).mouseup(function(e) {
        // if the target of the click isn't the container nor a descendant of the container
        contextual_menus.each(function(k, contextual_menu) {
          let $contextual_menu = $(contextual_menu);
          if ($contextual_menu.hasClass('contextual-links--open') && !$contextual_menu.is(e.target) && $contextual_menu.has(e.target).length === 0) {
            $contextual_menu.removeClass('contextual-links--open');
            $contextual_menu.find('a').attr('tabindex', -1);
          }
        })
      });
    }
  };

  Drupal.AjaxCommands.prototype.updateProjectStatus = function (ajax, response, status) {
    if (status === 'success') {

      var parent = $(response.selector).parents('.project__contextual-links').next('.node--type-project');
      parent.removeClass('project--inactive');
      parent.removeClass('project--active');
      parent.addClass(response.class);

    }
  };

})(Drupal);
}(jQuery));

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

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