sidekick-1.0.x-dev/js/sidekick.js

js/sidekick.js
/**
 * @file
 * Sidekick behaviors.
 */

(function ($, Drupal, drupalSettings) {

  'use strict';

  Drupal.behaviors.sidekick = {
    attach: function (context, drupalSettings) {
      $('.sidekick-frame', context).find('iframe').parent().addClass('sidekick-frame__content');
      if (drupalSettings.sidekick) {
        var targetIframe = $('.sidekick-frame iframe', context).content;
        if (!!targetIframe) {
          targetIframe.contentWindow.postMessage(drupalSettings.sidekick.nodeDetails, '*');
        }
      }

      $('.open-sidekick-modal').click(function () {
        $('.sidekick-iframe-modal').dialog({
          modal: true,
          width: '80vw',
        });
      });

      $.fn.initSuggestions = function (element, suggestionsClass) {
        $(suggestionsClass + ' ul').attr('style', 'width:' + (parseInt($(element).width()) + 30) + 'px;');
        $(suggestionsClass + ' ul li a').each(function () {
          $(this).mouseenter(function () {
            $(this).addClass('ui-state-active');
          }).mouseleave(function () {
            $(this).removeClass('ui-state-active');
          });
          $(this).click(function () {
            $(element).val($(this).text().replace(/\d+\./g, ''));
            $(suggestionsClass).hide();
            $(suggestionsClass).html('');
          });
        });

        $(element).focus();

        var li = $(suggestionsClass + ' ul li');
        var liSelected;
        var next = '';
        if (li.length > 0) {
          $(window).keydown(function (e) {
            if (e.which === 40) {
              if (liSelected) {
                $(liSelected).find('a').removeClass('ui-state-active');
                next = liSelected.next();
                if (next.length > 0) {
                  liSelected = next;
                  $(liSelected).find('a').addClass('ui-state-active');
                } else {
                  liSelected = li.eq(0);
                  $(liSelected).find('a').addClass('ui-state-active');
                }
              } else {
                liSelected = li.eq(0);
                $(liSelected).find('a').addClass('ui-state-active');
              }
            } else if (e.which === 38) {
              if (liSelected) {
                $(liSelected).find('a').removeClass('ui-state-active');
                next = liSelected.prev();
                if (next.length > 0) {
                  liSelected = next;
                  $(liSelected).find('a').addClass('ui-state-active');
                } else {
                  liSelected = li.last();
                  $(liSelected).find('a').addClass('ui-state-active');
                }
              } else {
                liSelected = li.last();
                $(liSelected).find('a').addClass('ui-state-active');
              }
            } else if (e.which === 13) {
              $(element).val( $(liSelected).text().replace(/\d+\./g, ''));
              liSelected = '';
              $(suggestionsClass).hide();
              $(suggestionsClass).html('');
              e.preventDefault();
            }
          });
        }
      };

    },
  };

}(jQuery, Drupal, drupalSettings));

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

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