--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cms/drupal/modules/contextual/contextual.js Fri Sep 08 12:04:06 2017 +0200
@@ -0,0 +1,52 @@
+/**
+ * @file
+ * Attaches behaviors for the Contextual module.
+ */
+
+(function ($) {
+
+Drupal.contextualLinks = Drupal.contextualLinks || {};
+
+/**
+ * Attaches outline behavior for regions associated with contextual links.
+ */
+Drupal.behaviors.contextualLinks = {
+ attach: function (context) {
+ $('div.contextual-links-wrapper', context).once('contextual-links', function () {
+ var $wrapper = $(this);
+ var $region = $wrapper.closest('.contextual-links-region');
+ var $links = $wrapper.find('ul.contextual-links');
+ var $trigger = $('<a class="contextual-links-trigger" href="#" />').text(Drupal.t('Configure')).click(
+ function () {
+ $links.stop(true, true).slideToggle(100);
+ $wrapper.toggleClass('contextual-links-active');
+ return false;
+ }
+ );
+ // Attach hover behavior to trigger and ul.contextual-links.
+ $trigger.add($links).hover(
+ function () { $region.addClass('contextual-links-region-active'); },
+ function () { $region.removeClass('contextual-links-region-active'); }
+ );
+ // Hide the contextual links when user clicks a link or rolls out of the .contextual-links-region.
+ $region.bind('mouseleave click', Drupal.contextualLinks.mouseleave);
+ $region.hover(
+ function() { $trigger.addClass('contextual-links-trigger-active'); },
+ function() { $trigger.removeClass('contextual-links-trigger-active'); }
+ );
+ // Prepend the trigger.
+ $wrapper.prepend($trigger);
+ });
+ }
+};
+
+/**
+ * Disables outline for the region contextual links are associated with.
+ */
+Drupal.contextualLinks.mouseleave = function () {
+ $(this)
+ .find('.contextual-links-active').removeClass('contextual-links-active')
+ .find('ul.contextual-links').hide();
+};
+
+})(jQuery);