diff options
Diffstat (limited to 'core/modules/contextual/contextual.js')
-rw-r--r-- | core/modules/contextual/contextual.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/core/modules/contextual/contextual.js b/core/modules/contextual/contextual.js new file mode 100644 index 00000000000..ee5b7a0545a --- /dev/null +++ b/core/modules/contextual/contextual.js @@ -0,0 +1,43 @@ +(function ($) { + +Drupal.contextualLinks = Drupal.contextualLinks || {}; + +/** + * Attach 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); + // 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); |