class Modal { constructor(vehicle) { this.vehicle = vehicle; this.modalDiv; this.initModal(); } toggleModal(html) { if (this.modalDiv) { const modalBody = this.modalDiv.querySelector('#ac-modal-body'); modalBody.innerHTML = ''; if (html) { modalBody.appendChild(html.initForm()); } } const body = document.querySelector('body'); const modal = document.querySelector('.modal'); modal.classList.toggle('opacity-0'); modal.classList.toggle('pointer-events-none'); body.classList.toggle('modal-active'); } initModal() { // Create a new div element const modalDiv = document.createElement('div'); modalDiv.classList.add( 'modal', 'z-50', 'opacity-0', 'pointer-events-none', 'fixed', 'w-full', 'h-full', 'top-0', 'left-0', 'flex', 'items-center', 'justify-center' ); modalDiv.innerHTML = ` `; const overlay = modalDiv.querySelector('.modal-overlay'); overlay.addEventListener('click', function () { const activeModal = modalDiv.querySelector('.modal'); activeModal && activeModal.classList.contains('opacity-0') && this.toggleModal(); }); var closemodal = modalDiv.querySelectorAll('.modal-close'); for (var i = 0; i < closemodal.length; i++) { closemodal[i].addEventListener('click', this.toggleModal); } document.onkeydown = (evt) => { evt = evt || window.event; var isEscape = false; if ('key' in evt) { isEscape = evt.key === 'Escape' || evt.key === 'Esc'; } else { isEscape = evt.keyCode === 27; } if (isEscape && document.body.classList.contains('modal-active')) { this.toggleModal(); } }; this.modalDiv = modalDiv; return modalDiv; } } document.addEventListener('DOMContentLoaded', function () { });