All Downloads are FREE. Search and download functionalities are using the official Maven repository.

spaceship.js.components.notify.js Maven / Gradle / Ivy

The newest version!
/*! UIkit 2.22.0 | 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; });




© 2015 - 2025 Weber Informatics LLC | Privacy Policy