From 98781a76e6854d6149390809aa3f56ee445bfffb Mon Sep 17 00:00:00 2001 From: Dave Date: Thu, 19 Mar 2026 14:39:30 -0400 Subject: [PATCH] Localstack Email Viewer --- _reference/localEmailViewer/index.js | 47 +++++++++++++--------------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/_reference/localEmailViewer/index.js b/_reference/localEmailViewer/index.js index 4106d2903..15b7736a9 100644 --- a/_reference/localEmailViewer/index.js +++ b/_reference/localEmailViewer/index.js @@ -468,32 +468,6 @@ function clientApp(config) { renderList(); }); - el.list.addEventListener( - "toggle", - (event) => { - const details = event.target; - - if (!(details instanceof HTMLDetailsElement) || !details.matches(".card")) { - return; - } - - const id = details.dataset.id; - - if (!id) { - return; - } - - if (details.open) { - state.openIds.add(id); - } else { - state.openIds.delete(id); - } - - hydrate(details, getMessage(id)); - }, - true - ); - el.list.addEventListener("click", async (event) => { const button = event.target.closest("button[data-action]"); @@ -749,9 +723,30 @@ function clientApp(config) { el.empty.hidden = true; el.list.innerHTML = state.filtered.map(renderCard).join(""); + bindCardToggles(); el.list.querySelectorAll(".card[open]").forEach((details) => hydrate(details, getMessage(details.dataset.id))); } + function bindCardToggles() { + el.list.querySelectorAll(".card").forEach((details) => { + details.addEventListener("toggle", () => { + const id = details.dataset.id; + + if (!id) { + return; + } + + if (details.open) { + state.openIds.add(id); + } else { + state.openIds.delete(id); + } + + hydrate(details, getMessage(id)); + }); + }); + } + function renderCard(message) { const open = state.openIds.has(message.id); const view = state.views[message.id] || (message.hasHtml ? "rendered" : "text");