import { Modal } from './modal'; export class ModalManager { public modals: Record = {}; public closers = document.querySelectorAll( '[data-modal-closer]', ) as NodeListOf; constructor() { this.closers.forEach((item) => { item.setAttribute('aria-label', 'Close modal'); item.addEventListener('click', (evt) => { evt.preventDefault(); this.close(); }); }); window.addEventListener('keyup', (evt: KeyboardEvent) => { if (evt.key === 'Escape') { this.close(); } }); } public register(item: T): T { this.modals[item.name] = item; item.initialize(); item.reset(); return item; } public close(name?: string): void { if (name) { this.modals[name].reset(); return; } Object.values(this.modals).forEach((item) => item.reset()); } }