219 lines
5.8 KiB
JavaScript
Executable File
219 lines
5.8 KiB
JavaScript
Executable File
// Generated by CoffeeScript 1.6.3
|
|
/*
|
|
jQuery Growl
|
|
Copyright 2013 Kevin Sylvestre
|
|
1.1.4
|
|
*/
|
|
|
|
|
|
(function() {
|
|
"use strict";
|
|
var $, Animation, Growl,
|
|
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
|
|
|
|
$ = jQuery;
|
|
|
|
Animation = (function() {
|
|
function Animation() {}
|
|
|
|
Animation.transitions = {
|
|
"webkitTransition": "webkitTransitionEnd",
|
|
"mozTransition": "mozTransitionEnd",
|
|
"oTransition": "oTransitionEnd",
|
|
"transition": "transitionend"
|
|
};
|
|
|
|
Animation.transition = function($el) {
|
|
var el, result, type, _ref;
|
|
el = $el[0];
|
|
_ref = this.transitions;
|
|
for (type in _ref) {
|
|
result = _ref[type];
|
|
if (el.style[type] != null) {
|
|
return result;
|
|
}
|
|
}
|
|
};
|
|
|
|
return Animation;
|
|
|
|
})();
|
|
|
|
Growl = (function() {
|
|
Growl.settings = {
|
|
namespace: 'growl',
|
|
duration: 3200,
|
|
close: "×",
|
|
location: "default",
|
|
style: "default",
|
|
size: "medium"
|
|
};
|
|
|
|
Growl.growl = function(settings) {
|
|
if (settings == null) {
|
|
settings = {};
|
|
}
|
|
this.initialize();
|
|
return new Growl(settings);
|
|
};
|
|
|
|
Growl.initialize = function() {
|
|
return $("body:not(:has(#growls))").append('<div id="growls" />');
|
|
};
|
|
|
|
function Growl(settings) {
|
|
if (settings == null) {
|
|
settings = {};
|
|
}
|
|
this.html = __bind(this.html, this);
|
|
this.$growl = __bind(this.$growl, this);
|
|
this.$growls = __bind(this.$growls, this);
|
|
this.animate = __bind(this.animate, this);
|
|
this.remove = __bind(this.remove, this);
|
|
this.dismiss = __bind(this.dismiss, this);
|
|
this.present = __bind(this.present, this);
|
|
this.close = __bind(this.close, this);
|
|
this.cycle = __bind(this.cycle, this);
|
|
this.unbind = __bind(this.unbind, this);
|
|
this.bind = __bind(this.bind, this);
|
|
this.render = __bind(this.render, this);
|
|
this.settings = $.extend({}, Growl.settings, settings);
|
|
this.$growls().attr('class', this.settings.location);
|
|
this.render();
|
|
}
|
|
|
|
Growl.prototype.render = function() {
|
|
var $growl;
|
|
$growl = this.$growl();
|
|
this.$growls().append($growl);
|
|
this.cycle($growl);
|
|
};
|
|
|
|
Growl.prototype.bind = function($growl) {
|
|
if ($growl == null) {
|
|
$growl = this.$growl();
|
|
}
|
|
return $growl.find("." + this.settings.namespace + "-close").on("click", this.close);
|
|
};
|
|
|
|
Growl.prototype.unbind = function($growl) {
|
|
if ($growl == null) {
|
|
$growl = this.$growl();
|
|
}
|
|
return $growl.find("." + (this.settings.namespace - close)).off("click", this.close);
|
|
};
|
|
|
|
Growl.prototype.cycle = function($growl) {
|
|
if ($growl == null) {
|
|
$growl = this.$growl();
|
|
}
|
|
return $growl.queue(this.present).delay(this.settings.duration).queue(this.dismiss).queue(this.remove);
|
|
};
|
|
|
|
Growl.prototype.close = function(event) {
|
|
var $growl;
|
|
event.preventDefault();
|
|
event.stopPropagation();
|
|
$growl = this.$growl();
|
|
return $growl.stop().queue(this.dismiss).queue(this.remove);
|
|
};
|
|
|
|
Growl.prototype.present = function(callback) {
|
|
var $growl;
|
|
$growl = this.$growl();
|
|
this.bind($growl);
|
|
return this.animate($growl, "" + this.settings.namespace + "-incoming", 'out', callback);
|
|
};
|
|
|
|
Growl.prototype.dismiss = function(callback) {
|
|
var $growl;
|
|
$growl = this.$growl();
|
|
this.unbind($growl);
|
|
return this.animate($growl, "" + this.settings.namespace + "-outgoing", 'in', callback);
|
|
};
|
|
|
|
Growl.prototype.remove = function(callback) {
|
|
this.$growl().remove();
|
|
return callback();
|
|
};
|
|
|
|
Growl.prototype.animate = function($element, name, direction, callback) {
|
|
var transition;
|
|
if (direction == null) {
|
|
direction = 'in';
|
|
}
|
|
transition = Animation.transition($element);
|
|
$element[direction === 'in' ? 'removeClass' : 'addClass'](name);
|
|
$element.offset().position;
|
|
$element[direction === 'in' ? 'addClass' : 'removeClass'](name);
|
|
if (callback == null) {
|
|
return;
|
|
}
|
|
if (transition != null) {
|
|
$element.one(transition, callback);
|
|
} else {
|
|
callback();
|
|
}
|
|
};
|
|
|
|
Growl.prototype.$growls = function() {
|
|
return this.$_growls != null ? this.$_growls : this.$_growls = $('#growls');
|
|
};
|
|
|
|
Growl.prototype.$growl = function() {
|
|
return this.$_growl != null ? this.$_growl : this.$_growl = $(this.html());
|
|
};
|
|
|
|
Growl.prototype.html = function() {
|
|
return "<div class='" + this.settings.namespace + " " + this.settings.namespace + "-" + this.settings.style + " " + this.settings.namespace + "-" + this.settings.size + "'>\n <div class='" + this.settings.namespace + "-close'>" + this.settings.close + "</div>\n <div class='" + this.settings.namespace + "-title'>" + this.settings.title + "</div>\n <div class='" + this.settings.namespace + "-message'>" + this.settings.message + "</div>\n</div>";
|
|
};
|
|
|
|
return Growl;
|
|
|
|
})();
|
|
|
|
$.growl = function(options) {
|
|
if (options == null) {
|
|
options = {};
|
|
}
|
|
return Growl.growl(options);
|
|
};
|
|
|
|
$.growl.error = function(options) {
|
|
var settings;
|
|
if (options == null) {
|
|
options = {};
|
|
}
|
|
settings = {
|
|
title: "Error!",
|
|
style: "error"
|
|
};
|
|
return $.growl($.extend(settings, options));
|
|
};
|
|
|
|
$.growl.notice = function(options) {
|
|
var settings;
|
|
if (options == null) {
|
|
options = {};
|
|
}
|
|
settings = {
|
|
title: "Notice!",
|
|
style: "notice"
|
|
};
|
|
return $.growl($.extend(settings, options));
|
|
};
|
|
|
|
$.growl.warning = function(options) {
|
|
var settings;
|
|
if (options == null) {
|
|
options = {};
|
|
}
|
|
settings = {
|
|
title: "Warning!",
|
|
style: "warning"
|
|
};
|
|
return $.growl($.extend(settings, options));
|
|
};
|
|
|
|
}).call(this);
|