diff --git a/dist/notify.js b/dist/notify.js
index 6a84d32..de7309e 100644
--- a/dist/notify.js
+++ b/dist/notify.js
@@ -1,16 +1,16 @@
-/** Notify.js - v0.0.1 - 2013/06/03
+/** Notify.js - v0.0.1 - 2013/06/04
* http://notifyjs.com/
* Copyright (c) 2013 Jaime Pillora - MIT
*/
(function(window,document,undefined) {
'use strict';
-var Notification, addStyle, className, coreStyle, cornerElem, createElem, defaultStyle, defaultStyleName, getAnchorElement, hAligns, incr, inherit, insertCSS, mainPositions, opposites, options, parsePosition, pluginName, pluginOptions, positions, realign, styles, vAligns,
+var Notification, addStyle, coreStyle, cornerElem, createElem, defaultStyle, defaultStyleName, getAnchorElement, hAligns, incr, inherit, insertCSS, mainPositions, opposites, options, parsePosition, pluginClassName, pluginName, pluginOptions, positions, realign, stylePrefixes, styles, vAligns,
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
pluginName = 'notify';
-className = pluginName + 'js';
+pluginClassName = pluginName + 'js';
positions = {
t: 'top',
@@ -53,8 +53,8 @@ styles = {};
coreStyle = {
name: 'core',
- html: "
",
- css: "." + className + "-corner {\n position: fixed;\n top: 0;\n right: 0;\n margin: 5px;\n z-index: 1050;\n}\n\n." + className + "-corner ." + className + "-wrapper,\n." + className + "-corner ." + className + "-container {\n position: relative;\n display: block;\n height: inherit;\n width: inherit;\n}\n\n." + className + "-wrapper {\n z-index: 1;\n position: absolute;\n display: inline-block;\n height: 0;\n width: 0;\n}\n\n." + className + "-container {\n display: none;\n z-index: 1;\n position: absolute;\n cursor: pointer;\n}\n\n." + className + "-text {\n position: relative;\n}\n\n." + className + "-arrow {\n position: absolute;\n z-index: 2;\n width: 0;\n height: 0;\n}"
+ html: "",
+ css: "." + pluginClassName + "-corner {\n position: fixed;\n top: 0;\n right: 0;\n margin: 5px;\n z-index: 1050;\n}\n\n." + pluginClassName + "-corner ." + pluginClassName + "-wrapper,\n." + pluginClassName + "-corner ." + pluginClassName + "-container {\n position: relative;\n display: block;\n height: inherit;\n width: inherit;\n}\n\n." + pluginClassName + "-wrapper {\n z-index: 1;\n position: absolute;\n display: inline-block;\n height: 0;\n width: 0;\n}\n\n." + pluginClassName + "-container {\n display: none;\n z-index: 1;\n position: absolute;\n cursor: pointer;\n}\n\n." + pluginClassName + "-text {\n position: relative;\n}\n\n." + pluginClassName + "-arrow {\n position: absolute;\n z-index: 2;\n width: 0;\n height: 0;\n}"
};
defaultStyleName = "bootstrap";
@@ -62,13 +62,38 @@ defaultStyleName = "bootstrap";
defaultStyle = {
html: "\n \n
",
classes: {
- base: "padding: 8px 35px 8px 14px;\ntext-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);\nbackground-color: #fcf8e3;\nborder: 1px solid #fbeed5;\n-webkit-border-radius: 4px;\n-moz-border-radius: 4px;\nborder-radius: 4px;\nwhite-space: nowrap;",
- error: "color: #B94A48;\nbackground-color: #F2DEDE;\nborder-color: #EED3D7;\npadding-left: 25px;\nbackground-repeat: no-repeat;\nbackground-position: 3px 7px;\nbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtRJREFUeNqkVc1u00AQHq+dOD+0poIQfkIjalW0SEGqRMuRnHos3DjwAH0ArlyQeANOOSMeAA5VjyBxKBQhgSpVUKKQNGloFdw4cWw2jtfMOna6JOUArDTazXi/b3dm55socPqQhFka++aHBsI8GsopRJERNFlY88FCEk9Yiwf8RhgRyaHFQpPHCDmZG5oX2ui2yilkcTT1AcDsbYC1NMAyOi7zTX2Agx7A9luAl88BauiiQ/cJaZQfIpAlngDcvZZMrl8vFPK5+XktrWlx3/ehZ5r9+t6e+WVnp1pxnNIjgBe4/6dAysQc8dsmHwPcW9C0h3fW1hans1ltwJhy0GxK7XZbUlMp5Ww2eyan6+ft/f2FAqXGK4CvQk5HueFz7D6GOZtIrK+srupdx1GRBBqNBtzc2AiMr7nPplRdKhb1q6q6zjFhrklEFOUutoQ50xcX86ZlqaZpQrfbBdu2R6/G19zX6XSgh6RX5ubyHCM8nqSID6ICrGiZjGYYxojEsiw4PDwMSL5VKsC8Yf4VRYFzMzMaxwjlJSlCyAQ9l0CW44PBADzXhe7xMdi9HtTrdYjFYkDQL0cn4Xdq2/EAE+InCnvADTf2eah4Sx9vExQjkqXT6aAERICMewd/UAp/IeYANM2joxt+q5VI+ieq2i0Wg3l6DNzHwTERPgo1ko7XBXj3vdlsT2F+UuhIhYkp7u7CarkcrFOCtR3H5JiwbAIeImjT/YQKKBtGjRFCU5IUgFRe7fF4cCNVIPMYo3VKqxwjyNAXNepuopyqnld602qVsfRpEkkz+GFL1wPj6ySXBpJtWVa5xlhpcyhBNwpZHmtX8AGgfIExo0ZpzkWVTBGiXCSEaHh62/PoR0p/vHaczxXGnj4bSo+G78lELU80h1uogBwWLf5YlsPmgDEd4M236xjm+8nm4IuE/9u+/PH2JXZfbwz4zw1WbO+SQPpXfwG/BBgAhCNZiSb/pOQAAAAASUVORK5CYII=);",
- info: "",
- warn: ""
+ base: {
+ "padding": "8px 15px 8px 14px",
+ "text-shadow": "0 1px 0 rgba(255, 255, 255, 0.5)",
+ "background-color": "#fcf8e3",
+ "border": "1px solid #fbeed5",
+ "border-radius": "4px",
+ "white-space": "nowrap",
+ "padding-left": "25px",
+ "background-repeat": "no-repeat",
+ "background-position": "3px 7px"
+ },
+ error: {
+ "color": "#B94A48",
+ "background-color": "#F2DEDE",
+ "border-color": "#EED3D7",
+ "background-image": "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtRJREFUeNqkVc1u00AQHq+dOD+0poIQfkIjalW0SEGqRMuRnHos3DjwAH0ArlyQeANOOSMeAA5VjyBxKBQhgSpVUKKQNGloFdw4cWw2jtfMOna6JOUArDTazXi/b3dm55socPqQhFka++aHBsI8GsopRJERNFlY88FCEk9Yiwf8RhgRyaHFQpPHCDmZG5oX2ui2yilkcTT1AcDsbYC1NMAyOi7zTX2Agx7A9luAl88BauiiQ/cJaZQfIpAlngDcvZZMrl8vFPK5+XktrWlx3/ehZ5r9+t6e+WVnp1pxnNIjgBe4/6dAysQc8dsmHwPcW9C0h3fW1hans1ltwJhy0GxK7XZbUlMp5Ww2eyan6+ft/f2FAqXGK4CvQk5HueFz7D6GOZtIrK+srupdx1GRBBqNBtzc2AiMr7nPplRdKhb1q6q6zjFhrklEFOUutoQ50xcX86ZlqaZpQrfbBdu2R6/G19zX6XSgh6RX5ubyHCM8nqSID6ICrGiZjGYYxojEsiw4PDwMSL5VKsC8Yf4VRYFzMzMaxwjlJSlCyAQ9l0CW44PBADzXhe7xMdi9HtTrdYjFYkDQL0cn4Xdq2/EAE+InCnvADTf2eah4Sx9vExQjkqXT6aAERICMewd/UAp/IeYANM2joxt+q5VI+ieq2i0Wg3l6DNzHwTERPgo1ko7XBXj3vdlsT2F+UuhIhYkp7u7CarkcrFOCtR3H5JiwbAIeImjT/YQKKBtGjRFCU5IUgFRe7fF4cCNVIPMYo3VKqxwjyNAXNepuopyqnld602qVsfRpEkkz+GFL1wPj6ySXBpJtWVa5xlhpcyhBNwpZHmtX8AGgfIExo0ZpzkWVTBGiXCSEaHh62/PoR0p/vHaczxXGnj4bSo+G78lELU80h1uogBwWLf5YlsPmgDEd4M236xjm+8nm4IuE/9u+/PH2JXZfbwz4zw1WbO+SQPpXfwG/BBgAhCNZiSb/pOQAAAAASUVORK5CYII=)"
+ },
+ success: {
+ "color": "#468847",
+ "background-color": "#DFF0D8",
+ "border-color": "#D6E9C6",
+ "background-image": "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAutJREFUeNq0lctPE0Ecx38zu/RFS1EryqtgJFA08YCiMZIAQQ4eRG8eDGdPJiYeTIwHTfwPiAcvXIwXLwoXPaDxkWgQ6islKlJLSQWLUraPLTv7Gme32zoF9KSTfLO7v53vZ3d/M7/fIth+IO6INt2jjoA7bjHCJoAlzCRw59YwHYjBnfMPqAKWQYKjGkfCJqAF0xwZjipQtA3MxeSG87VhOOYegVrUCy7UZM9S6TLIdAamySTclZdYhFhRHloGYg7mgZv1Zzztvgud7V1tbQ2twYA34LJmF4p5dXF1KTufnE+SxeJtuCZNsLDCQU0+RyKTF27Unw101l8e6hns3u0PBalORVVVkcaEKBJDgV3+cGM4tKKmI+ohlIGnygKX00rSBfszz/n2uXv81wd6+rt1orsZCHRdr1Imk2F2Kob3hutSxW8thsd8AXNaln9D7CTfA6O+0UgkMuwVvEFFUbbAcrkcTA8+AtOk8E6KiQiDmMFSDqZItAzEVQviRkdDdaFgPp8HSZKAEAL5Qh7Sq2lIJBJwv2scUqkUnKoZgNhcDKhKg5aH+1IkcouCAdFGAQsuWZYhOjwFHQ96oagWgRoUov1T9kRBEODAwxM2QtEUl+Wp+Ln9VRo6BcMw4ErHRYjH4/B26AlQoQQTRdHWwcd9AH57+UAXddvDD37DmrBBV34WfqiXPl61g+vr6xA9zsGeM9gOdsNXkgpEtTwVvwOklXLKm6+/p5ezwk4B+j6droBs2CsGa/gNs6RIxazl4Tc25mpTgw/apPR1LYlNRFAzgsOxkyXYLIM1V8NMwyAkJSctD1eGVKiq5wWjSPdjmeTkiKvVW4f2YPHWl3GAVq6ymcyCTgovM3FzyRiDe2TaKcEKsLpJvNHjZgPNqEtyi6mZIm4SRFyLMUsONSSdkPeFtY1n0mczoY3BHTLhwPRy9/lzcziCw9ACI+yql0VLzcGAZbYSM5CCSZg1/9oc/nn7+i8N9p/8An4JMADxhH+xHfuiKwAAAABJRU5ErkJggg==)"
+ },
+ info: {},
+ warn: {}
}
};
+stylePrefixes = {
+ "border-radius": ["-webkit-", "-moz-"]
+};
+
addStyle = function(name, def) {
var cssText;
if (styles[name]) {
@@ -82,8 +107,17 @@ addStyle = function(name, def) {
}
cssText = "";
if (def.classes) {
- $.each(def.classes, function(subClassName, css) {
- return cssText += "." + className + "-" + def.name + "-" + subClassName + " {\n " + css + "\n}\n";
+ $.each(def.classes, function(className, props) {
+ cssText += "." + pluginClassName + "-" + def.name + "-" + className + " {\n";
+ $.each(props, function(name, val) {
+ if (stylePrefixes[name]) {
+ $.each(stylePrefixes[name], function(i, prefix) {
+ return cssText += " " + prefix + name + ": " + val + ";\n";
+ });
+ }
+ return cssText += " " + name + ": " + val + ";\n";
+ });
+ return cssText += "}\n";
});
}
if (def.css) {
@@ -109,14 +143,13 @@ insertCSS = function(cssText) {
};
pluginOptions = {
- autoHide: false,
- autoHideDelay: 2000,
+ autoHide: true,
+ autoHideDelay: 5000,
arrowShow: true,
arrowSize: 5,
- arrowColor: 'border',
position: 'bottom',
style: 'bootstrap',
- cls: 'error',
+ className: 'error',
showAnimation: 'slideDown',
showDuration: 400,
hideAnimation: 'slideUp',
@@ -140,7 +173,7 @@ createElem = function(tag) {
return $("<" + tag + ">" + tag + ">");
};
-cornerElem = createElem("div").addClass("" + className + "-corner");
+cornerElem = createElem("div").addClass("" + pluginClassName + "-corner");
getAnchorElement = function(element) {
var radios;
@@ -193,21 +226,21 @@ Notification = (function() {
function Notification(elem, data, options) {
if (typeof options === 'string') {
options = {
- color: options
+ className: options
};
}
this.options = inherit(pluginOptions, $.isPlainObject(options) ? options : {});
this.loadHTML();
this.wrapper = $(coreStyle.html);
- this.wrapper.data(className, this);
- this.arrow = this.wrapper.find("." + className + "-arrow");
- this.container = this.wrapper.find("." + className + "-container");
+ this.wrapper.data(pluginClassName, this);
+ this.arrow = this.wrapper.find("." + pluginClassName + "-arrow");
+ this.container = this.wrapper.find("." + pluginClassName + "-container");
this.container.append(this.userContainer);
if (elem && elem.length) {
this.elementType = elem.attr('type');
this.originalElement = elem;
this.elem = getAnchorElement(elem);
- this.elem.data(className, this);
+ this.elem.data(pluginClassName, this);
this.elem.before(this.wrapper);
} else {
this.options.arrowShow = false;
@@ -223,9 +256,13 @@ Notification = (function() {
this.userContainer = $(style.html);
this.text = this.userContainer.find('[data-notify-text]');
if (this.text.length === 0) {
- throw "style: " + name + " HTML is missing the: 'data-notify-text' attribute";
+ this.text = this.userContainer.find('[data-notify-html]');
+ this.rawText = true;
}
- return this.text.addClass("" + className + "-text");
+ if (this.text.length === 0) {
+ throw "style: '" + name + "' HTML is missing a: 'data-notify-text' or 'data-notify-html' attribute";
+ }
+ return this.text.addClass("" + pluginClassName + "-text");
};
Notification.prototype.show = function(show, callback) {
@@ -254,7 +291,7 @@ Notification = (function() {
};
Notification.prototype.updatePosition = function() {
- var arrowCss, arrowSize, color, contH, contW, css, elemH, elemIH, elemIW, elemPos, elemW, mainFull, margin, opp, oppFull, pAlign, pArrow, pMain, padding, pos, posFull, position, style, wrapPos, _i, _len;
+ var arrowColor, arrowCss, arrowSize, color, contH, contW, css, elemH, elemIH, elemIW, elemPos, elemW, mainFull, margin, opp, oppFull, pAlign, pArrow, pMain, padding, pos, posFull, position, style, wrapPos, _i, _len;
if (!this.elem) {
return;
}
@@ -267,7 +304,6 @@ Notification = (function() {
contH = this.container.height();
contW = this.container.width();
position = this.getPosition();
- console.log(position);
pMain = position[0];
pAlign = position[1];
pArrow = position[2] || pAlign;
@@ -295,13 +331,14 @@ Notification = (function() {
} else {
arrowSize = this.options.arrowSize;
arrowCss = $.extend({}, css);
+ arrowColor = this.userContainer.css("border-color") || this.userContainer.css("background-color") || 'white';
for (_i = 0, _len = mainPositions.length; _i < _len; _i++) {
pos = mainPositions[_i];
posFull = positions[pos];
if (pos === opp) {
continue;
}
- color = posFull === mainFull ? 'black' : 'transparent';
+ color = posFull === mainFull ? arrowColor : 'transparent';
arrowCss["border-" + posFull] = "" + arrowSize + "px solid " + color;
}
incr(css, positions[opp], arrowSize);
@@ -364,18 +401,18 @@ Notification = (function() {
};
Notification.prototype.updateStyleClasses = function() {
- var cls, style;
- cls = ['base'];
- if ($.isArray(this.options.cls)) {
- cls = cls.concat(this.options.cls);
- } else if (this.options.cls) {
- cls.push(this.options.cls);
+ var classes, style;
+ classes = ['base'];
+ if ($.isArray(this.options.className)) {
+ classes = classes.concat(this.options.className);
+ } else if (this.options.className) {
+ classes.push(this.options.className);
}
style = this.getStyle();
- cls = $.map(cls, function(n) {
- return "" + className + "-" + style.name + "-" + n;
+ classes = $.map(classes, function(n) {
+ return "" + pluginClassName + "-" + style.name + "-" + n;
}).join(' ');
- return this.userContainer.attr('class', cls);
+ return this.userContainer.attr('class', classes);
};
Notification.prototype.run = function(data, options) {
@@ -432,7 +469,7 @@ $[pluginName] = function(elem, data, options) {
$.fn[pluginName] = function(data, options) {
$(this).each(function() {
var inst;
- inst = getAnchorElement($(this)).data(className);
+ inst = getAnchorElement($(this)).data(pluginClassName);
if (inst) {
return inst.run(data, options);
} else {
@@ -459,9 +496,9 @@ $(function() {
});
insertCSS(coreStyle.css).attr('data-notify-style', 'core');
$[pluginName].addStyle(defaultStyleName, defaultStyle);
- return $(document).on('click', "." + className + "-wrapper", function() {
+ return $(document).on('click', "." + pluginClassName + "-wrapper", function() {
var inst;
- inst = $(this).data(className);
+ inst = $(this).data(pluginClassName);
if (!inst) {
return;
}
diff --git a/dist/notify.min.js b/dist/notify.min.js
index a524650..e7b7cd0 100644
--- a/dist/notify.min.js
+++ b/dist/notify.min.js
@@ -1,4 +1,4 @@
-/** Notify.js - v0.0.1 - 2013/06/03
+/** Notify.js - v0.0.1 - 2013/06/04
* http://notifyjs.com/
* Copyright (c) 2013 Jaime Pillora - MIT
- */(function(t,n,e){"use strict";var i,r,o,s,a,l,h,p,c,u,d,f,w,m,y,A,b,g,x,v,C,S,k,R=[].indexOf||function(t){for(var n=0,e=this.length;e>n;n++)if(n in this&&this[n]===t)return n;return-1};g="notify",o=g+"js",v={t:"top",m:"middle",b:"bottom",l:"left",c:"center",r:"right"},u=["l","c","r"],k=["t","m","b"],m=["t","b","l","r"],y={t:"b",m:null,b:"t",l:"r",c:null,r:"l"},b=function(t){var n;return n=[],$.each(t.split(/\W+/),function(t,i){var r;return r=i.toLowerCase().charAt(0),v[r]?n.push(r):e}),n},S={},s={name:"core",html:'',css:"."+o+"-corner {\n position: fixed;\n top: 0;\n right: 0;\n margin: 5px;\n z-index: 1050;\n}\n\n."+o+"-corner ."+o+"-wrapper,\n."+o+"-corner ."+o+"-container {\n position: relative;\n display: block;\n height: inherit;\n width: inherit;\n}\n\n."+o+"-wrapper {\n z-index: 1;\n position: absolute;\n display: inline-block;\n height: 0;\n width: 0;\n}\n\n."+o+"-container {\n display: none;\n z-index: 1;\n position: absolute;\n cursor: pointer;\n}\n\n."+o+"-text {\n position: relative;\n}\n\n."+o+"-arrow {\n position: absolute;\n z-index: 2;\n width: 0;\n height: 0;\n}"},p="bootstrap",h={html:"\n \n
",classes:{base:"padding: 8px 35px 8px 14px;\ntext-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);\nbackground-color: #fcf8e3;\nborder: 1px solid #fbeed5;\n-webkit-border-radius: 4px;\n-moz-border-radius: 4px;\nborder-radius: 4px;\nwhite-space: nowrap;",error:"color: #B94A48;\nbackground-color: #F2DEDE;\nborder-color: #EED3D7;\npadding-left: 25px;\nbackground-repeat: no-repeat;\nbackground-position: 3px 7px;\nbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtRJREFUeNqkVc1u00AQHq+dOD+0poIQfkIjalW0SEGqRMuRnHos3DjwAH0ArlyQeANOOSMeAA5VjyBxKBQhgSpVUKKQNGloFdw4cWw2jtfMOna6JOUArDTazXi/b3dm55socPqQhFka++aHBsI8GsopRJERNFlY88FCEk9Yiwf8RhgRyaHFQpPHCDmZG5oX2ui2yilkcTT1AcDsbYC1NMAyOi7zTX2Agx7A9luAl88BauiiQ/cJaZQfIpAlngDcvZZMrl8vFPK5+XktrWlx3/ehZ5r9+t6e+WVnp1pxnNIjgBe4/6dAysQc8dsmHwPcW9C0h3fW1hans1ltwJhy0GxK7XZbUlMp5Ww2eyan6+ft/f2FAqXGK4CvQk5HueFz7D6GOZtIrK+srupdx1GRBBqNBtzc2AiMr7nPplRdKhb1q6q6zjFhrklEFOUutoQ50xcX86ZlqaZpQrfbBdu2R6/G19zX6XSgh6RX5ubyHCM8nqSID6ICrGiZjGYYxojEsiw4PDwMSL5VKsC8Yf4VRYFzMzMaxwjlJSlCyAQ9l0CW44PBADzXhe7xMdi9HtTrdYjFYkDQL0cn4Xdq2/EAE+InCnvADTf2eah4Sx9vExQjkqXT6aAERICMewd/UAp/IeYANM2joxt+q5VI+ieq2i0Wg3l6DNzHwTERPgo1ko7XBXj3vdlsT2F+UuhIhYkp7u7CarkcrFOCtR3H5JiwbAIeImjT/YQKKBtGjRFCU5IUgFRe7fF4cCNVIPMYo3VKqxwjyNAXNepuopyqnld602qVsfRpEkkz+GFL1wPj6ySXBpJtWVa5xlhpcyhBNwpZHmtX8AGgfIExo0ZpzkWVTBGiXCSEaHh62/PoR0p/vHaczxXGnj4bSo+G78lELU80h1uogBwWLf5YlsPmgDEd4M236xjm+8nm4IuE/9u+/PH2JXZfbwz4zw1WbO+SQPpXfwG/BBgAhCNZiSb/pOQAAAAASUVORK5CYII=);",info:"",warn:""}},r=function(t,n){var i;return S[t]?(alert(""+g+": style '"+t+"' already defined"),e):(n.name=t,S[t]=n,!n.cssElem&&(i="",n.classes&&$.each(n.classes,function(t,e){return i+="."+o+"-"+n.name+"-"+t+" {\n "+e+"\n}\n"}),n.css&&(i+="/* styles for "+n.name+" */\n"+n.css),i)?(n.cssElem=w(i),n.cssElem.attr("data-notify-style",n.name)):e)},w=function(t){var n;n=l("style"),$("head").append(n);try{n.html(t)}catch(e){n[0].styleSheet.cssText=t}return n},x={autoHide:!1,autoHideDelay:2e3,arrowShow:!0,arrowSize:5,arrowColor:"border",position:"bottom",style:"bootstrap",cls:"error",showAnimation:"slideDown",showDuration:400,hideAnimation:"slideUp",hideDuration:200,offsetY:0,offsetX:0},f=function(t,n){var e;return e=function(){},e.prototype=t,$.extend(!0,new e,n)},A=function(t){return $.extend(x,t)},l=function(t){return $("<"+t+">"+t+">")},a=l("div").addClass(""+o+"-corner"),c=function(t){var n;return t.is("[type=radio]")&&(n=t.parents("form:first").find("[type=radio]").filter(function(n,e){return $(e).attr("name")===t.attr("name")}),t=n.first()),t},d=function(t,n,i){var r,o;if("string"==typeof i)i=parseInt(i,10);else if("number"!=typeof i)return;if(!isNaN(i))return r=v[y[n.charAt(0)]],o=n,t[r]!==e&&(n=v[r.charAt(0)],i*=-1),t[n]===e?t[n]=i:t[n]+=i,null},C=function(t,n,e){if("l"===t||"t"===t)return 0;if("c"===t||"m"===t)return e/2-n/2;if("r"===t||"b"===t)return e-n;throw"Invalid alignment"},i=function(){function t(t,n,e){"string"==typeof e&&(e={color:e}),this.options=f(x,$.isPlainObject(e)?e:{}),this.loadHTML(),this.wrapper=$(s.html),this.wrapper.data(o,this),this.arrow=this.wrapper.find("."+o+"-arrow"),this.container=this.wrapper.find("."+o+"-container"),this.container.append(this.userContainer),t&&t.length?(this.elementType=t.attr("type"),this.originalElement=t,this.elem=c(t),this.elem.data(o,this),this.elem.before(this.wrapper)):(this.options.arrowShow=!1,a.prepend(this.wrapper)),this.container.hide(),this.run(n)}return t.prototype.loadHTML=function(){var t;if(t=this.getStyle(),this.userContainer=$(t.html),this.text=this.userContainer.find("[data-notify-text]"),0===this.text.length)throw"style: "+name+" HTML is missing the: 'data-notify-text' attribute";return this.text.addClass(""+o+"-text")},t.prototype.show=function(t,n){var e,i,r,o;if(null==n&&(n=$.noop),o=this.container.parent().parents(":hidden").length>0,i=this.container.add(this.arrow),e=[],o&&t)r="show";else if(o&&!t)r="hide";else if(!o&&t)r=this.options.showAnimation,e.push(this.options.showDuration);else{if(o||t)return n();r=this.options.hideAnimation,e.push(this.options.hideDuration)}return e.push(n),i[r].apply(i,e)},t.prototype.updatePosition=function(){var t,n,i,r,o,s,a,l,h,p,c,f,w,A,b,g,x,S,E,H,D,I,X,j,B,F;if(this.elem){if(p=this.elem.position(),a=this.elem.outerHeight(),c=this.elem.outerWidth(),l=this.elem.innerHeight(),h=this.elem.innerWidth(),j=this.wrapper.position(),r=this.container.height(),o=this.container.width(),I=this.getPosition(),console.log(I),S=I[0],g=I[1],x=I[2]||g,f=v[S],A=y[S],b=v[A],s={},s[b]="b"===S?a:"r"===S?c:0,d(s,"left",p.left-j.left),w=parseInt(this.elem.css("margin-left"),10),w&&d(s,"left",w),/^inline/.test(this.elem.css("display"))&&(E=parseInt(this.elem.css("padding-top"),10),E&&d(s,"top",-E)),d(s,"top",this.options.offsetY),d(s,"left",this.options.offsetX),X=this.getStyle(),this.options.arrowShow){for(n=this.options.arrowSize,t=$.extend({},s),B=0,F=m.length;F>B;B++)H=m[B],D=v[H],H!==A&&(i=D===f?"black":"transparent",t["border-"+D]=""+n+"px solid "+i);d(s,v[A],n),R.call(m,g)>=0&&d(t,v[g],2*n)}else this.arrow.hide();return R.call(k,S)>=0?(d(s,"left",C(g,o,c)),t&&d(t,"left",C(g,n,h))):R.call(u,S)>=0&&(d(s,"top",C(g,r,a)),t&&d(t,"top",C(g,n,l))),this.container.is(":visible")&&(s.display="block"),this.container.removeAttr("style").css(s),t?this.arrow.removeAttr("style").css(t):e}},t.prototype.getPosition=function(){var t,n,e,i,r,o,s,a;if(n=this.options.position,t=b(n),0===t.length&&(t[0]="b"),e=t[0],0>R.call(m,e))throw"Must be one of ["+m+"]";if((1===t.length||(i=t[0],R.call(k,i)>=0&&(r=t[1],0>R.call(u,r)))||(o=t[0],R.call(u,o)>=0&&(s=t[1],0>R.call(k,s))))&&(t[1]=(a=t[0],R.call(u,a)>=0?"m":"l")),!this.options.autoReposition)return t;throw"Not implemented"},t.prototype.getStyle=function(t){var n;if(t||(t=this.options.style),t||(t="default"),n=S[t],!n)throw"Missing style: "+t;return n},t.prototype.updateStyleClasses=function(){var t,n;return t=["base"],$.isArray(this.options.cls)?t=t.concat(this.options.cls):this.options.cls&&t.push(this.options.cls),n=this.getStyle(),t=$.map(t,function(t){return""+o+"-"+n.name+"-"+t}).join(" "),this.userContainer.attr("class",t)},t.prototype.run=function(t,n){var i=this;return $.isPlainObject(n)?$.extend(this.options,n):"string"===$.type(n)&&(this.options.color=n),this.container&&!t?(this.show(!1),e):this.container||t?("string"===$.type(t)?this.text.html(t.replace("\n","
")):this.text.empty().append(t),this.updateStyleClasses(),this.updatePosition(),this.show(!0),this.options.autoHide?(clearTimeout(this.autohideTimer),this.autohideTimer=setTimeout(function(){return i.show(!1)},this.options.autoHideDelay)):e):e},t.prototype.destroy=function(){var t=this;return this.show(!1,function(){return t.wrapper.remove()})},t}(),$[g]=function(t,n,e){return t&&t.nodeName||t.jquery?$(t)[g](n,e):(e=n,n=t,new i(null,n,e)),t},$.fn[g]=function(t,n){return $(this).each(function(){var e;return e=c($(this)).data(o),e?e.run(t,n):new i($(this),t,n)}),this},$.extend($[g],{options:A,addStyle:r}),$(function(){return $("body").append(a),$("link").each(function(){var t,n;return n=$(this).attr("href"),n.match(/bootstrap/)?(t=!0,!1):e}),w(s.css).attr("data-notify-style","core"),$[g].addStyle(p,h),$(n).on("click","."+o+"-wrapper",function(){var t;return(t=$(this).data(o))?t.elem?t.show(!1):t.destroy():e})})})(window,document);
\ No newline at end of file
+ */(function(t,e,n){"use strict";var i,r,o,s,a,l,h,p,c,d,u,f,A,w,m,g,y,b,x,v,R,C,S,k,F=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};b="notify",y=b+"js",v={t:"top",m:"middle",b:"bottom",l:"left",c:"center",r:"right"},c=["l","c","r"],k=["t","m","b"],A=["t","b","l","r"],w={t:"b",m:null,b:"t",l:"r",c:null,r:"l"},g=function(t){var e;return e=[],$.each(t.split(/\W+/),function(t,i){var r;return r=i.toLowerCase().charAt(0),v[r]?e.push(r):n}),e},S={},o={name:"core",html:'',css:"."+y+"-corner {\n position: fixed;\n top: 0;\n right: 0;\n margin: 5px;\n z-index: 1050;\n}\n\n."+y+"-corner ."+y+"-wrapper,\n."+y+"-corner ."+y+"-container {\n position: relative;\n display: block;\n height: inherit;\n width: inherit;\n}\n\n."+y+"-wrapper {\n z-index: 1;\n position: absolute;\n display: inline-block;\n height: 0;\n width: 0;\n}\n\n."+y+"-container {\n display: none;\n z-index: 1;\n position: absolute;\n cursor: pointer;\n}\n\n."+y+"-text {\n position: relative;\n}\n\n."+y+"-arrow {\n position: absolute;\n z-index: 2;\n width: 0;\n height: 0;\n}"},h="bootstrap",l={html:"\n \n
",classes:{base:{padding:"8px 15px 8px 14px","text-shadow":"0 1px 0 rgba(255, 255, 255, 0.5)","background-color":"#fcf8e3",border:"1px solid #fbeed5","border-radius":"4px","white-space":"nowrap","padding-left":"25px","background-repeat":"no-repeat","background-position":"3px 7px"},error:{color:"#B94A48","background-color":"#F2DEDE","border-color":"#EED3D7","background-image":"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtRJREFUeNqkVc1u00AQHq+dOD+0poIQfkIjalW0SEGqRMuRnHos3DjwAH0ArlyQeANOOSMeAA5VjyBxKBQhgSpVUKKQNGloFdw4cWw2jtfMOna6JOUArDTazXi/b3dm55socPqQhFka++aHBsI8GsopRJERNFlY88FCEk9Yiwf8RhgRyaHFQpPHCDmZG5oX2ui2yilkcTT1AcDsbYC1NMAyOi7zTX2Agx7A9luAl88BauiiQ/cJaZQfIpAlngDcvZZMrl8vFPK5+XktrWlx3/ehZ5r9+t6e+WVnp1pxnNIjgBe4/6dAysQc8dsmHwPcW9C0h3fW1hans1ltwJhy0GxK7XZbUlMp5Ww2eyan6+ft/f2FAqXGK4CvQk5HueFz7D6GOZtIrK+srupdx1GRBBqNBtzc2AiMr7nPplRdKhb1q6q6zjFhrklEFOUutoQ50xcX86ZlqaZpQrfbBdu2R6/G19zX6XSgh6RX5ubyHCM8nqSID6ICrGiZjGYYxojEsiw4PDwMSL5VKsC8Yf4VRYFzMzMaxwjlJSlCyAQ9l0CW44PBADzXhe7xMdi9HtTrdYjFYkDQL0cn4Xdq2/EAE+InCnvADTf2eah4Sx9vExQjkqXT6aAERICMewd/UAp/IeYANM2joxt+q5VI+ieq2i0Wg3l6DNzHwTERPgo1ko7XBXj3vdlsT2F+UuhIhYkp7u7CarkcrFOCtR3H5JiwbAIeImjT/YQKKBtGjRFCU5IUgFRe7fF4cCNVIPMYo3VKqxwjyNAXNepuopyqnld602qVsfRpEkkz+GFL1wPj6ySXBpJtWVa5xlhpcyhBNwpZHmtX8AGgfIExo0ZpzkWVTBGiXCSEaHh62/PoR0p/vHaczxXGnj4bSo+G78lELU80h1uogBwWLf5YlsPmgDEd4M236xjm+8nm4IuE/9u+/PH2JXZfbwz4zw1WbO+SQPpXfwG/BBgAhCNZiSb/pOQAAAAASUVORK5CYII=)"},success:{color:"#468847","background-color":"#DFF0D8","border-color":"#D6E9C6","background-image":"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAutJREFUeNq0lctPE0Ecx38zu/RFS1EryqtgJFA08YCiMZIAQQ4eRG8eDGdPJiYeTIwHTfwPiAcvXIwXLwoXPaDxkWgQ6islKlJLSQWLUraPLTv7Gme32zoF9KSTfLO7v53vZ3d/M7/fIth+IO6INt2jjoA7bjHCJoAlzCRw59YwHYjBnfMPqAKWQYKjGkfCJqAF0xwZjipQtA3MxeSG87VhOOYegVrUCy7UZM9S6TLIdAamySTclZdYhFhRHloGYg7mgZv1Zzztvgud7V1tbQ2twYA34LJmF4p5dXF1KTufnE+SxeJtuCZNsLDCQU0+RyKTF27Unw101l8e6hns3u0PBalORVVVkcaEKBJDgV3+cGM4tKKmI+ohlIGnygKX00rSBfszz/n2uXv81wd6+rt1orsZCHRdr1Imk2F2Kob3hutSxW8thsd8AXNaln9D7CTfA6O+0UgkMuwVvEFFUbbAcrkcTA8+AtOk8E6KiQiDmMFSDqZItAzEVQviRkdDdaFgPp8HSZKAEAL5Qh7Sq2lIJBJwv2scUqkUnKoZgNhcDKhKg5aH+1IkcouCAdFGAQsuWZYhOjwFHQ96oagWgRoUov1T9kRBEODAwxM2QtEUl+Wp+Ln9VRo6BcMw4ErHRYjH4/B26AlQoQQTRdHWwcd9AH57+UAXddvDD37DmrBBV34WfqiXPl61g+vr6xA9zsGeM9gOdsNXkgpEtTwVvwOklXLKm6+/p5ezwk4B+j6droBs2CsGa/gNs6RIxazl4Tc25mpTgw/apPR1LYlNRFAzgsOxkyXYLIM1V8NMwyAkJSctD1eGVKiq5wWjSPdjmeTkiKvVW4f2YPHWl3GAVq6ymcyCTgovM3FzyRiDe2TaKcEKsLpJvNHjZgPNqEtyi6mZIm4SRFyLMUsONSSdkPeFtY1n0mczoY3BHTLhwPRy9/lzcziCw9ACI+yql0VLzcGAZbYSM5CCSZg1/9oc/nn7+i8N9p/8An4JMADxhH+xHfuiKwAAAABJRU5ErkJggg==)"},info:{},warn:{}}},C={"border-radius":["-webkit-","-moz-"]},r=function(t,e){var i;return S[t]?(alert(""+b+": style '"+t+"' already defined"),n):(e.name=t,S[t]=e,!e.cssElem&&(i="",e.classes&&$.each(e.classes,function(t,n){return i+="."+y+"-"+e.name+"-"+t+" {\n",$.each(n,function(t,e){return C[t]&&$.each(C[t],function(n,r){return i+=" "+r+t+": "+e+";\n"}),i+=" "+t+": "+e+";\n"}),i+="}\n"}),e.css&&(i+="/* styles for "+e.name+" */\n"+e.css),i)?(e.cssElem=f(i),e.cssElem.attr("data-notify-style",e.name)):n)},f=function(t){var e;e=a("style"),$("head").append(e);try{e.html(t)}catch(n){e[0].styleSheet.cssText=t}return e},x={autoHide:!0,autoHideDelay:5e3,arrowShow:!0,arrowSize:5,position:"bottom",style:"bootstrap",className:"error",showAnimation:"slideDown",showDuration:400,hideAnimation:"slideUp",hideDuration:200,offsetY:0,offsetX:0},u=function(t,e){var n;return n=function(){},n.prototype=t,$.extend(!0,new n,e)},m=function(t){return $.extend(x,t)},a=function(t){return $("<"+t+">"+t+">")},s=a("div").addClass(""+y+"-corner"),p=function(t){var e;return t.is("[type=radio]")&&(e=t.parents("form:first").find("[type=radio]").filter(function(e,n){return $(n).attr("name")===t.attr("name")}),t=e.first()),t},d=function(t,e,i){var r,o;if("string"==typeof i)i=parseInt(i,10);else if("number"!=typeof i)return;if(!isNaN(i))return r=v[w[e.charAt(0)]],o=e,t[r]!==n&&(e=v[r.charAt(0)],i*=-1),t[e]===n?t[e]=i:t[e]+=i,null},R=function(t,e,n){if("l"===t||"t"===t)return 0;if("c"===t||"m"===t)return n/2-e/2;if("r"===t||"b"===t)return n-e;throw"Invalid alignment"},i=function(){function t(t,e,n){"string"==typeof n&&(n={className:n}),this.options=u(x,$.isPlainObject(n)?n:{}),this.loadHTML(),this.wrapper=$(o.html),this.wrapper.data(y,this),this.arrow=this.wrapper.find("."+y+"-arrow"),this.container=this.wrapper.find("."+y+"-container"),this.container.append(this.userContainer),t&&t.length?(this.elementType=t.attr("type"),this.originalElement=t,this.elem=p(t),this.elem.data(y,this),this.elem.before(this.wrapper)):(this.options.arrowShow=!1,s.prepend(this.wrapper)),this.container.hide(),this.run(e)}return t.prototype.loadHTML=function(){var t;if(t=this.getStyle(),this.userContainer=$(t.html),this.text=this.userContainer.find("[data-notify-text]"),0===this.text.length&&(this.text=this.userContainer.find("[data-notify-html]"),this.rawText=!0),0===this.text.length)throw"style: '"+name+"' HTML is missing a: 'data-notify-text' or 'data-notify-html' attribute";return this.text.addClass(""+y+"-text")},t.prototype.show=function(t,e){var n,i,r,o;if(null==e&&(e=$.noop),o=this.container.parent().parents(":hidden").length>0,i=this.container.add(this.arrow),n=[],o&&t)r="show";else if(o&&!t)r="hide";else if(!o&&t)r=this.options.showAnimation,n.push(this.options.showDuration);else{if(o||t)return e();r=this.options.hideAnimation,n.push(this.options.hideDuration)}return n.push(e),i[r].apply(i,n)},t.prototype.updatePosition=function(){var t,e,i,r,o,s,a,l,h,p,u,f,m,g,y,b,x,C,S,E,D,H,B,N,I,T,Z;if(this.elem){if(u=this.elem.position(),l=this.elem.outerHeight(),f=this.elem.outerWidth(),h=this.elem.innerHeight(),p=this.elem.innerWidth(),I=this.wrapper.position(),o=this.container.height(),s=this.container.width(),B=this.getPosition(),S=B[0],x=B[1],C=B[2]||x,m=v[S],y=w[S],b=v[y],a={},a[b]="b"===S?l:"r"===S?f:0,d(a,"left",u.left-I.left),g=parseInt(this.elem.css("margin-left"),10),g&&d(a,"left",g),/^inline/.test(this.elem.css("display"))&&(E=parseInt(this.elem.css("padding-top"),10),E&&d(a,"top",-E)),d(a,"top",this.options.offsetY),d(a,"left",this.options.offsetX),N=this.getStyle(),this.options.arrowShow){for(i=this.options.arrowSize,e=$.extend({},a),t=this.userContainer.css("border-color")||this.userContainer.css("background-color")||"white",T=0,Z=A.length;Z>T;T++)D=A[T],H=v[D],D!==y&&(r=H===m?t:"transparent",e["border-"+H]=""+i+"px solid "+r);d(a,v[y],i),F.call(A,x)>=0&&d(e,v[x],2*i)}else this.arrow.hide();return F.call(k,S)>=0?(d(a,"left",R(x,s,f)),e&&d(e,"left",R(x,i,p))):F.call(c,S)>=0&&(d(a,"top",R(x,o,l)),e&&d(e,"top",R(x,i,h))),this.container.is(":visible")&&(a.display="block"),this.container.removeAttr("style").css(a),e?this.arrow.removeAttr("style").css(e):n}},t.prototype.getPosition=function(){var t,e,n,i,r,o,s,a;if(e=this.options.position,t=g(e),0===t.length&&(t[0]="b"),n=t[0],0>F.call(A,n))throw"Must be one of ["+A+"]";if((1===t.length||(i=t[0],F.call(k,i)>=0&&(r=t[1],0>F.call(c,r)))||(o=t[0],F.call(c,o)>=0&&(s=t[1],0>F.call(k,s))))&&(t[1]=(a=t[0],F.call(c,a)>=0?"m":"l")),!this.options.autoReposition)return t;throw"Not implemented"},t.prototype.getStyle=function(t){var e;if(t||(t=this.options.style),t||(t="default"),e=S[t],!e)throw"Missing style: "+t;return e},t.prototype.updateStyleClasses=function(){var t,e;return t=["base"],$.isArray(this.options.className)?t=t.concat(this.options.className):this.options.className&&t.push(this.options.className),e=this.getStyle(),t=$.map(t,function(t){return""+y+"-"+e.name+"-"+t}).join(" "),this.userContainer.attr("class",t)},t.prototype.run=function(t,e){var i=this;return $.isPlainObject(e)?$.extend(this.options,e):"string"===$.type(e)&&(this.options.color=e),this.container&&!t?(this.show(!1),n):this.container||t?("string"===$.type(t)?this.text.html(t.replace("\n","
")):this.text.empty().append(t),this.updateStyleClasses(),this.updatePosition(),this.show(!0),this.options.autoHide?(clearTimeout(this.autohideTimer),this.autohideTimer=setTimeout(function(){return i.show(!1)},this.options.autoHideDelay)):n):n},t.prototype.destroy=function(){var t=this;return this.show(!1,function(){return t.wrapper.remove()})},t}(),$[b]=function(t,e,n){return t&&t.nodeName||t.jquery?$(t)[b](e,n):(n=e,e=t,new i(null,e,n)),t},$.fn[b]=function(t,e){return $(this).each(function(){var n;return n=p($(this)).data(y),n?n.run(t,e):new i($(this),t,e)}),this},$.extend($[b],{options:m,addStyle:r}),$(function(){return $("body").append(s),$("link").each(function(){var t,e;return e=$(this).attr("href"),e.match(/bootstrap/)?(t=!0,!1):n}),f(o.css).attr("data-notify-style","core"),$[b].addStyle(h,l),$(e).on("click","."+y+"-wrapper",function(){var t;return(t=$(this).data(y))?t.elem?t.show(!1):t.destroy():n})})})(window,document);
\ No newline at end of file
diff --git a/src/notify.coffee b/src/notify.coffee
index ed3cdb5..158d10d 100644
--- a/src/notify.coffee
+++ b/src/notify.coffee
@@ -3,7 +3,7 @@
#plugin constants
pluginName = 'notify'
-className = pluginName+'js'
+pluginClassName = pluginName+'js'
# ================================
# POSITIONING
@@ -43,15 +43,15 @@ styles = {}
coreStyle =
name: 'core'
html: """
-
-
-
+
"""
- #
+ #
- # .#{className}Debug {
+ # .#{pluginClassName}Debug {
# position: absolute;
# border: 3px solid red;
# height: 0;
@@ -59,7 +59,7 @@ coreStyle =
# }
css: """
- .#{className}-corner {
+ .#{pluginClassName}-corner {
position: fixed;
top: 0;
right: 0;
@@ -67,15 +67,15 @@ coreStyle =
z-index: 1050;
}
- .#{className}-corner .#{className}-wrapper,
- .#{className}-corner .#{className}-container {
+ .#{pluginClassName}-corner .#{pluginClassName}-wrapper,
+ .#{pluginClassName}-corner .#{pluginClassName}-container {
position: relative;
display: block;
height: inherit;
width: inherit;
}
- .#{className}-wrapper {
+ .#{pluginClassName}-wrapper {
z-index: 1;
position: absolute;
display: inline-block;
@@ -83,18 +83,18 @@ coreStyle =
width: 0;
}
- .#{className}-container {
+ .#{pluginClassName}-container {
display: none;
z-index: 1;
position: absolute;
cursor: pointer;
}
- .#{className}-text {
+ .#{pluginClassName}-text {
position: relative;
}
- .#{className}-arrow {
+ .#{pluginClassName}-arrow {
position: absolute;
z-index: 2;
width: 0;
@@ -111,27 +111,32 @@ defaultStyle =
"""
classes:
- base: """
- padding: 8px 35px 8px 14px;
- text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
- background-color: #fcf8e3;
- border: 1px solid #fbeed5;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
- white-space: nowrap;
- """
- error: """
- color: #B94A48;
- background-color: #F2DEDE;
- border-color: #EED3D7;
- padding-left: 25px;
- background-repeat: no-repeat;
- background-position: 3px 7px;
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtRJREFUeNqkVc1u00AQHq+dOD+0poIQfkIjalW0SEGqRMuRnHos3DjwAH0ArlyQeANOOSMeAA5VjyBxKBQhgSpVUKKQNGloFdw4cWw2jtfMOna6JOUArDTazXi/b3dm55socPqQhFka++aHBsI8GsopRJERNFlY88FCEk9Yiwf8RhgRyaHFQpPHCDmZG5oX2ui2yilkcTT1AcDsbYC1NMAyOi7zTX2Agx7A9luAl88BauiiQ/cJaZQfIpAlngDcvZZMrl8vFPK5+XktrWlx3/ehZ5r9+t6e+WVnp1pxnNIjgBe4/6dAysQc8dsmHwPcW9C0h3fW1hans1ltwJhy0GxK7XZbUlMp5Ww2eyan6+ft/f2FAqXGK4CvQk5HueFz7D6GOZtIrK+srupdx1GRBBqNBtzc2AiMr7nPplRdKhb1q6q6zjFhrklEFOUutoQ50xcX86ZlqaZpQrfbBdu2R6/G19zX6XSgh6RX5ubyHCM8nqSID6ICrGiZjGYYxojEsiw4PDwMSL5VKsC8Yf4VRYFzMzMaxwjlJSlCyAQ9l0CW44PBADzXhe7xMdi9HtTrdYjFYkDQL0cn4Xdq2/EAE+InCnvADTf2eah4Sx9vExQjkqXT6aAERICMewd/UAp/IeYANM2joxt+q5VI+ieq2i0Wg3l6DNzHwTERPgo1ko7XBXj3vdlsT2F+UuhIhYkp7u7CarkcrFOCtR3H5JiwbAIeImjT/YQKKBtGjRFCU5IUgFRe7fF4cCNVIPMYo3VKqxwjyNAXNepuopyqnld602qVsfRpEkkz+GFL1wPj6ySXBpJtWVa5xlhpcyhBNwpZHmtX8AGgfIExo0ZpzkWVTBGiXCSEaHh62/PoR0p/vHaczxXGnj4bSo+G78lELU80h1uogBwWLf5YlsPmgDEd4M236xjm+8nm4IuE/9u+/PH2JXZfbwz4zw1WbO+SQPpXfwG/BBgAhCNZiSb/pOQAAAAASUVORK5CYII=);
- """
- info: ""
- warn: ""
+ base:
+ "padding": "8px 15px 8px 14px"
+ "text-shadow": "0 1px 0 rgba(255, 255, 255, 0.5)"
+ "background-color": "#fcf8e3"
+ "border": "1px solid #fbeed5"
+ "border-radius": "4px"
+ "white-space": "nowrap"
+ #for background-image
+ "padding-left": "25px"
+ "background-repeat": "no-repeat"
+ "background-position": "3px 7px"
+ error:
+ "color": "#B94A48"
+ "background-color": "#F2DEDE"
+ "border-color": "#EED3D7"
+ "background-image": "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtRJREFUeNqkVc1u00AQHq+dOD+0poIQfkIjalW0SEGqRMuRnHos3DjwAH0ArlyQeANOOSMeAA5VjyBxKBQhgSpVUKKQNGloFdw4cWw2jtfMOna6JOUArDTazXi/b3dm55socPqQhFka++aHBsI8GsopRJERNFlY88FCEk9Yiwf8RhgRyaHFQpPHCDmZG5oX2ui2yilkcTT1AcDsbYC1NMAyOi7zTX2Agx7A9luAl88BauiiQ/cJaZQfIpAlngDcvZZMrl8vFPK5+XktrWlx3/ehZ5r9+t6e+WVnp1pxnNIjgBe4/6dAysQc8dsmHwPcW9C0h3fW1hans1ltwJhy0GxK7XZbUlMp5Ww2eyan6+ft/f2FAqXGK4CvQk5HueFz7D6GOZtIrK+srupdx1GRBBqNBtzc2AiMr7nPplRdKhb1q6q6zjFhrklEFOUutoQ50xcX86ZlqaZpQrfbBdu2R6/G19zX6XSgh6RX5ubyHCM8nqSID6ICrGiZjGYYxojEsiw4PDwMSL5VKsC8Yf4VRYFzMzMaxwjlJSlCyAQ9l0CW44PBADzXhe7xMdi9HtTrdYjFYkDQL0cn4Xdq2/EAE+InCnvADTf2eah4Sx9vExQjkqXT6aAERICMewd/UAp/IeYANM2joxt+q5VI+ieq2i0Wg3l6DNzHwTERPgo1ko7XBXj3vdlsT2F+UuhIhYkp7u7CarkcrFOCtR3H5JiwbAIeImjT/YQKKBtGjRFCU5IUgFRe7fF4cCNVIPMYo3VKqxwjyNAXNepuopyqnld602qVsfRpEkkz+GFL1wPj6ySXBpJtWVa5xlhpcyhBNwpZHmtX8AGgfIExo0ZpzkWVTBGiXCSEaHh62/PoR0p/vHaczxXGnj4bSo+G78lELU80h1uogBwWLf5YlsPmgDEd4M236xjm+8nm4IuE/9u+/PH2JXZfbwz4zw1WbO+SQPpXfwG/BBgAhCNZiSb/pOQAAAAASUVORK5CYII=)"
+ success:
+ "color": "#468847"
+ "background-color": "#DFF0D8"
+ "border-color": "#D6E9C6"
+ "background-image": "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAutJREFUeNq0lctPE0Ecx38zu/RFS1EryqtgJFA08YCiMZIAQQ4eRG8eDGdPJiYeTIwHTfwPiAcvXIwXLwoXPaDxkWgQ6islKlJLSQWLUraPLTv7Gme32zoF9KSTfLO7v53vZ3d/M7/fIth+IO6INt2jjoA7bjHCJoAlzCRw59YwHYjBnfMPqAKWQYKjGkfCJqAF0xwZjipQtA3MxeSG87VhOOYegVrUCy7UZM9S6TLIdAamySTclZdYhFhRHloGYg7mgZv1Zzztvgud7V1tbQ2twYA34LJmF4p5dXF1KTufnE+SxeJtuCZNsLDCQU0+RyKTF27Unw101l8e6hns3u0PBalORVVVkcaEKBJDgV3+cGM4tKKmI+ohlIGnygKX00rSBfszz/n2uXv81wd6+rt1orsZCHRdr1Imk2F2Kob3hutSxW8thsd8AXNaln9D7CTfA6O+0UgkMuwVvEFFUbbAcrkcTA8+AtOk8E6KiQiDmMFSDqZItAzEVQviRkdDdaFgPp8HSZKAEAL5Qh7Sq2lIJBJwv2scUqkUnKoZgNhcDKhKg5aH+1IkcouCAdFGAQsuWZYhOjwFHQ96oagWgRoUov1T9kRBEODAwxM2QtEUl+Wp+Ln9VRo6BcMw4ErHRYjH4/B26AlQoQQTRdHWwcd9AH57+UAXddvDD37DmrBBV34WfqiXPl61g+vr6xA9zsGeM9gOdsNXkgpEtTwVvwOklXLKm6+/p5ezwk4B+j6droBs2CsGa/gNs6RIxazl4Tc25mpTgw/apPR1LYlNRFAzgsOxkyXYLIM1V8NMwyAkJSctD1eGVKiq5wWjSPdjmeTkiKvVW4f2YPHWl3GAVq6ymcyCTgovM3FzyRiDe2TaKcEKsLpJvNHjZgPNqEtyi6mZIm4SRFyLMUsONSSdkPeFtY1n0mczoY3BHTLhwPRy9/lzcziCw9ACI+yql0VLzcGAZbYSM5CCSZg1/9oc/nn7+i8N9p/8An4JMADxhH+xHfuiKwAAAABJRU5ErkJggg==)"
+ info: {}
+ warn: {}
+
+stylePrefixes =
+ "border-radius": ["-webkit-", "-moz-"]
addStyle = (name, def) ->
if styles[name]
@@ -144,12 +149,16 @@ addStyle = (name, def) ->
cssText = ""
if def.classes
- $.each def.classes, (subClassName, css) ->
- cssText += """
- .#{className}-#{def.name}-#{subClassName} {
- #{css}
- }\n
- """
+ $.each def.classes, (className, props) ->
+ cssText += ".#{pluginClassName}-#{def.name}-#{className} {\n"
+ $.each props, (name, val) ->
+ #vendor prefixes
+ if stylePrefixes[name]
+ $.each stylePrefixes[name], (i, prefix) ->
+ cssText += " #{prefix}#{name}: #{val};\n"
+ #add prop
+ cssText += " #{name}: #{val};\n"
+ cssText += "}\n"
if def.css
cssText += """
/* styles for #{def.name} */
@@ -161,6 +170,7 @@ addStyle = (name, def) ->
def.cssElem.attr('data-notify-style', def.name)
insertCSS = (cssText) ->
+
elem = createElem("style")
$("head").append elem
try
@@ -176,15 +186,14 @@ insertCSS = (cssText) ->
#overridable options
pluginOptions =
- autoHide: false
- autoHideDelay: 2000
+ autoHide: true
+ autoHideDelay: 5000
arrowShow: true
arrowSize: 5
- arrowColor: 'border'
position: 'bottom'
# Default style
style: 'bootstrap'
- cls: 'error'
+ className: 'error'
showAnimation: 'slideDown'
showDuration: 400
hideAnimation: 'slideUp'
@@ -213,7 +222,7 @@ createElem = (tag) ->
$ "<#{tag}>#{tag}>"
# container for element-less notifications
-cornerElem = createElem("div").addClass("#{className}-corner")
+cornerElem = createElem("div").addClass("#{pluginClassName}-corner")
#gets first on n radios, and gets the fancy stylised input for hidden inputs
getAnchorElement = (element) ->
@@ -267,23 +276,23 @@ class Notification
#setup instance variables
constructor: (elem, data, options) ->
- options = {color: options} if typeof options is 'string'
+ options = {className: options} if typeof options is 'string'
@options = inherit pluginOptions, if $.isPlainObject(options) then options else {}
#load user html into @userContainer
@loadHTML()
@wrapper = $(coreStyle.html)
- @wrapper.data className, @
- @arrow = @wrapper.find ".#{className}-arrow"
- @container = @wrapper.find ".#{className}-container"
+ @wrapper.data pluginClassName, @
+ @arrow = @wrapper.find ".#{pluginClassName}-arrow"
+ @container = @wrapper.find ".#{pluginClassName}-container"
@container.append @userContainer
if elem and elem.length
@elementType = elem.attr('type')
@originalElement = elem
@elem = getAnchorElement(elem)
- @elem.data className, @
+ @elem.data pluginClassName, @
# add into dom above elem
@elem.before @wrapper
else
@@ -299,8 +308,12 @@ class Notification
@userContainer = $(style.html)
@text = @userContainer.find '[data-notify-text]'
if @text.length is 0
- throw "style: #{name} HTML is missing the: 'data-notify-text' attribute"
- @text.addClass "#{className}-text"
+ @text = @userContainer.find '[data-notify-html]'
+ @rawText = true
+ if @text.length is 0
+ throw "style: '#{name}' HTML is missing a: 'data-notify-text' or 'data-notify-html' attribute"
+
+ @text.addClass "#{pluginClassName}-text"
show: (show, callback = $.noop) ->
@@ -341,8 +354,6 @@ class Notification
#get user defined position
position = @getPosition()
-
- console.log position
pMain = position[0]
pAlign = position[1]
@@ -354,8 +365,12 @@ class Notification
oppFull = positions[opp]
#initial positioning
css = {}
- css[oppFull] = if pMain is 'b' then elemH else
- if pMain is 'r' then elemW else 0
+ css[oppFull] = if pMain is 'b'
+ elemH
+ else if pMain is 'r'
+ elemW
+ else
+ 0
#correct for elem-wrapper offset
# unless navigator.userAgent.match /MSIE/
@@ -383,11 +398,14 @@ class Notification
else
arrowSize = @options.arrowSize
arrowCss = $.extend {}, css
+ arrowColor = @userContainer.css("border-color") or
+ @userContainer.css("background-color") or
+ 'white'
#build arrow
for pos in mainPositions
posFull = positions[pos]
continue if pos is opp
- color = if posFull is mainFull then 'black' else 'transparent'
+ color = if posFull is mainFull then arrowColor else 'transparent'
arrowCss["border-#{posFull}"] = "#{arrowSize}px solid #{color}"
#add some room for the arrow
incr css, positions[opp], arrowSize
@@ -402,8 +420,8 @@ class Notification
incr css, 'top', realign(pAlign, contH, elemH)
incr arrowCss, 'top', realign(pAlign, arrowSize, elemIH) if arrowCss
- #apply css
css.display = 'block' if @container.is(":visible")
+ #apply css
@container.removeAttr('style').css css
@arrow.removeAttr('style').css(arrowCss) if arrowCss
@@ -434,21 +452,21 @@ class Notification
name = @options.style unless name
name = 'default' unless name
style = styles[name]
- throw "Missing style: #{name}" unless style
+ throw "Missing style: #{name}"unless style
style
updateStyleClasses: ->
- cls = ['base']
+ classes = ['base']
- if $.isArray @options.cls
- cls = cls.concat @options.cls
- else if @options.cls
- cls.push @options.cls
+ if $.isArray @options.className
+ classes = classes.concat @options.className
+ else if @options.className
+ classes.push @options.className
style = @getStyle()
- cls = $.map(cls, (n) -> "#{className}-#{style.name}-#{n}").join ' '
+ classes = $.map(classes, (n) -> "#{pluginClassName}-#{style.name}-#{n}").join ' '
- @userContainer.attr 'class', cls
+ @userContainer.attr 'class', classes
#run plugin
@@ -509,7 +527,7 @@ $[pluginName] = (elem, data, options) ->
# $( ... ).pluginName( { .. } ) creates a cached instance on each
$.fn[pluginName] = (data, options) ->
$(@).each ->
- inst = getAnchorElement($(@)).data(className)
+ inst = getAnchorElement($(@)).data(pluginClassName)
if inst
inst.run data, options
else
@@ -537,8 +555,8 @@ $ ->
$[pluginName].addStyle(defaultStyleName, defaultStyle)
#watch all notifications clicks
- $(document).on 'click', ".#{className}-wrapper", ->
- inst = $(@).data className
+ $(document).on 'click', ".#{pluginClassName}-wrapper", ->
+ inst = $(@).data pluginClassName
return unless inst
if inst.elem
inst.show false