Skip to content

Commit 9931934

Browse files
authored
Merge pull request #713 from Opetushallitus/feature/OPHYKIKEH-218-new
YKI:VKT:AKR(Frontend): OPHYKIKEH-218 Improve stepper accessibility
2 parents ccec250 + e816f16 commit 9931934

File tree

22 files changed

+208
-90
lines changed

22 files changed

+208
-90
lines changed

frontend/packages/akr/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@
2222
"akr:tslint": "yarn g:tsc --pretty --noEmit"
2323
},
2424
"dependencies": {
25-
"shared": "npm:@opetushallitus/[email protected].1"
25+
"shared": "npm:@opetushallitus/[email protected].2"
2626
}
2727
}

frontend/packages/akr/public/i18n/en-GB/translation.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@
196196
"steps": {
197197
"active": "Active",
198198
"completed": "Completed",
199+
"ariaLabel": "Contact request steps",
200+
"phaseNumber": "{{current}} of {{total}}",
199201
"Done": "Complete!",
200202
"FillContactDetails": "Fill in contact details",
201203
"PreviewAndSend": "Preview and send",

frontend/packages/akr/public/i18n/fi-FI/translation.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,8 @@
213213
"recipients": "Vastaanottajat",
214214
"steps": {
215215
"active": "Aktiivinen",
216+
"ariaLabel": "Yhteydenottopyynnön vaiheet",
217+
"phaseNumber": "{{current}} kautta {{total}}",
216218
"completed": "Suoritettu",
217219
"Done": "Valmis!",
218220
"FillContactDetails": "Täytä yhteystietosi",

frontend/packages/akr/public/i18n/sv-SE/translation.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@
196196
"steps": {
197197
"active": "Aktiv",
198198
"completed": "Utfört",
199+
"ariaLabel": "Kontaktförfrågans faser",
200+
"phaseNumber": "{{current}} av {{total}}",
199201
"Done": "Klart!",
200202
"FillContactDetails": "Fyll i kontaktuppgifter",
201203
"PreviewAndSend": "Förhandsgranska och sänd",

frontend/packages/akr/src/components/contactRequest/ContactRequestStepper.tsx

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,48 +22,55 @@ export const ContactRequestStepper = () => {
2222
const value = activeStep * (100 / maxStep);
2323
const stepAriaLabel = (step: number) => {
2424
const phaseDescription = t(ContactRequestFormStep[step]);
25-
const phaseNumberPart = `${step}/${maxStep}`;
25+
const phaseNumberPart = t('phaseNumber', {
26+
current: step,
27+
total: maxStep,
28+
});
2629
if (step < activeStep) {
2730
return `${phasePrefix} ${phaseNumberPart}, ${t(
2831
'completed',
2932
)}: ${phaseDescription}`;
30-
} else if (step == activeStep) {
31-
return `${phasePrefix} ${phaseNumberPart}, ${t(
32-
'active',
33-
)}: ${phaseDescription}`;
3433
} else {
3534
return `${phasePrefix} ${phaseNumberPart}: ${phaseDescription}`;
3635
}
3736
};
37+
3838
const text = `${activeStep}/${maxStep}`;
39+
const ariaText = t('phaseNumber', {
40+
current: activeStep,
41+
total: maxStep,
42+
});
3943

40-
const ariaLabel = `${translateCommon('phase')} ${text}: ${t(
41-
ContactRequestFormStep[activeStep],
42-
)}`;
44+
const ariaLabel = `${translateCommon('phase')} ${ariaText}`;
4345

4446
return isPhone ? (
45-
<CircularStepper
46-
value={value}
47-
ariaLabel={ariaLabel}
48-
phaseText={text}
49-
size={90}
50-
/>
47+
<div aria-label={t('ariaLabel')} role="group">
48+
<CircularStepper
49+
value={value}
50+
ariaLabel={ariaLabel}
51+
phaseText={text}
52+
size={90}
53+
/>
54+
</div>
5155
) : (
5256
<Stepper
57+
aria-label={t('ariaLabel')}
58+
role="group"
5359
className="contact-request-page__stepper"
5460
activeStep={activeStep - 1}
5561
>
5662
{stepNumbers.map((v) => (
5763
<Step key={v}>
5864
<StepLabel
65+
aria-current={activeStep === v && 'step'}
5966
aria-label={stepAriaLabel(v)}
6067
className={
6168
activeStep < v
6269
? 'contact-request-page__stepper__step--disabled'
6370
: undefined
6471
}
6572
>
66-
{t(ContactRequestFormStep[v])}
73+
<span aria-hidden={true}>{t(ContactRequestFormStep[v])}</span>
6774
</StepLabel>
6875
</Step>
6976
))}

frontend/packages/akr/src/pages/ContactRequestPage.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Grid, Paper } from '@mui/material';
1+
import { Grid, Paper, Typography } from '@mui/material';
22
import { useEffect, useState } from 'react';
33
import { H1, HeaderSeparator, Text } from 'shared/components';
44
import { useWindowProperties } from 'shared/hooks';
@@ -61,7 +61,9 @@ export const ContactRequestPage = () => {
6161
<div className="contact-request-page__grid__stepper-container columns gapped">
6262
<ContactRequestStepper />
6363
<div className="rows">
64-
<H1>{t(`steps.${ContactRequestFormStep[activeStep]}`)}</H1>
64+
<Typography component="p" variant="h2">
65+
{t(`steps.${ContactRequestFormStep[activeStep]}`)}
66+
</Typography>
6567
{ContactRequestFormStep[nextStep] && (
6668
<Text>
6769
{translateCommon('next')}:{' '}

frontend/packages/otr/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@
2525
"otr:tslint": "yarn g:tsc --pretty --noEmit"
2626
},
2727
"dependencies": {
28-
"shared": "npm:@opetushallitus/[email protected].1"
28+
"shared": "npm:@opetushallitus/[email protected].2"
2929
}
3030
}

frontend/packages/shared/CHANGELOG.MD

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
99

1010
## [Released]
1111

12+
## [1.11.2] - 2024-09-16
13+
### Fixed
14+
- Improve CircularStepper accessibility
15+
1216
## [1.11.1] - 2024-09-13
1317

1418
### Fixed

frontend/packages/shared/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@opetushallitus/kieli-ja-kaantajatutkinnot.shared",
3-
"version": "1.11.1",
3+
"version": "1.11.2",
44
"description": "Shared Frontend Package",
55
"exports": {
66
"./components": "./src/components/index.tsx",

frontend/packages/shared/src/components/CircularStepper/CircularStepper.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import { CircularProgress, CircularProgressProps } from '@mui/material';
2+
import { visuallyHidden } from '@mui/utils';
23

4+
import { Text } from '../../components';
35
import { Color } from '../../enums/common';
46
import { H3 } from '../Text/Text';
7+
58
import './CircularStepper.scss';
69

710
interface CircularStepperProps extends CircularProgressProps {
@@ -19,14 +22,16 @@ export const CircularStepper = ({
1922
<div className="circular-stepper">
2023
<CircularProgress
2124
aria-label={ariaLabel}
25+
aria-hidden={true}
2226
className="circular-stepper__progress"
2327
color={Color.Secondary}
2428
variant="determinate"
2529
{...rest}
2630
/>
27-
<div className="circular-stepper__heading">
31+
<div className="circular-stepper__heading" aria-hidden={true}>
2832
<H3>{phaseText}</H3>
2933
</div>
34+
<Text sx={visuallyHidden}>{ariaLabel}</Text>
3035
</div>
3136
);
3237
};

0 commit comments

Comments
 (0)