Skip to content

Commit 63ba1ea

Browse files
authored
Merge pull request #755 from TechnologyEnhancedLearning/Updated-NHS-design-System
Updated nhs design system model version
2 parents a9c85bd + 2ff8277 commit 63ba1ea

File tree

4 files changed

+64
-8
lines changed

4 files changed

+64
-8
lines changed

LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@
125125
<PackageReference Include="Microsoft.Rest.ClientRuntime.Azure.Authentication" Version="2.4.1" />
126126
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="6.0.10" />
127127
<PackageReference Include="MK.IO" Version="1.5.0" />
128-
<PackageReference Include="NHSUKViewComponents.Web" Version="1.0.24" />
128+
<PackageReference Include="NHSUKViewComponents.Web" Version="1.0.25" />
129129
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
130130
<PrivateAssets>all</PrivateAssets>
131131
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>

LearningHub.Nhs.WebUI/Views/Shared/Components/DateInput/Default.cshtml

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,13 @@
5454
id="@Model.DayId"
5555
name="@Model.DayId"
5656
value="@Model.DayValue"
57-
type="number"
57+
type="text"
5858
pattern="[0-9]*"
5959
min="1"
6060
max="31"
6161
step="1"
62-
inputmode="numeric" />
62+
inputmode="numeric"
63+
aria-describedby="date-error" aria-invalid="false" />
6364
</div>
6465
</div>
6566
<div class="nhsuk-date-input__item">
@@ -69,12 +70,13 @@
6970
id="@Model.MonthId"
7071
name="@Model.MonthId"
7172
value="@Model.MonthValue"
72-
type="number"
73+
type="text"
7374
pattern="[0-9]*"
7475
min="1"
7576
max="12"
7677
step="1"
77-
inputmode="numeric" />
78+
inputmode="numeric"
79+
aria-describedby="date-error" aria-invalid="false" />
7880
</div>
7981
</div>
8082
<div class="nhsuk-date-input__item">
@@ -84,14 +86,50 @@
8486
id="@Model.YearId"
8587
name="@Model.YearId"
8688
value="@Model.YearValue"
87-
type="number"
89+
type="text"
8890
pattern="[0-9]*"
8991
min="1900"
9092
max="9999"
9193
step="1"
92-
inputmode="numeric" />
94+
inputmode="numeric"
95+
aria-describedby="date-error" aria-invalid="false" />
9396
</div>
9497
</div>
98+
<span id="date-error" class="error-message--margin-bottom-1 nhsuk-error-message" aria-live="polite" style="visibility: hidden;">
99+
</span>
95100
</div>
96101
</fieldset>
102+
<script>
103+
const fields = [@Model.DayId, @Model.MonthId, @Model.YearId];
104+
105+
const errorElement = document.getElementById('date-error');
106+
for (let field of fields) {
107+
const inputElement = document.getElementById(field.id);
108+
109+
inputElement.addEventListener('input', function (event) {
110+
111+
if (event.inputType === 'deleteContentBackward') {
112+
return;
113+
}
114+
115+
const value = event.data;
116+
const min = parseInt(inputElement.getAttribute('min'));
117+
const max = parseInt(inputElement.getAttribute('max'));
118+
119+
inputElement.setAttribute('aria-invalid', 'false');
120+
errorElement.textContent = '';
121+
errorElement.style.visibility = 'hidden';
122+
123+
setTimeout(function () {
124+
if (value < 1 || value > max || !value.match(/^[0-9]*$/)) {
125+
inputElement.value = inputElement.value.slice(0, -1) + 1;
126+
inputElement.value = inputElement.value.slice(0, -1);
127+
inputElement.setAttribute('aria-invalid', 'true');
128+
errorElement.textContent = `Invalid input. Please enter a number between ${min} and ${max}.`;
129+
errorElement.style.visibility = 'visible';
130+
}
131+
}, 0);
132+
});
133+
}
134+
</script>
97135
</div>

LearningHub.Nhs.WebUI/Views/Shared/Components/ErrorSummary/Default.cshtml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
</ul>
2222
</div>
2323
</div>
24+
<script>
25+
const errorSummary = document.querySelector("#error-summary-title").parentElement;
26+
errorSummary.focus();
27+
</script>
2428
}
2529
else
2630
{

LearningHub.Nhs.WebUI/Views/Shared/Components/RadioList/Default.cshtml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444

4545
@if (Model.Required && !Model.HasError)
4646
{
47-
<div data-valmsg-for="@Model.AspFor" data-valmsg-replace="true" class="error-message--margin-bottom-1 nhsuk-error-message field-validation-valid nhsuk-u-padding-top-1 nhsuk-u-padding-bottom-3">
47+
<div data-valmsg-for="@Model.AspFor" data-valmsg-replace="true" class="error-message--margin-bottom-1 nhsuk-error-message field-validation-valid nhsuk-u-padding-top-1 nhsuk-u-padding-bottom-3" aria-live="assertive" role="alert">
4848
</div>
4949
}
5050

@@ -131,5 +131,19 @@
131131

132132
</div>
133133
</fieldset>
134+
<script>
135+
window.onload = function() {
136+
const id = "@Model.AspFor";
137+
const radioForm = document.querySelector("main form[novalidate='novalidate']");
138+
radioForm.addEventListener("submit", () => {
139+
const errorMessageParent = document.querySelector("div[data-valmsg-for='" + id + "']");
140+
const errorMessage = errorMessageParent.innerHTML;
141+
errorMessageParent.innerHTML = "";
134142
143+
setTimeout(function () {
144+
errorMessageParent.innerHTML = errorMessage;
145+
}, 0);
146+
});
147+
};
148+
</script>
135149
</div>

0 commit comments

Comments
 (0)