jam-cloud/web/app/assets/javascripts/jquery.muteSelector.js

71 lines
1.7 KiB
JavaScript

(function(context, $) {
"use strict";
context.JK = context.JK || {};
// creates an iconic/graphical instrument selector. useful when there is minimal real-estate
$.fn.muteSelector = function(options) {
return this.each(function(index) {
function close() {
$parent.btOff();
$parent.focus();
}
var $parent = $(this);
function onMuteOptionSelected() {
var $li = $(this);
var muteOption = $li.attr('data-mute-option');
close();
$parent.triggerHandler(context.JK.EVENTS.MUTE_SELECTED, {muteOption: muteOption});
return false;
};
// if the user goes into the bubble, remove
function waitForBubbleHover($bubble) {
$bubble.hoverIntent({
over: function() {
if(timeout) {
clearTimeout(timeout);
timeout = null;
}
},
out: function() {
$parent.btOff();
}});
}
var timeout = null;
context.JK.hoverBubble($parent, $('#template-mute-select').html(), {
trigger:'none',
cssClass: 'mute-selector-popup',
spikeGirth:0,
spikeLength:0,
width:220,
closeWhenOthersOpen: true,
offsetParent: $parent.offsetParent(),
positions:['bottom'],
preShow: function() {
},
postShow:function(container) {
$(container).find('li').click(onMuteOptionSelected)
if(timeout) {
clearTimeout(timeout);
timeout = null;
}
waitForBubbleHover($(container))
timeout = setTimeout(function() {$parent.btOff()}, 3000)
}
});
});
}
})(window, jQuery);