deploy
All checks were successful
Deploy / deploy-staging (push) Successful in 29s
Deploy / deploy-production (push) Has been skipped

This commit is contained in:
2026-06-27 23:59:21 +02:00
parent dad3e0a629
commit 2d46b05b1e
7 changed files with 209 additions and 41 deletions

View File

@@ -22,6 +22,54 @@
};
const bindInteractions = (host, loadRoute) => {
host.querySelectorAll('[data-aa-open-modal]').forEach((button) => {
if (button.dataset.aaBound === '1') {
return;
}
button.dataset.aaBound = '1';
button.addEventListener('click', () => {
const modalId = button.getAttribute('data-aa-open-modal') || '';
const modal = host.querySelector(`[data-aa-modal="${CSS.escape(modalId)}"]`);
if (modal instanceof HTMLDialogElement) {
modal.showModal();
}
});
});
host.querySelectorAll('[data-aa-close-modal]').forEach((button) => {
if (button.dataset.aaBound === '1') {
return;
}
button.dataset.aaBound = '1';
button.addEventListener('click', () => {
const modal = button.closest('dialog');
if (modal instanceof HTMLDialogElement) {
modal.close();
}
});
});
host.querySelectorAll('dialog[data-aa-modal]').forEach((dialog) => {
if (dialog.dataset.aaBound === '1') {
return;
}
dialog.dataset.aaBound = '1';
dialog.addEventListener('click', (event) => {
const rect = dialog.getBoundingClientRect();
const inside = event.clientX >= rect.left
&& event.clientX <= rect.right
&& event.clientY >= rect.top
&& event.clientY <= rect.bottom;
if (!inside) {
dialog.close();
}
});
});
host.querySelectorAll('a[href]').forEach((link) => {
if (link.dataset.aaBound === '1') {
return;
@@ -66,6 +114,11 @@
throw new Error(`HTTP ${response.status}`);
}
const modal = form.closest('dialog');
if (modal instanceof HTMLDialogElement) {
modal.close();
}
host.innerHTML = html;
bindInteractions(host, loadRoute);
} catch (error) {