Skip to content

Commit 4ed20a7

Browse files
nayijmokhld
andauthored
Fix (NO-TICKET): Disable continue button during file-upload (#731)
* Disable continue button * test: ensure file upload disables continue button * chore: add HTMLButtonElement type for continue button --------- Co-authored-by: Mohammed Khalid <emailmokhld@gmail.com>
1 parent 4e8c3ee commit 4ed20a7

2 files changed

Lines changed: 17 additions & 0 deletions

File tree

src/client/javascripts/file-upload.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,12 +234,14 @@ function pollUploadStatus(uploadId) {
234234
* @param {HTMLFormElement} formElement - The form element
235235
* @param {HTMLInputElement} fileInput - The file input element
236236
* @param {HTMLButtonElement} uploadButton - The upload button
237+
* @param {HTMLButtonElement} continueButton - The continue button
237238
* @param {File | null} selectedFile - The selected file
238239
*/
239240
function handleStandardFormSubmission(
240241
formElement,
241242
fileInput,
242243
uploadButton,
244+
continueButton,
243245
selectedFile
244246
) {
245247
renderSummary(selectedFile, 'Uploading…', formElement)
@@ -249,6 +251,7 @@ function handleStandardFormSubmission(
249251
setTimeout(() => {
250252
fileInput.disabled = true
251253
uploadButton.disabled = true
254+
continueButton.disabled = true
252255
}, 100)
253256
}
254257

@@ -317,6 +320,13 @@ export function initFileUpload() {
317320
const fileInput = form ? form.querySelector('input[type="file"]') : null
318321
/** @type {HTMLButtonElement | null} */
319322
const uploadButton = form ? form.querySelector('.upload-file-button') : null
323+
const continueButton =
324+
/** @type {HTMLButtonElement} */ (
325+
Array.from(document.querySelectorAll('button.govuk-button')).find(
326+
(button) => button.textContent?.trim() === 'Continue'
327+
)
328+
) ?? null
329+
320330
const errorSummary = document.querySelector('.govuk-error-summary-container')
321331

322332
if (!form || !fileInput || !uploadButton) {
@@ -360,6 +370,7 @@ export function initFileUpload() {
360370
formElement,
361371
fileInput,
362372
uploadButton,
373+
continueButton,
363374
selectedFile
364375
)
365376

test/client/javascripts/file-upload.test.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,11 @@ describe('File Upload Client JS', () => {
352352
/** @type {HTMLButtonElement | null} */
353353
const button = document.querySelector('.upload-file-button')
354354
expect(button?.disabled).toBeFalsy()
355+
/** @type {HTMLButtonElement | null} */
356+
const continueButton = document.querySelector(
357+
'button.govuk-button:not(.govuk-button--secondary)'
358+
)
359+
expect(continueButton?.disabled).toBeFalsy()
355360

356361
loadFile()
357362
triggerChange()
@@ -361,6 +366,7 @@ describe('File Upload Client JS', () => {
361366

362367
expect(input.disabled).toBeTruthy()
363368
expect(button?.disabled).toBeTruthy()
369+
expect(continueButton?.disabled).toBeTruthy()
364370
})
365371

366372
test('sets focus on file input after upload begins', () => {

0 commit comments

Comments
 (0)