28 lines
765 B
JavaScript
28 lines
765 B
JavaScript
export function initModal() {
|
|
const modals = document.querySelectorAll('[data-component="modal"]');
|
|
modals.forEach((modal) => {
|
|
modal.addEventListener('click', (event) => {
|
|
const target = event.target;
|
|
if (!(target instanceof HTMLElement)) {
|
|
return;
|
|
}
|
|
if (target.dataset.action === 'modal-close') {
|
|
modal.setAttribute('hidden', 'hidden');
|
|
}
|
|
});
|
|
});
|
|
|
|
document.querySelectorAll('[data-action="modal-open"]').forEach((trigger) => {
|
|
trigger.addEventListener('click', () => {
|
|
const id = trigger.getAttribute('data-target');
|
|
if (!id) {
|
|
return;
|
|
}
|
|
const modal = document.getElementById(id);
|
|
if (modal) {
|
|
modal.removeAttribute('hidden');
|
|
}
|
|
});
|
|
});
|
|
}
|