1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/jappix_ynh.git synced 2024-09-03 19:26:19 +02:00
jappix_ynh/source/app/javascripts/bubble.js
2014-11-25 20:12:58 +01:00

102 lines
No EOL
2.2 KiB
JavaScript

/*
Jappix - An open social platform
These are the bubble JS scripts for Jappix
-------------------------------------------------
License: AGPL
Author: Valérian Saliou
*/
// Bundle
var Bubble = (function () {
/**
* Alias of this
* @private
*/
var self = {};
/**
* Closes all the opened bubbles
* @public
* @return {boolean}
*/
self.close = function() {
try {
// Destroy all the elements
$('.bubble.hidable:visible').hide();
$('.bubble.removable').remove();
$('body').off('click');
} catch(e) {
Console.error('Bubble.close', e);
} finally {
return false;
}
};
/**
* Click function when a bubble is opened
* @public
* @param {object} selector
* @return {boolean}
*/
self.show = function(selector) {
try {
// Hidable bubbles special things
if($(selector).is('.hidable')) {
// This bubble is yet displayed? So abort!
if($(selector).is(':visible')) {
return self.close();
}
// Close all the bubbles
self.close();
// Show the requested bubble
$(selector).show();
}
// Removable bubbles special things
else {
// This bubble is yet added? So abort!
if(Common.exists(selector)) {
return self.close();
}
// Close all the bubbles
self.close();
}
// Creates a new click event to close the bubble
$('body').on('click', function(evt) {
var target = evt.target;
// If this is a click away from a bubble
if(!$(target).parents('.ibubble').size()) {
self.close();
}
});
} catch(e) {
Console.error('Bubble.show', e);
} finally {
return false;
}
};
/**
* Return class scope
*/
return self;
})();