From 6f727b1f3d9fe8f19c2c71f212fe328c36a527af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=B8=D1=80=D0=B8=D0=BB=D0=BB=20=D0=91=D0=BB=D0=B8?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2?= Date: Fri, 29 May 2026 12:34:11 +0300 Subject: [PATCH] Fix file dialog double-open: add stopPropagation and reset input value --- backend/static/app.js | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/backend/static/app.js b/backend/static/app.js index 3842494..cbcdac7 100644 --- a/backend/static/app.js +++ b/backend/static/app.js @@ -73,17 +73,26 @@ class TranscriptionApp { const fileInput = document.getElementById('fileInput'); const browseLink = document.querySelector('.browse-link'); - // Click to browse - browseLink.addEventListener('click', () => fileInput.click()); - dropZone.addEventListener('click', (e) => { - if (e.target === dropZone || e.target.closest('.drop-zone-content')) { - fileInput.click(); - } + // Click on browse link (stop propagation to avoid double click) + browseLink.addEventListener('click', (e) => { + e.stopPropagation(); + fileInput.click(); }); - // File input change + // Click on drop zone (but not on the file input itself) + dropZone.addEventListener('click', (e) => { + if (e.target === fileInput) return; + fileInput.click(); + }); + + // File input change - reset value after handling fileInput.addEventListener('change', (e) => { - this.handleFiles(e.target.files); + const files = e.target.files; + if (files.length) { + this.handleFiles(files); + } + // Reset so the same file can be selected again + fileInput.value = ''; }); // Drag & drop