6 elem.addEventListener('click', event => {
7 if (event.target === elem) return this.hide();
9 let closeButtons = elem.querySelectorAll('.overlay-close');
10 for (let i=0; i < closeButtons.length; i++) {
11 closeButtons[i].addEventListener('click', this.hide.bind(this));
16 let start = Date.now();
19 function setOpacity() {
20 let elapsedTime = (Date.now() - start);
21 let targetOpacity = show ? (elapsedTime / duration) : 1-(elapsedTime / duration);
22 this.container.style.opacity = targetOpacity;
23 if (elapsedTime > duration) {
24 this.container.style.display = show ? 'flex' : 'none';
25 this.container.style.opacity = '';
27 requestAnimationFrame(setOpacity.bind(this));
31 requestAnimationFrame(setOpacity.bind(this));
34 hide() { this.toggle(false); }
35 show() { this.toggle(true); }
39 export default Overlay;