This project provides a custom Thymeleaf dialect to simplify the creation and customization of GOV.UK-styled buttons. Using this custom dialect, developers can generate button HTML elements with the GOV.UK Design System's standards, reducing repetitive boilerplate code and ensuring consistency.
To use this custom Thymeleaf dialect, add the following dependency to your build.gradle
file:
implementation 'uk.gov.laa.ccms.springboot:laa-ccms-spring-boot-starter-govuk-dialect'
Writing GOV.UK-styled buttons often involves verbose and repetitive HTML, especially when handling attributes like class
, id
, data-*
, or conditional rendering logic. With this custom dialect, you can declare buttons using clean, concise tags like:
<govuk:button th:text="'Click Me!'" href="'/path'" id="'button-id'" classes="'custom-class'"/>
This simplifies templates and improves readability, making it easier for developers to focus on application logic rather than markup details.
This dialect dynamically processes attributes like th:*
, resolving them using Thymeleaf's expression language. For example:
<govuk:button th:text="${buttonText}" th:href="${link}"/>
This ensures that all attributes, including conditional and computed values, are rendered dynamically at runtime.
- Anchor and Button Elements: Supports both
<a>
and<button>
elements based on the presence of anhref
attribute. - Dynamic Class Names: Automatically includes the default
govuk-button
class and allows additional classes via theclasses
attribute. - Accessibility: Includes
aria-disabled
and other accessibility attributes for disabled buttons. - Custom Attributes: Supports GOV.UK-specific attributes like
data-module
anddata-prevent-double-click
.
- Thymeleaf 3.x
- Spring Boot (for integration)
<!DOCTYPE html>
<html xmlns:govuk="http://www.gov.uk">
<body>
<govuk:button th:text="'Click Me!'" href="'/test'" id="'button-id'" classes="'custom-class'"/>
</body>
</html>
The DetailsElementTagProcessor
is a custom Thymeleaf tag processor that enables the use of a <govuk:details>
tag to generate a <details>
HTML element styled with the GOV.UK Design System classes.
- Generates a
<details>
element with thegovuk-details
class. - Includes a
<summary>
element with a customizable summary text. - Includes a
<div>
element for detailed content.
To use this processor, define a govuk:details
tag in your Thymeleaf templates and provide the following attributes:
summaryText
: The text displayed in the summary section of the<details>
element.text
: The content displayed inside the<div>
when the details are expanded.
<govuk:details summaryText="Click to view details" text="This is the detailed content."></govuk:details>