vendor/assets/javascripts/noty/jquery.noty.js in noty-rails-2.1.0.1 vs vendor/assets/javascripts/noty/jquery.noty.js in noty-rails-2.2.0
- old
+ new
@@ -1,7 +1,7 @@
/**
- * noty - jQuery Notification Plugin v2.1.0
+ * noty - jQuery Notification Plugin v2.2.0
* Contributors: https://github.com/needim/noty/graphs/contributors
*
* Examples and Documentation - http://needim.github.com/noty/
*
* Licensed under the MIT licenses:
@@ -27,12 +27,16 @@
// Mix in the passed in options with the default options
this.options = $.extend({}, $.noty.defaults, options);
this.options.layout = (this.options.custom) ? $.noty.layouts['inline'] : $.noty.layouts[this.options.layout];
- this.options.theme = $.noty.themes[this.options.theme];
+ if ($.noty.themes[this.options.theme])
+ this.options.theme = $.noty.themes[this.options.theme];
+ else
+ options.themeClassName = this.options.theme;
+
delete options.layout;
delete options.theme;
this.options = $.extend({}, this.options, this.options.layout.options);
this.options.id = 'noty_' + (new Date().getTime() * Math.floor(Math.random() * 1000000));
@@ -47,15 +51,18 @@
}, // end init
_build:function () {
// Generating noty bar
- var $bar = $('<div class="noty_bar"></div>').attr('id', this.options.id);
+ var $bar = $('<div class="noty_bar noty_type_' + this.options.type + '"></div>').attr('id', this.options.id);
$bar.append(this.options.template).find('.noty_text').html(this.options.text);
this.$bar = (this.options.layout.parent.object !== null) ? $(this.options.layout.parent.object).css(this.options.layout.parent.css).append($bar) : $bar;
+ if (this.options.themeClassName)
+ this.$bar.addClass(this.options.themeClassName).addClass('noty_container_type_' + this.options.type);
+
// Set buttons if available
if (this.options.buttons) {
// If we have button disable closeWith & timeout options
this.options.closeWith = [];
@@ -66,11 +73,11 @@
(this.options.layout.parent.object !== null) ? this.$bar.find('.noty_bar').append($buttons) : this.$bar.append($buttons);
var self = this;
$.each(this.options.buttons, function (i, button) {
- var $button = $('<button/>').addClass((button.addClass) ? button.addClass : 'gray').html(button.text)
+ var $button = $('<button/>').addClass((button.addClass) ? button.addClass : 'gray').html(button.text).attr('id', button.id ? button.id : 'button-' + i)
.appendTo(self.$bar.find('.noty_buttons'))
.bind('click', function () {
if ($.isFunction(button.onClick)) {
button.onClick.call($button, self);
}
@@ -89,22 +96,26 @@
show:function () {
var self = this;
- $(self.options.layout.container.selector).append(self.$bar);
+ (self.options.custom) ? self.options.custom.find(self.options.layout.container.selector).append(self.$bar) : $(self.options.layout.container.selector).append(self.$bar);
- self.options.theme.style.apply(self);
+ if (self.options.theme && self.options.theme.style)
+ self.options.theme.style.apply(self);
($.type(self.options.layout.css) === 'function') ? this.options.layout.css.apply(self.$bar) : self.$bar.css(this.options.layout.css || {});
self.$bar.addClass(self.options.layout.addClass);
self.options.layout.container.style.apply($(self.options.layout.container.selector));
- self.options.theme.callback.onShow.apply(this);
+ self.showing = true;
+ if (self.options.theme && self.options.theme.style)
+ self.options.theme.callback.onShow.apply(this);
+
if ($.inArray('click', self.options.closeWith) > -1)
self.$bar.css('cursor', 'pointer').one('click', function (evt) {
self.stopPropagation(evt);
if (self.options.callback.onCloseClick) {
self.options.callback.onCloseClick.apply(self);
@@ -133,10 +144,11 @@
self.options.animation.open,
self.options.animation.speed,
self.options.animation.easing,
function () {
if (self.options.callback.afterShow) self.options.callback.afterShow.apply(self);
+ self.showing = false;
self.shown = true;
});
// If noty is have a timeout option
if (self.options.timeout)
@@ -153,11 +165,20 @@
if (this.closed) return;
if (this.$bar && this.$bar.hasClass('i-am-closing-now')) return;
var self = this;
- if (!this.shown) { // If we are still waiting in the queue just delete from queue
+ if (this.showing) {
+ self.$bar.queue(
+ function () {
+ self.close.apply(self);
+ }
+ )
+ return;
+ }
+
+ if (!this.shown && !this.showing) { // If we are still waiting in the queue just delete from queue
var queue = [];
$.each($.noty.queue, function (i, n) {
if (n.options.id != self.options.id) {
queue.push(n);
}
@@ -254,10 +275,11 @@
evt.cancelBubble = true;
}
},
closed:false,
+ showing:false,
shown:false
}; // end NotyObject
$.notyRenderer = {};
@@ -265,10 +287,13 @@
$.notyRenderer.init = function (options) {
// Renderer creates a new noty
var notification = Object.create(NotyObject).init(options);
+ if (notification.options.killer)
+ $.noty.closeAll();
+
(notification.options.force) ? $.noty.queue.unshift(notification) : $.noty.queue.push(notification);
$.notyRenderer.render();
return ($.noty.returns == 'object') ? notification : notification.options.id;
@@ -307,19 +332,23 @@
$.notyRenderer.createModalFor(notification);
$.notyRenderer.setModalCount(+1);
}
// Where is the container?
- if ($(notification.options.layout.container.selector).length == 0) {
- if (notification.options.custom) {
- notification.options.custom.append($(notification.options.layout.container.object).addClass('i-am-new'));
- } else {
- $('body').append($(notification.options.layout.container.object).addClass('i-am-new'));
- }
- } else {
- $(notification.options.layout.container.selector).removeClass('i-am-new');
- }
+ if (notification.options.custom) {
+ if (notification.options.custom.find(notification.options.layout.container.selector).length == 0) {
+ notification.options.custom.append($(notification.options.layout.container.object).addClass('i-am-new'));
+ } else {
+ notification.options.custom.find(notification.options.layout.container.selector).removeClass('i-am-new');
+ }
+ } else {
+ if ($(notification.options.layout.container.selector).length == 0) {
+ $('body').append($(notification.options.layout.container.object).addClass('i-am-new'));
+ } else {
+ $(notification.options.layout.container.selector).removeClass('i-am-new');
+ }
+ }
$.notyRenderer.setLayoutCountFor(notification, +1);
notification.show();
};
@@ -418,10 +447,11 @@
},
timeout:false,
force:false,
modal:false,
maxVisible:5,
+ killer: false,
closeWith:['click'],
callback:{
onShow:function () {
},
afterShow:function () {
@@ -444,104 +474,7 @@
})(jQuery);
// Helpers
window.noty = function noty(options) {
-
- // This is for BC - Will be deleted on v2.2.0
- var using_old = 0
- , old_to_new = {
- 'animateOpen':'animation.open',
- 'animateClose':'animation.close',
- 'easing':'animation.easing',
- 'speed':'animation.speed',
- 'onShow':'callback.onShow',
- 'onShown':'callback.afterShow',
- 'onClose':'callback.onClose',
- 'onCloseClick':'callback.onCloseClick',
- 'onClosed':'callback.afterClose'
- };
-
- jQuery.each(options, function (key, value) {
- if (old_to_new[key]) {
- using_old++;
- var _new = old_to_new[key].split('.');
-
- if (!options[_new[0]]) options[_new[0]] = {};
-
- options[_new[0]][_new[1]] = (value) ? value : function () {
- };
- delete options[key];
- }
- });
-
- if (!options.closeWith) {
- options.closeWith = jQuery.noty.defaults.closeWith;
- }
-
- if (options.hasOwnProperty('closeButton')) {
- using_old++;
- if (options.closeButton) options.closeWith.push('button');
- delete options.closeButton;
- }
-
- if (options.hasOwnProperty('closeOnSelfClick')) {
- using_old++;
- if (options.closeOnSelfClick) options.closeWith.push('click');
- delete options.closeOnSelfClick;
- }
-
- if (options.hasOwnProperty('closeOnSelfOver')) {
- using_old++;
- if (options.closeOnSelfOver) options.closeWith.push('hover');
- delete options.closeOnSelfOver;
- }
-
- if (options.hasOwnProperty('custom')) {
- using_old++;
- if (options.custom.container != 'null') options.custom = options.custom.container;
- }
-
- if (options.hasOwnProperty('cssPrefix')) {
- using_old++;
- delete options.cssPrefix;
- }
-
- if (options.theme == 'noty_theme_default') {
- using_old++;
- options.theme = 'defaultTheme';
- }
-
- if (!options.hasOwnProperty('dismissQueue')) {
- options.dismissQueue = jQuery.noty.defaults.dismissQueue;
- }
-
- if (!options.hasOwnProperty('maxVisible')) {
- options.maxVisible = jQuery.noty.defaults.maxVisible;
- }
-
- if (options.buttons) {
- jQuery.each(options.buttons, function (i, button) {
- if (button.click) {
- using_old++;
- button.onClick = button.click;
- delete button.click;
- }
- if (button.type) {
- using_old++;
- button.addClass = button.type;
- delete button.type;
- }
- });
- }
-
- if (using_old) {
- if (typeof console !== "undefined" && console.warn) {
- console.warn('You are using noty v2 with v1.x.x options. @deprecated until v2.2.0 - Please update your options.');
- }
- }
-
- // console.log(options);
- // End of the BC
-
return jQuery.notyRenderer.init(options);
-}
+};