cms/drupal/modules/contextual/contextual.js
changeset 541 e756a8c72c3d
--- /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);