mirror of
https://github.com/YunoHost-Apps/jappix_ynh.git
synced 2024-09-03 19:26:19 +02:00
102 lines
No EOL
2.1 KiB
JavaScript
102 lines
No EOL
2.1 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;
|
|
|
|
})(); |