Files
b2b.redline.com.pl/js/jquery/plugins/growl/jquery.growl.js
2025-06-24 14:50:47 +02:00

267 lines
5.5 KiB
JavaScript

// 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)