Skip to content

Commit aa9d6dd

Browse files
authored
Merge pull request #534 from HSLdevcom/AB#562
Ab#562 Accessibility improvements
2 parents 2187e4a + b80ed3f commit aa9d6dd

58 files changed

Lines changed: 752 additions & 467 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/App.scss

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,12 @@ li {
5151
white-space: nowrap;
5252
width: 1px;
5353
}
54+
55+
:focus-visible {
56+
outline: 3px solid var(--primary-color, #005fcc);
57+
outline-offset: 2px;
58+
}
59+
60+
input[type='checkbox']:focus-visible {
61+
outline: none;
62+
}

src/App.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -216,9 +216,9 @@ const App: FC<IConfigurationProps> = props => {
216216
<>
217217
<SkipToMainContent />
218218
<BannerContainer />
219-
<section role="main" id="mainContent">
219+
<main id="mainContent">
220220
<CreateViewPage />
221-
</section>
221+
</main>
222222
</>
223223
)}
224224
/>
@@ -234,9 +234,9 @@ const App: FC<IConfigurationProps> = props => {
234234
<>
235235
<SkipToMainContent />
236236
<BannerContainer />
237-
<section role="main" id="mainContent">
237+
<main id="mainContent">
238238
<CreateViewPage />
239-
</section>
239+
</main>
240240
</>
241241
)}
242242
/>
@@ -246,9 +246,9 @@ const App: FC<IConfigurationProps> = props => {
246246
<>
247247
<SkipToMainContent />
248248
<BannerContainer />
249-
<section role="main" id="mainContent">
249+
<main id="mainContent">
250250
<UserMonitors />
251-
</section>
251+
</main>
252252
</>
253253
)}
254254
/>

