Project

General

Profile

1

    
2
    "use strict";
3

    
4
var Modal = function(){
5

    
6
    var modalOverlay = document.createElement('div');
7
        modalOverlay.setAttribute('class', 'modal-overlay');
8
        document.body.appendChild(modalOverlay);
9

    
10
    var config = {
11
        $modal: document.querySelector('.modal'),
12
        $modalOverlay: document.querySelector('.modal-overlay'),
13
         modalOverlayColor: 'rgba(255,255,255,0.7)',
14
        $modalClose: document.querySelector('.modal-close'),
15
        $modalTrigger: document.querySelector('.modal-trigger'),
16
        $draggie: new Draggabilly( document.querySelector('.modal'), {
17
              handle: '.modal-header',
18
              containment: 'html'
19
        })
20
    }
21
    $modal.$modalOverlay.style.background = config.modalOverlayColor;
22

    
23
    var Modal = {
24
        createEvent: function(eventName, callback){
25
            var event = document.createEvent('HTMLEvents');
26
            event.initEvent(eventName, true, false);
27
            config.$modal.dispatchEvent(event);
28

    
29
            if (callback && typeof(callback) === "function") {
30
                callback();
31
            }
32
        },
33
        open: function(){
34
            config.$modal.style.visibility = "visible";
35
            config.$modal.classList.add('opening');
36
            config.$modal.classList.remove('closing');
37
            config.$modalOverlay.style.visibility = "visible";
38
            config.$modalOverlay.classList.add('opening');
39
            config.$modalOverlay.classList.remove('closing');
40
            Modal.createEvent('modalOpened', function(){
41
                //callback
42
            })
43
        },
44
        close: function(){
45
            config.$modal.classList.add('closing');
46
            config.$modal.classList.remove('opening');
47
            config.$modalOverlay.classList.add('closing');
48
            config.$modalOverlay.classList.remove('opening');
49
            var timer = window.setTimeout(function(){
50
                config.$modal.style.visibility = "hidden";
51
                config.$modalOverlay.style.visibility = "hidden";
52
                Modal.createEvent('modalClosed', function(){
53
                    //callback
54
                });
55
            },500);
56
        },
57
        init: function(){
58
            config.$draggie.on( 'dragStart', function( instance, event, pointer ){
59
                console.log( 'dragMove on ' + event.type + pointer.pageX + ', ' + pointer.pageY + ' position at ' + instance.position.x + ', ' + instance.position.y );
60
            });
61

    
62
            config.$modalClose.addEventListener("click", function(){
63
                Modal.close();
64
            }, false); 
65

    
66
            config.$modalTrigger.addEventListener("click", function(){
67
                Modal.open();
68
            }, false); 
69

    
70
            window.addEventListener("keydown", function(e){
71
                console.log(e.keyCode);
72
                if (e.keyCode == 27) {
73
                    if( config.$modal.style.display != 'none'){
74
                        Modal.close();
75
                    }
76
                }
77

    
78
                if (e.keyCode == 38 && e.ctrlKey) {
79
                    console.log('full');
80
                    if(config.$modal.classList.contains("is-right") || config.$modal.classList.contains("is-left")){
81
                        config.$modal.classList.remove("is-right");
82
                        config.$modal.classList.remove("is-left");
83
                        config.$draggie.enable();
84
                    } else {
85
                        config.$draggie.disable();
86
                        config.$modal.classList.add("is-full");
87
                    }
88
                }
89

    
90
                if (e.keyCode == 37 && e.ctrlKey) {
91
                    console.log('left');
92
                    if(config.$modal.classList.contains("is-right") || config.$modal.classList.contains("is-full")){
93
                        config.$modal.classList.remove("is-right");
94
                        config.$modal.classList.remove("is-full");
95
                        config.$draggie.enable();
96
                    } else {
97
                        config.$modal.classList.add("is-left");
98
                        config.$draggie.disable();
99
                    }
100
                }
101

    
102
                if (e.keyCode == 39 && e.ctrlKey) {
103
                     console.log('right');
104
                    if(config.$modal.classList.contains("is-left") || config.$modal.classList.contains("is-full")){
105
                        config.$modal.classList.remove("is-left");
106
                        config.$modal.classList.remove("is-full");
107
                        config.$draggie.enable();
108
                    } else {
109
                         config.$modal.classList.add("is-right");
110
                         config.$draggie.disable();
111
                    }
112
                }
113

    
114
                if (e.keyCode == 40 && e.ctrlKey) {
115
                    if(config.$modal.classList.contains("is-full")){
116
                        config.$modal.classList.remove("is-full");
117
                        config.$draggie.enable();
118
                    }
119
                }
120

    
121
            });
122

    
123
            config.$modal.addEventListener("modalOpened", function(){
124
                console.log("Modal Opened");
125
            })
126
            config.$modal.addEventListener("modalClosed", function(){
127
                console.log("Modal Closed");
128
            })
129

    
130
        }
131
    }
132
    Modal.config = config;
133

    
134
    return Modal;
135

    
136
};
137

    
(6-6/13)