xbase-2.x-dev/js/active-link.extras.js

js/active-link.extras.js
(function ($) {

  /**
   * Drupal javascript behaviors.
   */
  Drupal.behaviors.activeLinksExtras = {
    attach: function attach(context, settings) {
      if (context.tagName == 'SCRIPT') {
        return;
      }

      // Add class "is-active" to links
      var queryStringWithoutPager = removePagerFromQuery(location.search);
      context.querySelectorAll('a[href="' + location.pathname + queryStringWithoutPager + '"]').forEach(function (linkElement) {
        linkElement.classList.add('is-active');
      });

      // Add class is-active-trail" to links
      if (drupalSettings.path.currentQuery) {
        context.querySelectorAll('a[data-drupal-link-system-path="' + drupalSettings.path.currentPath + '"]:not([data-drupal-link-query])').forEach(function (linkElement) {
          linkElement.classList.add('is-active-trail');
        });
      }

      // Add class "is-active" and "is-active-trail" to parent li
      // @TODO Rewrite to vanilla js
      var $liContainingActiveLink = $('a.is-active').closest('li');
      if ($liContainingActiveLink.length) {
        $liContainingActiveLink
          .addClass('is-active')
          .parents('li').addClass('is-active-trail');
      }
    }
  };

  /**
   * Remove pager from query.
   */
  function removePagerFromQuery(query) {
    query = query.replace(/[?&]page=\d+/, '');
    if (query && query.startsWith('&')) {
      query = '?' + query.substring(1);
    }
    return query;
  }

})(jQuery);

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

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