import GlobalEvents from "/app/js/common/EventCaller.js"; class Modal{ constructor(){ this.__currentModalEl = null; window.addEventListener("click", (function(event){ if (event.target === this.__currentModalEl){ this.close_modal(); } }).bind(this)); GlobalEvents.listen("modal-open", (function(event){ if (event.hasOwnProperty("id") && typeof(event.id) === 'string'){ var force = (event.hasOwnProperty("force")) ? event.force === true : false; this.open_modal_id(event.id, force); } }).bind(this)); GlobalEvents.listen("modal-close", (function(event){ this.close_modal(); }).bind(this)); } get currentModalElement(){ return this.__currentModalEl; } open_modal_id(idname, force=false){ var el = document.getElementById(idname); if (el.classList.contains("modal") && this.__currentModalEl !== el){ if (this.__currentModalEl !== null && force) this.close_modal(); if (this.__currentModalEl === null){ if (el){ return this.open_modal_element(el); } } } return this; } open_modal_element(el, force=false){ if (el.classList.contains("modal")){ if (this.__currentModalEl !== null && force) this.close_modal(); if (this.__currentModalEl === null){ el.classList.add("modal-visible"); this.__currentModalEl = el; } } return this; } close_modal(){ if (this.__currentModalEl !== null){ this.__currentModalEl.classList.remove("modal-visible"); this.__currentModalEl = null; } return this; } } const instance = new Modal(); export default instance;