From 56077a9844933e7452b9318fbe1286cd0286c31b Mon Sep 17 00:00:00 2001 From: Matt Shaw Date: Wed, 5 Mar 2025 11:59:08 +0000 Subject: [PATCH 1/8] upgrade test requirements --- requirements-test-3.10.txt | 2 +- requirements-test-3.11.txt | 2 +- requirements-test-3.12.txt | 2 +- requirements-test-3.13.txt | 2 +- requirements-test-3.9.txt | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/requirements-test-3.10.txt b/requirements-test-3.10.txt index 4f6d980..e0aa4a4 100644 --- a/requirements-test-3.10.txt +++ b/requirements-test-3.10.txt @@ -8,7 +8,7 @@ blinker==1.9.0 # via flask click==8.1.8 # via flask -flake8==7.1.1 +flake8==7.1.2 # via -r requirements-test.in flask==3.1.0 # via -r requirements-test.in diff --git a/requirements-test-3.11.txt b/requirements-test-3.11.txt index 532aace..6d8f5a4 100644 --- a/requirements-test-3.11.txt +++ b/requirements-test-3.11.txt @@ -8,7 +8,7 @@ blinker==1.9.0 # via flask click==8.1.8 # via flask -flake8==7.1.1 +flake8==7.1.2 # via -r requirements-test.in flask==3.1.0 # via -r requirements-test.in diff --git a/requirements-test-3.12.txt b/requirements-test-3.12.txt index 9a4fbf6..d94f91a 100644 --- a/requirements-test-3.12.txt +++ b/requirements-test-3.12.txt @@ -8,7 +8,7 @@ blinker==1.9.0 # via flask click==8.1.8 # via flask -flake8==7.1.1 +flake8==7.1.2 # via -r requirements-test.in flask==3.1.0 # via -r requirements-test.in diff --git a/requirements-test-3.13.txt b/requirements-test-3.13.txt index fe5763a..5ce231c 100644 --- a/requirements-test-3.13.txt +++ b/requirements-test-3.13.txt @@ -8,7 +8,7 @@ blinker==1.9.0 # via flask click==8.1.8 # via flask -flake8==7.1.1 +flake8==7.1.2 # via -r requirements-test.in flask==3.1.0 # via -r requirements-test.in diff --git a/requirements-test-3.9.txt b/requirements-test-3.9.txt index 9b72c85..fff9f35 100644 --- a/requirements-test-3.9.txt +++ b/requirements-test-3.9.txt @@ -8,11 +8,11 @@ blinker==1.9.0 # via flask click==8.1.8 # via flask -flake8==7.1.1 +flake8==7.1.2 # via -r requirements-test.in flask==3.1.0 # via -r requirements-test.in -importlib-metadata==8.5.0 +importlib-metadata==8.6.1 # via flask itsdangerous==2.2.0 # via flask From de1685278d1f74417f1a58e31ffa0bf7adab59fa Mon Sep 17 00:00:00 2001 From: Matt Shaw Date: Wed, 5 Mar 2025 13:19:12 +0000 Subject: [PATCH 2/8] govuk 5.9.0 --- .github/workflows/python-package.yml | 2 +- README.md | 2 +- tests/utils/test-entrypoint.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 25e816b..d895229 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -45,4 +45,4 @@ jobs: run: | (cd tests/utils && nohup python -m flask run --port 3000 &) wait-for-it localhost:3000 - ./govuk-frontend-diff http://localhost:3000 --govuk-frontend-version=v5.8.0 --exclude page-template --ci + ./govuk-frontend-diff http://localhost:3000 --govuk-frontend-version=v5.9.0 --exclude page-template --ci diff --git a/README.md b/README.md index 0eeec5a..519f1be 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # GOV.UK Frontend Jinja Macros [![PyPI version](https://badge.fury.io/py/govuk-frontend-jinja.svg)](https://pypi.org/project/govuk-frontend-jinja/) -![govuk-frontend 5.8.0](https://img.shields.io/badge/govuk--frontend%20version-5.8.0-005EA5?logo=gov.uk&style=flat) +![govuk-frontend 5.9.0](https://img.shields.io/badge/govuk--frontend%20version-5.9.0-005EA5?logo=gov.uk&style=flat) [![Python package](https://github.com/LandRegistry/govuk-frontend-jinja/actions/workflows/python-package.yml/badge.svg)](https://github.com/LandRegistry/govuk-frontend-jinja/actions/workflows/python-package.yml) **GOV.UK Frontend Jinja is a [community tool](https://design-system.service.gov.uk/community/resources-and-tools/) of the [GOV.UK Design System](https://design-system.service.gov.uk/). The Design System team is not responsible for it and cannot support you with using it. Contact the [maintainers](#contributors) directly if you need [help](#support) or you want to request a feature.** diff --git a/tests/utils/test-entrypoint.sh b/tests/utils/test-entrypoint.sh index ee9c91c..643c4ac 100755 --- a/tests/utils/test-entrypoint.sh +++ b/tests/utils/test-entrypoint.sh @@ -5,4 +5,4 @@ set -e flake8 . (cd tests/utils && nohup python -m flask run --port 3000 &) wait-for-it localhost:3000 -./govuk-frontend-diff http://localhost:3000 --govuk-frontend-version=v5.8.0 --exclude page-template --ci +./govuk-frontend-diff http://localhost:3000 --govuk-frontend-version=v5.9.0 --exclude page-template --ci From a01209766b708244c2622e391be2e1d5b20b95cf Mon Sep 17 00:00:00 2001 From: Matt Shaw Date: Wed, 5 Mar 2025 13:19:20 +0000 Subject: [PATCH 3/8] python 3.13 --- tests/utils/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/utils/Dockerfile b/tests/utils/Dockerfile index 952cb75..e02636e 100644 --- a/tests/utils/Dockerfile +++ b/tests/utils/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.12 +FROM python:3.13-slim WORKDIR /src @@ -7,8 +7,8 @@ RUN apt-get install -y wait-for-it RUN curl -L https://github.com/matthew-shaw/govuk-frontend-diff/releases/download/v2.0.0/govuk-frontend-diff-linux --output govuk-frontend-diff && \ chmod +x ./govuk-frontend-diff -ADD requirements-test-3.12.txt . -RUN pip3 install -r requirements-test-3.12.txt +ADD requirements-test-3.13.txt . +RUN pip3 install -r requirements-test-3.13.txt ADD tests/utils tests/utils ADD setup.cfg . From d7d5eeaf9bf13b836e573d7d9109761e679eaef5 Mon Sep 17 00:00:00 2001 From: Matt Shaw Date: Wed, 5 Mar 2025 13:38:51 +0000 Subject: [PATCH 4/8] full fat container --- tests/utils/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils/Dockerfile b/tests/utils/Dockerfile index e02636e..f6f420e 100644 --- a/tests/utils/Dockerfile +++ b/tests/utils/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.13-slim +FROM python:3.13 WORKDIR /src From 1298585fafe4e5398c04a068a64aff25215fad55 Mon Sep 17 00:00:00 2001 From: Matt Shaw Date: Wed, 5 Mar 2025 13:56:04 +0000 Subject: [PATCH 5/8] bump version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index a0acccf..9a1522d 100644 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ setuptools.setup( name="govuk-frontend-jinja", - version="3.4.1", + version="3.5.0", author="Matt Shaw", author_email="matthew.shaw@landregistry.gov.uk", description="GOV.UK Frontend Jinja Macros", From 45849744d2bf058937402f291e4a2c7a44eb7e23 Mon Sep 17 00:00:00 2001 From: Matt Shaw Date: Wed, 5 Mar 2025 14:21:27 +0000 Subject: [PATCH 6/8] govuk-frontend 5.9.0 --- .../components/character-count/macro.html | 9 ++-- .../components/file-upload/macro.html | 47 +++++++++++++++++-- .../templates/components/input/macro.html | 9 ++-- .../components/password-input/macro.html | 6 ++- .../templates/components/select/macro.html | 18 +++---- .../templates/components/textarea/macro.html | 10 ++-- 6 files changed, 72 insertions(+), 27 deletions(-) diff --git a/govuk_frontend_jinja/templates/components/character-count/macro.html b/govuk_frontend_jinja/templates/components/character-count/macro.html index e58f590..44d8d10 100644 --- a/govuk_frontend_jinja/templates/components/character-count/macro.html +++ b/govuk_frontend_jinja/templates/components/character-count/macro.html @@ -13,11 +13,12 @@ {%- set textareaDescriptionLength = params.maxwords or params.maxlength -%} {%- set textareaDescriptionText = params.textareaDescriptionText or 'You can enter up to %{count} ' ~ ('words' if params.maxwords else 'characters') -%} {%- set textareaDescriptionTextNoLimit = textareaDescriptionText | replace('%{count}', textareaDescriptionLength) if not hasNoLimit -%} +{%- set id = params.id if params.id else params.name -%} {%- set countMessageHtml %} {{ govukHint({ 'text': textareaDescriptionTextNoLimit, - 'id': params.id ~ '-info', + 'id': id ~ '-info', 'classes': 'govuk-character-count__message' ~ (' ' ~ params.countMessage.classes if params.countMessage and params.countMessage.classes) }) | trim }} {% if params.formGroup and params.formGroup.afterInput %} @@ -94,9 +95,9 @@ {%- endif -%} {{ govukTextarea({ - 'id': params.id, + 'id': id, 'name': params.name, - 'describedBy': params.id ~ '-info', + 'describedBy': id ~ '-info', 'rows': params.rows, 'spellcheck': params.spellcheck, 'value': params.value, @@ -115,7 +116,7 @@ 'classes': params.label.classes, 'isPageHeading': params.label.isPageHeading, 'attributes': params.label.attributes, - 'for': params.id + 'for': id }, 'hint': params.hint, 'errorMessage': params.errorMessage, diff --git a/govuk_frontend_jinja/templates/components/file-upload/macro.html b/govuk_frontend_jinja/templates/components/file-upload/macro.html index 07cc163..9bf91bf 100644 --- a/govuk_frontend_jinja/templates/components/file-upload/macro.html +++ b/govuk_frontend_jinja/templates/components/file-upload/macro.html @@ -1,12 +1,15 @@ {% macro govukFileUpload(params) %} {% from "govuk_frontend_jinja/macros/attributes.html" import govukAttributes %} +{% from "govuk_frontend_jinja/macros/i18n.html" import govukI18nAttributes %} {% from "govuk_frontend_jinja/components/error-message/macro.html" import govukErrorMessage %} {% from "govuk_frontend_jinja/components/hint/macro.html" import govukHint %} {% from "govuk_frontend_jinja/components/label/macro.html" import govukLabel %} {#- a record of other elements that we need to associate with the input using aria-describedby – for example hints or error messages -#} -{% set describedBy = params.describedBy if params.describedBy else "" %} +{%- set describedBy = params.describedBy if params.describedBy else "" -%} +{%- set id = params.id if params.id else params.name -%} +
{{ govukLabel({ @@ -15,10 +18,10 @@ 'classes': params.label.classes, 'isPageHeading': params.label.isPageHeading, 'attributes': params.label.attributes, - 'for': params.id + 'for': id }) | trim | indent(2) }} {% if params.hint %} - {% set hintId = params.id ~ '-hint' %} + {% set hintId = id ~ '-hint' %} {% set describedBy = describedBy ~ ' ' ~ hintId if describedBy else hintId %} {{ govukHint({ 'id': hintId, @@ -29,7 +32,7 @@ }) | trim | indent(2) }} {% endif %} {% if params.errorMessage %} - {% set errorId = params.id ~ '-error' %} + {% set errorId = id ~ '-error' %} {% set describedBy = describedBy ~ ' ' ~ errorId if describedBy else errorId %} {{ govukErrorMessage({ 'id': errorId, @@ -43,11 +46,45 @@ {% if params.formGroup and params.formGroup.beforeInput %} {{ params.formGroup.beforeInput.html | safe | trim | indent(2) if params.formGroup and params.formGroup.beforeInput.html else params.formGroup.beforeInput.text }} {% endif %} - +{% endif %} + +{% if params.javascript %} +
+{% endif %} {% if params.formGroup and params.formGroup.afterInput %} {{ params.formGroup.afterInput.html | safe | trim | indent(2) if params.formGroup and params.formGroup.afterInput.html else params.formGroup.afterInput.text }} {% endif %} diff --git a/govuk_frontend_jinja/templates/components/input/macro.html b/govuk_frontend_jinja/templates/components/input/macro.html index afd8194..cbf4270 100644 --- a/govuk_frontend_jinja/templates/components/input/macro.html +++ b/govuk_frontend_jinja/templates/components/input/macro.html @@ -18,6 +18,7 @@ {#- a record of other elements that we need to associate with the input using aria-describedby – for example hints or error messages -#} {% set describedBy = params.describedBy if params.describedBy else undefined -%} +{%- set id = params.id if params.id else params.name -%} {%- set hasPrefix = true if params.prefix and (params.prefix.text or params.prefix.html) else false %} {%- set hasSuffix = true if params.suffix and (params.suffix.text or params.suffix.html) else false %} @@ -28,7 +29,7 @@ {{ govukLabel({ @@ -15,10 +17,10 @@ 'classes': params.label.classes, 'isPageHeading': params.label.isPageHeading, 'attributes': params.label.attributes, - 'for': params.id + 'for': id }) | trim | indent(2) }} {% if params.hint %} - {% set hintId = params.id ~ '-hint' %} + {% set hintId = id ~ '-hint' %} {% set describedBy = describedBy ~ ' ' ~ hintId if describedBy else hintId %} {{ govukHint({ 'id': hintId, @@ -29,7 +31,7 @@ }) | trim | indent(2) }} {% endif %} {% if params.errorMessage %} - {% set errorId = params.id ~ '-error' %} + {% set errorId = id ~ '-error' %} {% set describedBy = describedBy ~ ' ' ~ errorId if describedBy else errorId %} {{ govukErrorMessage({ 'id': errorId, @@ -44,13 +46,13 @@ {{ params.formGroup.beforeInput.html | safe | trim | indent(2) if params.formGroup and params.formGroup.beforeInput.html else params.formGroup.beforeInput.text }} {% endif %} {% if params.formGroup and params.formGroup.afterInput %} {{ params.formGroup.afterInput.html | safe | trim | indent(2) if params.formGroup and params.formGroup.afterInput.html else params.formGroup.afterInput.text }} diff --git a/govuk_frontend_jinja/templates/components/textarea/macro.html b/govuk_frontend_jinja/templates/components/textarea/macro.html index 39f7a0f..3746338 100644 --- a/govuk_frontend_jinja/templates/components/textarea/macro.html +++ b/govuk_frontend_jinja/templates/components/textarea/macro.html @@ -7,6 +7,8 @@ {#- a record of other elements that we need to associate with the input using aria-describedby – for example hints or error messages -#} {% set describedBy = params.describedBy if params.describedBy else "" %} +{%- set id = params.id if params.id else params.name -%} +
{{ govukLabel({ @@ -15,10 +17,10 @@ 'classes': params.label.classes, 'isPageHeading': params.label.isPageHeading, 'attributes': params.label.attributes, - 'for': params.id + 'for': id }) | trim | indent(2) }} {% if params.hint %} - {% set hintId = params.id ~ '-hint' %} + {% set hintId = id ~ '-hint' %} {% set describedBy = describedBy ~ ' ' ~ hintId if describedBy else hintId %} {{ govukHint({ 'id': hintId, @@ -29,7 +31,7 @@ }) | trim | indent(2) }} {% endif %} {% if params.errorMessage %} - {% set errorId = params.id ~ '-error' %} + {% set errorId = id ~ '-error' %} {% set describedBy = describedBy ~ ' ' ~ errorId if describedBy else errorId %} {{ govukErrorMessage({ 'id': errorId, @@ -43,7 +45,7 @@ {% if params.formGroup and params.formGroup.beforeInput %} {{ params.formGroup.beforeInput.html | safe | trim | indent(2) if params.formGroup and params.formGroup.beforeInput.html else params.formGroup.beforeInput.text }} {% endif %} -