Вход Регистрация
Файл: tyde/www/web/js/components/notify.js
Строк: 201
<?php
/*! UIkit 2.24.3 | 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.$([

            
'<div class="uk-notify-message">',
                
'<a class="uk-close"></a>',
                
'<div></div>',
            
'</div>'

        
].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.$('<div class="uk-notify uk-notify-'+this.options.pos+'"></div>').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;
});
?>
Онлайн: 2
Реклама