Skip to content

Commit 3cc0e65

Browse files
Merge pull request #8095 from espoon-voltti/screen-read-application-errors
Ruudunlukija lukee hakemuksen tarkistuksen virheet
2 parents 8a279fa + 75d3417 commit 3cc0e65

File tree

5 files changed

+18
-0
lines changed

5 files changed

+18
-0
lines changed

frontend/src/citizen-frontend/applications/editor/ApplicationEditor.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ export type ApplicationFormProps = {
7878
) => void
7979
errors: ApplicationFormDataErrors
8080
verificationRequested: boolean
81+
alertTrigger: number
8182
isInvalidDate: ((localDate: LocalDate) => string | null) | undefined
8283
minDate: LocalDate
8384
maxDate: LocalDate
@@ -161,6 +162,7 @@ const ApplicationEditorContent = React.memo(function DaycareApplicationEditor({
161162
useState<boolean>(false)
162163
const [verifying, setVerifying] = useState<boolean>(false)
163164
const [verified, setVerified] = useState<boolean>(false)
165+
const [verificationCount, setVerificationCount] = useState<number>(0)
164166
const [allowOtherGuardianAccess, setAllowOtherGuardianAccess] =
165167
useState<boolean>(application.allowOtherGuardianAccess)
166168

@@ -216,6 +218,7 @@ const ApplicationEditorContent = React.memo(function DaycareApplicationEditor({
216218
const onVerify = () => {
217219
setErrors(validateApplication(application, formData, terms))
218220
setVerificationRequested(true)
221+
setVerificationCount((prev) => prev + 1)
219222

220223
if (!applicationHasErrors(errors)) {
221224
setVerified(false)
@@ -328,6 +331,7 @@ const ApplicationEditorContent = React.memo(function DaycareApplicationEditor({
328331
setFormData={setFormData}
329332
errors={errors}
330333
verificationRequested={verificationRequested}
334+
alertTrigger={verificationCount}
331335
isInvalidDate={isInvalidDate}
332336
minDate={minDate}
333337
maxDate={maxDate}
@@ -341,6 +345,7 @@ const ApplicationEditorContent = React.memo(function DaycareApplicationEditor({
341345
setFormData={setFormData}
342346
errors={errors}
343347
verificationRequested={verificationRequested}
348+
alertTrigger={verificationCount}
344349
terms={terms}
345350
isInvalidDate={isInvalidDate}
346351
minDate={minDate}
@@ -355,6 +360,7 @@ const ApplicationEditorContent = React.memo(function DaycareApplicationEditor({
355360
setFormData={setFormData}
356361
errors={errors}
357362
verificationRequested={verificationRequested}
363+
alertTrigger={verificationCount}
358364
terms={terms}
359365
isInvalidDate={isInvalidDate}
360366
minDate={minDate}

frontend/src/citizen-frontend/applications/editor/ApplicationFormClub.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export default React.memo(function ApplicationFormClub({
1919
setFormData,
2020
errors,
2121
verificationRequested,
22+
alertTrigger,
2223
isInvalidDate,
2324
minDate,
2425
maxDate,
@@ -34,6 +35,7 @@ export default React.memo(function ApplicationFormClub({
3435
firstName={application.form.child.person.firstName}
3536
lastName={application.form.child.person.lastName}
3637
errors={verificationRequested ? errors : undefined}
38+
alertTrigger={alertTrigger}
3739
/>
3840

3941
<ServiceNeedSection

frontend/src/citizen-frontend/applications/editor/ApplicationFormDaycare.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export default React.memo(function ApplicationFormDaycare({
2525
setFormData,
2626
errors,
2727
verificationRequested,
28+
alertTrigger,
2829
isInvalidDate,
2930
minDate,
3031
maxDate
@@ -59,6 +60,7 @@ export default React.memo(function ApplicationFormDaycare({
5960
firstName={application.form.child.person.firstName}
6061
lastName={application.form.child.person.lastName}
6162
errors={verificationRequested ? errors : undefined}
63+
alertTrigger={alertTrigger}
6264
/>
6365

6466
<ServiceNeedSection

frontend/src/citizen-frontend/applications/editor/ApplicationFormPreschool.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export default React.memo(function ApplicationFormPreschool({
2525
setFormData,
2626
errors,
2727
verificationRequested,
28+
alertTrigger,
2829
isInvalidDate,
2930
minDate,
3031
maxDate,
@@ -66,6 +67,7 @@ export default React.memo(function ApplicationFormPreschool({
6667
firstName={application.form.child.person.firstName}
6768
lastName={application.form.child.person.lastName}
6869
errors={verificationRequested ? errors : undefined}
70+
alertTrigger={alertTrigger}
6971
/>
7072

7173
<ServiceNeedSection

frontend/src/citizen-frontend/applications/editor/Heading.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,16 @@ type HeadingProps = {
2424
lastName: string
2525
errors?: ApplicationFormDataErrors
2626
transferApplication: boolean
27+
/**
28+
* Update this value to force re-rendering of the error box, causing screenreader to re-read the error summary.
29+
*/
30+
alertTrigger: number
2731
}
2832
export default React.memo(function Heading({
2933
type,
3034
errors,
3135
transferApplication,
36+
alertTrigger,
3237
...name
3338
}: HeadingProps) {
3439
const t = useTranslation()
@@ -49,6 +54,7 @@ export default React.memo(function Heading({
4954
<>
5055
<Gap size="s" />
5156
<AlertBox
57+
key={alertTrigger}
5258
message={
5359
<div>
5460
<span data-qa="application-has-errors-title">

0 commit comments

Comments
 (0)