From 3323ffd82edf903b7c0dc2bbbe8677621f55daa2 Mon Sep 17 00:00:00 2001 From: Victor Andersson Date: Sun, 9 Nov 2025 22:00:14 +0100 Subject: [PATCH] Use delegated handlers for edit panel --- claims/templates/claims/dashboard.html | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/claims/templates/claims/dashboard.html b/claims/templates/claims/dashboard.html index 28f471a..9363d62 100644 --- a/claims/templates/claims/dashboard.html +++ b/claims/templates/claims/dashboard.html @@ -435,7 +435,6 @@ document.addEventListener("DOMContentLoaded", () => { const filterButtons = Array.from(document.querySelectorAll("[data-filter-button]")); const cards = Array.from(document.querySelectorAll("[data-claim-card]")); const emptyState = document.querySelector("[data-claim-empty]"); - const editButtons = Array.from(document.querySelectorAll("[data-open-edit]")); const panels = Array.from(document.querySelectorAll("[data-edit-panel]")); const openPanel = (id) => { @@ -452,19 +451,26 @@ document.addEventListener("DOMContentLoaded", () => { panel.setAttribute("aria-hidden", "true"); }; - editButtons.forEach((button) => { - button.addEventListener("click", () => openPanel(button.dataset.openEdit)); - }); - - panels.forEach((panel) => { - panel.addEventListener("click", (event) => { + document.addEventListener("click", (event) => { + const openTrigger = event.target.closest("[data-open-edit]"); + if (openTrigger) { + event.preventDefault(); + openPanel(openTrigger.dataset.openEdit); + return; + } + const closeTrigger = event.target.closest("[data-close-edit]"); + if (closeTrigger) { + const panel = closeTrigger.closest("[data-edit-panel]"); + if (panel) { + closePanel(panel); + } + return; + } + panels.forEach((panel) => { if (event.target === panel) { closePanel(panel); } }); - panel.querySelectorAll("[data-close-edit]").forEach((btn) => { - btn.addEventListener("click", () => closePanel(panel)); - }); }); document.addEventListener("keydown", (event) => {