From 28a64a93d18bd9d55e1b6b720f2e587862476e0e Mon Sep 17 00:00:00 2001 From: Jon Seager Date: Sat, 7 Feb 2026 08:28:22 +0000 Subject: [PATCH] fix(ui): block native change events in searchable-select component Native change events from child inputs were bubbling up and reaching data-on:change handlers, which expect only the CustomEvent with evt.detail. Capture and stop native change events so only the component's own CustomEvent propagates. --- static/js/components/searchable-select.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/static/js/components/searchable-select.js b/static/js/components/searchable-select.js index d8ed7f7..a232caa 100644 --- a/static/js/components/searchable-select.js +++ b/static/js/components/searchable-select.js @@ -41,6 +41,12 @@ customElements.define("searchable-select", class extends HTMLElement { selectedWrap.appendChild(display); selectedWrap.appendChild(clear); + // Block native change events from child inputs so only our + // CustomEvent (which carries evt.detail) reaches data-on:change. + this.addEventListener("change", (e) => { + if (!(e instanceof CustomEvent)) e.stopImmediatePropagation(); + }, true); + this.textContent = ""; this.style.display = "block"; this.appendChild(hidden);