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));
