FINAL suepr merge step : added all modules to this super repos
This commit is contained in:
94
sites/all/modules/contrib/dev/ctools/js/dropbutton.js
Normal file
94
sites/all/modules/contrib/dev/ctools/js/dropbutton.js
Normal file
@@ -0,0 +1,94 @@
|
||||
/**
|
||||
* @file
|
||||
* Implement a simple, clickable dropbutton menu.
|
||||
*
|
||||
* See dropbutton.theme.inc for primary documentation.
|
||||
*
|
||||
* The javascript relies on four classes:
|
||||
* - The dropbutton must be fully contained in a div with the class
|
||||
* ctools-dropbutton. It must also contain the class ctools-no-js
|
||||
* which will be immediately removed by the javascript; this allows for
|
||||
* graceful degradation.
|
||||
* - The trigger that opens the dropbutton must be an a tag wit hthe class
|
||||
* ctools-dropbutton-link. The href should just be '#' as this will never
|
||||
* be allowed to complete.
|
||||
* - The part of the dropbutton that will appear when the link is clicked must
|
||||
* be a div with class ctools-dropbutton-container.
|
||||
* - Finally, ctools-dropbutton-hover will be placed on any link that is being
|
||||
* hovered over, so that the browser can restyle the links.
|
||||
*
|
||||
* This tool isn't meant to replace click-tips or anything, it is specifically
|
||||
* meant to work well presenting menus.
|
||||
*/
|
||||
|
||||
(function ($) {
|
||||
Drupal.behaviors.CToolsDropbutton = {
|
||||
attach: function() {
|
||||
// Process buttons. All dropbuttons are buttons.
|
||||
$('.ctools-button')
|
||||
.once('ctools-button')
|
||||
.removeClass('ctools-no-js');
|
||||
|
||||
// Process dropbuttons. Not all buttons are dropbuttons.
|
||||
$('.ctools-dropbutton').once('ctools-dropbutton', function() {
|
||||
var $dropbutton = $(this);
|
||||
var $button = $('.ctools-content', $dropbutton);
|
||||
var $secondaryActions = $('li', $button).not(':first');
|
||||
var $twisty = $(".ctools-link", $dropbutton);
|
||||
var open = false;
|
||||
var hovering = false;
|
||||
var timerID = 0;
|
||||
|
||||
var toggle = function(close) {
|
||||
// if it's open or we're told to close it, close it.
|
||||
if (open || close) {
|
||||
// If we're just toggling it, close it immediately.
|
||||
if (!close) {
|
||||
open = false;
|
||||
$secondaryActions.slideUp(100);
|
||||
$dropbutton.removeClass('open');
|
||||
}
|
||||
else {
|
||||
// If we were told to close it, wait half a second to make
|
||||
// sure that's what the user wanted.
|
||||
// Clear any previous timer we were using.
|
||||
if (timerID) {
|
||||
clearTimeout(timerID);
|
||||
}
|
||||
timerID = setTimeout(function() {
|
||||
if (!hovering) {
|
||||
open = false;
|
||||
$secondaryActions.slideUp(100);
|
||||
$dropbutton.removeClass('open');
|
||||
}}, 500);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// open it.
|
||||
open = true;
|
||||
$secondaryActions.animate({height: "show", opacity: "show"}, 100);
|
||||
$dropbutton.addClass('open');
|
||||
}
|
||||
}
|
||||
// Hide the secondary actions initially.
|
||||
$secondaryActions.hide();
|
||||
|
||||
$twisty.click(function() {
|
||||
toggle();
|
||||
return false;
|
||||
});
|
||||
|
||||
$dropbutton.hover(
|
||||
function() {
|
||||
hovering = true;
|
||||
}, // hover in
|
||||
function() { // hover out
|
||||
hovering = false;
|
||||
toggle(true);
|
||||
return false;
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
})(jQuery);
|
||||
Reference in New Issue
Block a user