feat: guard to prevent premature form submissions while uploading

This commit is contained in:
Björn Fromme
2026-03-15 12:42:28 +01:00
parent 0652ca9f8b
commit 923e880056
11 changed files with 68 additions and 20 deletions
@@ -0,0 +1,40 @@
import { Controller } from '@hotwired/stimulus'
export default class extends Controller {
static targets = ['submit']
connect () {
this.uploading = false
this.boundOnUploading = this.onUploading.bind(this)
this.boundOnComplete = this.onComplete.bind(this)
window.addEventListener('dropzone:uploading', this.boundOnUploading)
window.addEventListener('dropzone:complete', this.boundOnComplete)
}
onUploading () {
this.uploading = true
this.submitTargets.forEach(button => {
button.disabled = true
})
}
onComplete () {
this.uploading = false
this.submitTargets.forEach(button => {
button.disabled = false
})
}
guard (event) {
if (this.uploading) {
event.preventDefault()
event.stopImmediatePropagation()
}
}
disconnect () {
window.removeEventListener('dropzone:uploading', this.boundOnUploading)
window.removeEventListener('dropzone:complete', this.boundOnComplete)
}
}
@@ -73,7 +73,7 @@ export default class extends Controller {
})
}
disconnect() {
disconnect () {
this.dropzone.destroy()
}
}