From cee784817fde6e0badf295b89e5e2a1e2fd555d0 Mon Sep 17 00:00:00 2001 From: Owen Jones Date: Fri, 4 Oct 2024 15:40:49 +0100 Subject: [PATCH] click label instead of input --- .../govuk/components/file-upload/file-upload.mjs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/govuk-frontend/src/govuk/components/file-upload/file-upload.mjs b/packages/govuk-frontend/src/govuk/components/file-upload/file-upload.mjs index 00076df49b..ff19fa83a6 100644 --- a/packages/govuk-frontend/src/govuk/components/file-upload/file-upload.mjs +++ b/packages/govuk-frontend/src/govuk/components/file-upload/file-upload.mjs @@ -75,6 +75,15 @@ export class FileUpload extends GOVUKFrontendComponent { locale: closestAttributeValue($input, 'lang') }) + this.$label = document.querySelector(`[for="${$input.id}"]`) + + if (!this.$label) { + throw new ElementError({ + componentName: 'File upload', + identifier: 'No label' + }) + } + $input.addEventListener('change', this.onChange.bind(this)) this.$input = $input @@ -148,7 +157,9 @@ export class FileUpload extends GOVUKFrontendComponent { * When the button is clicked, emulate clicking the actual, hidden file input */ onClick() { - this.$input.click() + if (this.$label instanceof HTMLElement) { + this.$label.click() + } } /**