From c94fb32c7a3c28b18a27460aa2447eeec1fac1de Mon Sep 17 00:00:00 2001 From: Pascal Szewczyk Date: Mon, 18 Jul 2016 23:23:54 +0200 Subject: uikit added --- js/components/notify.js | 189 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100755 js/components/notify.js (limited to 'js/components/notify.js') diff --git a/js/components/notify.js b/js/components/notify.js new file mode 100755 index 0000000..d67be84 --- /dev/null +++ b/js/components/notify.js @@ -0,0 +1,189 @@ +/*! UIkit 2.26.4 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ +(function(addon) { + + var component; + + if (window.UIkit) { + component = addon(UIkit); + } + + if (typeof define == "function" && define.amd) { + define("uikit-notify", ["uikit"], function(){ + return component || addon(UIkit); + }); + } + +})(function(UI){ + + "use strict"; + + var containers = {}, + messages = {}, + + notify = function(options){ + + if (UI.$.type(options) == 'string') { + options = { message: options }; + } + + if (arguments[1]) { + options = UI.$.extend(options, UI.$.type(arguments[1]) == 'string' ? {status:arguments[1]} : arguments[1]); + } + + return (new Message(options)).show(); + }, + closeAll = function(group, instantly){ + + var id; + + if (group) { + for(id in messages) { if(group===messages[id].group) messages[id].close(instantly); } + } else { + for(id in messages) { messages[id].close(instantly); } + } + }; + + var Message = function(options){ + + this.options = UI.$.extend({}, Message.defaults, options); + + this.uuid = UI.Utils.uid("notifymsg"); + this.element = UI.$([ + + '
', + '', + '
', + '
' + + ].join('')).data("notifyMessage", this); + + this.content(this.options.message); + + // status + if (this.options.status) { + this.element.addClass('uk-notify-message-'+this.options.status); + this.currentstatus = this.options.status; + } + + this.group = this.options.group; + + messages[this.uuid] = this; + + if(!containers[this.options.pos]) { + containers[this.options.pos] = UI.$('
').appendTo('body').on("click", ".uk-notify-message", function(){ + + var message = UI.$(this).data("notifyMessage"); + + message.element.trigger('manualclose.uk.notify', [message]); + message.close(); + }); + } + }; + + + UI.$.extend(Message.prototype, { + + uuid: false, + element: false, + timout: false, + currentstatus: "", + group: false, + + show: function() { + + if (this.element.is(":visible")) return; + + var $this = this; + + containers[this.options.pos].show().prepend(this.element); + + var marginbottom = parseInt(this.element.css("margin-bottom"), 10); + + this.element.css({"opacity":0, "margin-top": -1*this.element.outerHeight(), "margin-bottom":0}).animate({"opacity":1, "margin-top": 0, "margin-bottom":marginbottom}, function(){ + + if ($this.options.timeout) { + + var closefn = function(){ $this.close(); }; + + $this.timeout = setTimeout(closefn, $this.options.timeout); + + $this.element.hover( + function() { clearTimeout($this.timeout); }, + function() { $this.timeout = setTimeout(closefn, $this.options.timeout); } + ); + } + + }); + + return this; + }, + + close: function(instantly) { + + var $this = this, + finalize = function(){ + $this.element.remove(); + + if (!containers[$this.options.pos].children().length) { + containers[$this.options.pos].hide(); + } + + $this.options.onClose.apply($this, []); + $this.element.trigger('close.uk.notify', [$this]); + + delete messages[$this.uuid]; + }; + + if (this.timeout) clearTimeout(this.timeout); + + if (instantly) { + finalize(); + } else { + this.element.animate({"opacity":0, "margin-top": -1* this.element.outerHeight(), "margin-bottom":0}, function(){ + finalize(); + }); + } + }, + + content: function(html){ + + var container = this.element.find(">div"); + + if(!html) { + return container.html(); + } + + container.html(html); + + return this; + }, + + status: function(status) { + + if (!status) { + return this.currentstatus; + } + + this.element.removeClass('uk-notify-message-'+this.currentstatus).addClass('uk-notify-message-'+status); + + this.currentstatus = status; + + return this; + } + }); + + Message.defaults = { + message: "", + status: "", + timeout: 5000, + group: null, + pos: 'top-center', + onClose: function() {} + }; + + UI.notify = notify; + UI.notify.message = Message; + UI.notify.closeAll = closeAll; + + return notify; +}); -- cgit v1.2.3