summaryrefslogtreecommitdiffstats
path: root/assets/js/toaster.js
blob: 044230aaf1cde831dc2afdab2f563667f3af95c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/**
 * Toaster.js
 * 
 * Repository: https://github.com/BigCoke233/toaster.js
 * Version: 1.0.0
 * 
 * jQuery required!
 */

 Toaster = function() {

    Toaster.amount = 0;

    Toaster.default = {
        color: '#C5C56A',
        autoClose: true,
        autoCloseDelay: 2000,
        position: 'right-top'
    };

    //core method
    Toaster.toast = function(m, options = Toaster.default){
        if($('#toast-'+Toaster.amount).length) Toaster.dismiss('#toast-'+Toaster.amount);
        Toaster.amount++;

        var id = 'toast-'+Toaster.amount;
        var selector = '#'+id;
        $toast = $('<div class="toaster"></div>').attr('id',id).text(m).css({'background': options.color || Toaster.default.color}).addClass('toaster-'+(options.position || Toaster.default.position));
        $('body').append($toast);
        setTimeout(function(){
            $(selector).addClass('toasting');
        }, 1);

        $(selector).click(function(){
            if(options.onClick) options.onClick();
            Toaster.dismiss(selector);
        });

        var autoClose=Toaster.default.autoClose;
        if(options.autoClose!==undefined) autoClose=options.autoClose;
        if(autoClose) {
            setTimeout(function(){
                Toaster.dismiss(selector);
            }, options.autoCloseDelay || Toaster.default.autoCloseDelay);
        }
    }
    Toaster.send = Toaster.toast; //for downward compatibility

    //quick method
    Toaster.error = function(m, options) {
        Toaster.default.color='#F44236';
        Toaster.toast(m, options);
        Toaster.default.color='#C5C56A';
    }

    //dismiss given toast
    Toaster.dismiss = function(toast) {
        $(toast).removeClass('toasting').addClass('toast-dismissed');
        setTimeout(function(){
            $(toast).remove();
        }, 1000);
    }
};

new Toaster();