diff options
author | Elizabeth Hunt <elizabeth@simponic.xyz> | 2025-03-01 12:36:47 -0700 |
---|---|---|
committer | Elizabeth Hunt <elizabeth@simponic.xyz> | 2025-03-01 12:36:47 -0700 |
commit | 8dacee8f73633131fd68935c1e2493dc4beec837 (patch) | |
tree | fc9adf76fce4761b01208ba2f44e72a6838244aa /src/engine/utils/Modal.ts | |
parent | d903bd9a13e790cf42c84c3dc59bf89ffeae1d80 (diff) | |
download | the-abstraction-engine-8dacee8f73633131fd68935c1e2493dc4beec837.tar.gz the-abstraction-engine-8dacee8f73633131fd68935c1e2493dc4beec837.zip |
updates
Diffstat (limited to 'src/engine/utils/Modal.ts')
-rw-r--r-- | src/engine/utils/Modal.ts | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/engine/utils/Modal.ts b/src/engine/utils/Modal.ts new file mode 100644 index 0000000..d46cade --- /dev/null +++ b/src/engine/utils/Modal.ts @@ -0,0 +1,45 @@ +import { Miscellaneous } from "../config"; + +export class ModalInstance { + private modalOpen: boolean = false; + private elementId: string = Miscellaneous.MODAL_ID; + private contentId: string = Miscellaneous.MODAL_CONTENT_ID; + + public open(content: string) { + const modal = document.getElementById(this.elementId); + const modalContent = document.getElementById(this.contentId); + if (!modal || this.modalOpen) { + return; + } + + this.modalOpen = true; + modal.style.display = "flex"; + modal.style.animation = "fadeIn 0.25s"; + + modalContent!.innerHTML = content; + modalContent!.style.animation = "scaleUp 0.25s"; + } + + public vanish(): Promise<void> { + const modal = document.getElementById(this.elementId); + const modalContent = document.getElementById(this.contentId); + return new Promise((res, _rej) => { + if (!(modal && this.modalOpen && modalContent)) { + res(); + return; + } + modal.style.animation = "fadeOut 0.25s"; + modalContent.style.animation = "scaleDown 0.25s"; + + setTimeout(() => { + modalContent.innerHTML = ""; + modal.style.display = "none"; + + this.modalOpen = false; + res(); + }, 200); + }); + } +} + +export const ModalSingleton = new ModalInstance();
\ No newline at end of file |