aboutsummaryrefslogtreecommitdiff
path: root/src/Plugins/CloseButton.js
blob: 1a1b45310bdb1902a9b88d424e59ef6193ca88c2 (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
/**
 * @author Victor Häggqvist
 * @since 2016-01-14
 */


export class CloseButton {

    constructor(closeOnDocumentClick=false) {
        this.closeOnDocumentClick = closeOnDocumentClick;
        this.element = document.createElement('a');
        this.element.id = 'imagelightbox-close';
        this.element.innerHTML = 'Close';
    }

    register(lightbox) {
        this.lightbox = lightbox;
        lightbox.addOnStartListener(this.showButton.bind(this));
        lightbox.addOnEndListener(this.hideButton.bind(this));
    }

    showButton() {
        this.lightbox.options.quitOnDocClick = this.closeOnDocumentClick;
        ['click', 'touchend'].forEach(name => {
            this.element.addEventListener(name, this.exitLightbox.bind(this));
        });

        document.body.appendChild(this.element);
    }

    hideButton() {
        document.body.removeChild(this.element);
    }

    exitLightbox() {
        this.lightbox.quitLightbox();
    }

}