src/LandingPage.tsx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,17 @@ const LandingPage = () => {
3636
<Link
3737
to={'/createview'}
3838
id="create-new-link"
39-
aria-label={t('quickDisplayCreate')}
39+
className="monitor-button blue"
4040
>
41-
<button className="monitor-button blue">
42-
{t('quickDisplayCreate')}
43-
</button>
41+
{t('quickDisplayCreate')}
4442
</Link>
4543
)}
4644
</>
4745
);
4846
return (
4947
<>
5048
<BannerContainer />
51-
<section role="main" id="mainContent">
49+
<main id="mainContent">
5250
{logIn ? (
5351
<Redirect
5452
to={{
@@ -58,7 +56,7 @@ const LandingPage = () => {
5856
) : (
5957
<IndexPage buttons={buttons} renderLogInMessage />
6058
)}
61-
</section>
59+
</main>
6260
</>
6361
);
6462
};

src/i18n.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export const resources = {
1515
breadCrumbsModify: 'Edit the stop display',
1616
breadCrumbsOwnMonitors: 'My stop displays',
1717
breadCrumbsSite: 'Journey Planner',
18+
breadcrumbsNav: 'Breadcrumb',
1819
cancel: 'Cancel',
1920
cancelled: 'Cancelled',
2021
changeLanguage: 'Change language to {{language}}',
@@ -41,6 +42,8 @@ export const resources = {
4142
displayLanguages: 'Languages',
4243
displayMap: 'Map view',
4344
duration: 'Duration / language',
45+
'duration-disabled':
46+
'Duration / language – not applicable for a single view with one language',
4447
'edit-display': 'Edit display',
4548
'edit-map': 'Adjust the crop >',
4649
'front-page-no-sign-in-button': 'Continue without logging in',
@@ -66,6 +69,7 @@ export const resources = {
6669
'import-instructions':
6770
'Give the URL address of an existing stop display to add it to your displays.',
6871
'import-monitor': 'Import display',
72+
'import-url-label': 'URL address',
6973
'info-display-only-one':
7074
'You can select a service update view only for a display with one stop view.',
7175
'info-text-short': 'Departures in a chronological order',
@@ -81,6 +85,10 @@ export const resources = {
8185
'language-name-en': 'English',
8286
'language-name-fi': 'Finnish',
8387
'language-name-sv': 'Swedish',
88+
'added-stops': 'Added stops',
89+
leftColumn: 'Left column',
90+
rightColumn: 'Right column',
91+
renameDestinationFor: 'Rename {{line}} destination in {{lang}}',
8492
languageSelection: 'Language selection',
8593
layout: 'Layout',
8694
'layout-double': 'Double view',
@@ -122,6 +130,7 @@ export const resources = {
122130
'one-column': 'One column',
123131
open: 'Open the display',
124132
ok: 'OK',
133+
notice: 'Notice',
125134
or: 'or',
126135
'platform-or-stop': 'Platform/Stop',
127136
prepareDisplay: 'Add new stop view',
@@ -155,7 +164,14 @@ export const resources = {
155164
stop: 'Stop',
156165
'stop-display': 'Stop display',
157166
stopSettings: 'Settings for stop {{stop}} ({{code}})',
167+
maptitle: 'Name of the map view',
158168
stoptitle: 'Name of the stop view',
169+
'transport-mode-bus': 'Bus stop',
170+
'transport-mode-tram': 'Tram stop',
171+
'transport-mode-rail': 'Train stop',
172+
'transport-mode-subway': 'Metro stop',
173+
'transport-mode-ferry': 'Ferry stop',
174+
'transport-mode-airplane': 'Airport',
159175
tighten: 'Convergent',
160176
timeShift: 'Filter departures by time',
161177
timeShiftDescription:
@@ -182,6 +198,7 @@ export const resources = {
182198
breadCrumbsModify: 'Muokkaa pysäkkinäyttöä',
183199
breadCrumbsOwnMonitors: 'Omat pysäkkinäytöt',
184200
breadCrumbsSite: 'Reittiopas',
201+
breadcrumbsNav: 'Murupolku',
185202
cancel: 'Peruuta',
186203
cancelled: 'Peruttu',
187204
changeLanguage: 'Vaihda kieleen {{language}}',
@@ -209,6 +226,8 @@ export const resources = {
209226
displayLanguages: 'Esityskielet',
210227
displayMap: 'Karttanäkymä',
211228
duration: 'Kesto / esityskieli',
229+
'duration-disabled':
230+
'Kesto / esityskieli – ei käytössä yksittäiselle näkymälle, jossa on yksi kieli',
212231
'edit-display': 'Muokkaa näyttöä',
213232
'edit-map': 'Muokkaa rajausta > ',
214233
'front-page-no-sign-in-button': 'Jatka kirjautumatta',
@@ -234,6 +253,7 @@ export const resources = {
234253
'import-instructions':
235254
'Anna olemassaolevan pysäkkinäytön URL-osoite, niin voit lisätä sen omiin näyttöihisi',
236255
'import-monitor': 'Tuo näyttö',
256+
'import-url-label': 'URL-osoite',
237257
'info-display-only-one':
238258
'Voit valita tiedotenäytön vain näyttöön, jossa on yksi pysäkkinäkymä.',
239259
'info-text-short': 'Lähdöt aikajärjestyksessä',
@@ -247,6 +267,11 @@ export const resources = {
247267
'language-name-en': 'Englanti',
248268
'language-name-fi': 'Suomi',
249269
'language-name-sv': 'Ruotsi',
270+
'added-stops': 'Lisätyt pysäkit',
271+
leftColumn: 'Vasen sarake',
272+
rightColumn: 'Oikea sarake',
273+
renameDestinationFor:
274+
'Nimeä linjan {{line}} kohde uudelleen kielellä {{lang}}',
250275
languageSelection: 'Kielen valinta',
251276
layout: 'Asettelu',
252277
'layout-double': 'Kaksoisnäkymä',
@@ -288,6 +313,7 @@ export const resources = {
288313
'one-column': 'Yksi sarake',
289314
open: 'Avaa näyttö',
290315
ok: 'OK',
316+
notice: 'Huomio',
291317
or: 'tai',
292318
'platform-or-stop': 'Lait./Pys.',
293319
prepareDisplay: 'Lisää uusi pysäkkinäkymä',
@@ -322,6 +348,12 @@ export const resources = {
322348
'stop-display': 'Pysäkkinäyttö',
323349
stopSettings: 'Pysäkin {{stop}} {{code}} asetukset',
324350
stoptitle: 'Pysäkkinäkymän nimi',
351+
'transport-mode-bus': 'Bussipysäkki',
352+
'transport-mode-tram': 'Raitiovaunupysäkki',
353+
'transport-mode-rail': 'Juna-asema',
354+
'transport-mode-subway': 'Metroasema',
355+
'transport-mode-ferry': 'Lauttapysäkki',
356+
'transport-mode-airplane': 'Lentokenttä',
325357
tighten: 'Tiivistyvä',
326358
timeShift: 'Rajaa lähtöjä ajan mukaan',
327359
timeShiftDescription:
@@ -348,6 +380,7 @@ export const resources = {
348380
breadCrumbsModify: 'Redigera hållplatsskärmen',
349381
breadCrumbsOwnMonitors: 'Mina hållplatsskärmar',
350382
breadCrumbsSite: 'Reseplaneraren',
383+
breadcrumbsNav: 'Brödsmulor',
351384
cancel: 'Ångra',
352385
cancelled: 'Inställt',
353386
changeLanguage: 'Byt språket till {{language}}',
@@ -375,6 +408,8 @@ export const resources = {
375408
displayLanguages: 'Språk',
376409
displayMap: 'Kartvy',
377410
duration: 'Tid / språk',
411+
'duration-disabled':
412+
'Tid / språk – inte tillgänglig för en enskild vy med ett språk',
378413
'edit-display': 'Redigera skärmen',
379414
'edit-map': 'Justera beskärningen >',
380415
'front-page-no-sign-in-button': 'Fortsätt utan att logga in',
@@ -400,6 +435,7 @@ export const resources = {
400435
'import-instructions':
401436
'Ange URL-adressen för en existerande hållplatsskärm för att lägga till den i dina skärmar',
402437
'import-monitor': 'Importera skärmen',
438+
'import-url-label': 'URL-adress',
403439
'info-display-only-one':
404440
'Du kan välja meddelandeskärmen endast för en skärm som har bara en hållplatsvy.',
405441
'info-text-short': 'Avgångarna i kronologisk ordning',
@@ -414,6 +450,10 @@ export const resources = {
414450
'language-name-en': 'engelska',
415451
'language-name-fi': 'finska',
416452
'language-name-sv': 'svenska',
453+
'added-stops': 'Tillagda hållplatser',
454+
leftColumn: 'Vänster kolumn',
455+
rightColumn: 'Höger kolumn',
456+
renameDestinationFor: 'Byt namn på {{line}} destination på {{lang}}',
417457
languageSelection: 'Språkval',
418458
layout: 'Justering',
419459
'layout-double': 'Dubbelvy',
@@ -455,6 +495,7 @@ export const resources = {
455495
'one-column': 'En kolumn',
456496
open: 'Öppna skärmen',
457497
ok: 'OK',
498+
notice: 'Observera',
458499
or: 'eller',
459500
'platform-or-stop': 'Plattf./Hållpl.',
460501
prepareDisplay: 'Lägg till ny hållplatsskärm',
@@ -489,7 +530,14 @@ export const resources = {
489530
stop: 'Hållplats',
490531
'stop-display': 'Hållplatsskärm',
491532
stopSettings: 'Inställningar för hållplats {{stop}} ({{code}})',
533+
maptitle: 'Kartvyns namn',
492534
stoptitle: 'Hållplatsskärmens namn',
535+
'transport-mode-bus': 'Busshållplats',
536+
'transport-mode-tram': 'Spårvagnshållplats',
537+
'transport-mode-rail': 'Tågstation',
538+
'transport-mode-subway': 'Metrostation',
539+
'transport-mode-ferry': 'Färjehållplats',
540+
'transport-mode-airplane': 'Flygplats',
493541
tighten: 'Förtätad',
494542
timeShift: 'Välja bort avgångar baserat på tid',
495543
timeShiftDescription:

src/test/IndexPage.test.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ it('should add createView to path when the button is clicked', () => {
4545
});
4646

4747
it('render an image', () => {
48-
const screen = render(<MemoryRouter>{withContext()}</MemoryRouter>);
49-
expect(screen.getAllByAltText('monitor-image').length).toEqual(1);
48+
const { container } = render(<MemoryRouter>{withContext()}</MemoryRouter>);
49+
const img = container.querySelector('img.desktop-img');
50+
expect(img).not.toBeNull();
51+
expect(img.getAttribute('alt')).toBe('');
5052
});

src/test/MonitorRow.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ it('should render a cancelled departure with alert icon and destination', () =>
8787
expect(
8888
container.getElementsByClassName('grid-col destination')[0]?.children[0]
8989
.nodeName,
90-
).toEqual('svg');
90+
).toEqual('SPAN');
9191
});
9292

9393
it('should do show tilde when realtime is off', () => {

src/ui/Banner.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ const Banner = () => {
4444
{user.sub ? (
4545
<button
4646
className="menu-button"
47-
role="button"
4847
aria-label={t('userMenuOpen')}
4948
onClick={setUserOpen}
5049
>
@@ -85,7 +84,6 @@ const Banner = () => {
8584
<div className="menu-container">
8685
<button
8786
className="menu-button"
88-
role="button"
8987
aria-label={t('menuOpen')}
9088
onClick={setBurgerOpen}
9189
>

src/ui/BannerContainer.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ import { ConfigContext } from '../contexts';
77
const BannerContainer = () => {
88
const config = useContext(ConfigContext);
99
return (
10-
<section className="navigation-container" aria-label="navigation">
10+
<nav className="navigation-container" aria-label="navigation">
1111
{config.name === 'hsl' ? <BannerHSL /> : <Banner />}
1212
<Breadcrumbs />
13-
</section>
13+
</nav>
1414
);
1515
};
1616

src/ui/Breadcrumbs.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
padding-top: 39px;
88

99
.crumbs {
10+
padding-left: 0;
11+
list-style: none;
12+
margin: 0;
13+
1014
.to-home {
1115
text-decoration: none;
1216
color: $primary-color;
@@ -24,6 +28,7 @@
2428
}
2529

2630
.main-header {
31+
margin: 0;
2732
padding-top: 53px;
2833
font-size: 36px;
2934
font-style: normal;

src/ui/Breadcrumbs.tsx

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -39,37 +39,39 @@ const Breadcrumbs = () => {
3939

4040
return (
4141
<div className="breadcrumbs-container">
42-
<div className="crumbs">
43-
{crumbs.map((crumb, i) => {
44-
let path = arr[i];
45-
if (crumb === null) {
46-
crumb = 'breadCrumbsCreate';
47-
path = '';
48-
}
49-
return (
50-
<React.Fragment key={`crumb${i}`}>
51-
{i !== 0 && (
52-
<Icon
53-
img={'arrow-down'}
54-
width={14}
55-
height={14}
56-
rotate={'-90'}
57-
color={config.colors.primary}
58-
margin={'0 10px'}
59-
/>
60-
)}
61-
{i === crumbs.length - 1 ? (
62-
t(crumb)
63-
) : (
64-
<Link className="to-home" to={`/${path}`}>
65-
{t(crumb)}
66-
</Link>
67-
)}
68-
</React.Fragment>
69-
);
70-
})}
71-
</div>
72-
<span className="main-header">{t(crumbs[crumbs.length - 1])}</span>
42+
<nav aria-label={t('breadcrumbsNav')}>
43+
<ol className="crumbs">
44+
{crumbs.map((crumb, i) => {
45+
let path = arr[i];
46+
if (crumb === null) {
47+
crumb = 'breadCrumbsCreate';
48+
path = '';
49+
}
50+
return (
51+
<li key={`crumb${i}`} style={{ display: 'contents' }}>
52+
{i !== 0 && (
53+
<Icon
54+
img={'arrow-down'}
55+
width={14}
56+
height={14}
57+
rotate={'-90'}
58+
color={config.colors.primary}
59+
margin={'0 10px'}
60+
/>
61+
)}
62+
{i === crumbs.length - 1 ? (
63+
<span aria-current="page">{t(crumb)}</span>
64+
) : (
65+
<Link className="to-home" to={`/${path}`}>
66+
{t(crumb)}
67+
</Link>
68+
)}
69+
</li>
70+
);
71+
})}
72+
</ol>
73+
</nav>
74+
<h1 className="main-header">{t(crumbs[crumbs.length - 1])}</h1>
7375
</div>
7476
);
7577
};

0 commit comments

Comments
 (0)