{ "version": 3, "sources": ["../../../../../../../../source/febe/ui/static/svg/icons/close.svg", "../../../../../../../../source/febe/ui/src/scripts/components/Modal.ts"], "sourcesContent": ["", "import close from \"@icons/close.svg\";\nimport { Hatch, SafeString } from \"../classes/Hatch.js\";\n\ninterface ModalOptions {\n cb?: Function;\n body: SafeString;\n onclose?: Function;\n}\n\ninterface FormModalOptions extends ModalOptions {\n action: string;\n successMsg?: string;\n failedMsg?: string;\n method?: \"POST\" | \"GET\";\n cb?: Function;\n}\n\nexport class Modal {\n body: SafeString;\n el: HTMLElement;\n cb?: Function;\n onclose?: Function;\n\n constructor(options: ModalOptions) {\n this.body = options.body;\n this.onclose = options.onclose;\n this.cb = options.cb;\n document.body.appendChild(this.getTemplate(options));\n }\n\n close() {\n this.el.classList.add(\"out\");\n if (this.onclose) this.onclose();\n setTimeout(() => {\n this.el.remove();\n }, 400);\n }\n\n getTemplate(options: ModalOptions) {\n this.el = document.createElement(\"div\");\n this.el.classList.add(\"modal\");\n this.el.classList.add(\"out\");\n this.el.innerHTML = Hatch`\n