Skip to content

Commit a46f3b8

Browse files
committed
[List] screen reader support
1 parent e8fcd91 commit a46f3b8

File tree

4 files changed

+37
-17
lines changed

4 files changed

+37
-17
lines changed

lib/kits/core-ui/components/helpers/component.ts

+9
Original file line numberDiff line numberDiff line change
@@ -491,3 +491,12 @@ export const getTotalQuantityByOffer = (savedOffers, offerId) => {
491491
return totalQuantity;
492492
}, 0);
493493
};
494+
495+
export const formatDateForReader = (date) => {
496+
const dateFormat = new Date(date);
497+
498+
return new Intl.DateTimeFormat('en-US', {
499+
month: 'long',
500+
day: 'numeric'
501+
}).format(dateFormat);
502+
};

lib/kits/core-ui/components/list-publications/main-container.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const defaultTemplate = `\
77
<ul class="sgn-publications-list-items-container">
88
{{#publications}}
99
<li class="sgn-publications-li" data-status="{{status}}">
10-
<div class="publications__item" data-id="{{id}}">
10+
<div class="publications__item" data-id="{{id}}" tabindex="0" aria-label="{{label}}; {{translations.validFrom}} {{dateReaderFrom}} {{translations.till}} {{dateReaderTill}}">
1111
<div class="sgn-publications-list-content-img">
1212
<img data-id="{{id}}" src="{{images.view}}" alt="{{label}}">
1313
<div class="sgn-publications-list-content-status">
@@ -33,12 +33,15 @@ const defaultTemplate = `\
3333

3434
const MainContainer = ({publications, template, el}) => {
3535
const translations = {
36-
upcoming: translate('publication_viewer_upcoming')
36+
upcoming: translate('publication_viewer_upcoming'),
37+
validFrom: translate('publication_viewer_offer_valid_from'),
38+
till: translate('publication_viewer_until_label')
3739
};
3840

3941
const render = () => {
4042
el.innerHTML = Mustache.render(template?.innerHTML || defaultTemplate, {
4143
publications,
44+
translations,
4245
upcomingLabel: function () {
4346
return this.status === 'inactive' ? translations.upcoming : '';
4447
}

lib/kits/core-ui/list-publications.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import {
1010
transformFilter,
1111
getHashFragments,
1212
getPubState,
13-
parseDateStr
13+
parseDateStr,
14+
formatDateForReader
1415
} from './components/helpers/component';
1516
import type {Tracker} from '../events';
1617

@@ -123,6 +124,11 @@ const ListPublications = (
123124
const addPublicationListener = () =>
124125
document.querySelectorAll('.publications__item').forEach((itemEl) => {
125126
itemEl.addEventListener('click', clickPublicationItem, false);
127+
itemEl.addEventListener('keydown', (event: KeyboardEvent) => {
128+
if (event.key === 'Enter' || event.key === ' ') {
129+
clickPublicationItem(event);
130+
}
131+
});
126132
});
127133

128134
const dispatchPublicationClickEvent = (detail) => {
@@ -165,6 +171,8 @@ const ListPublications = (
165171
...publication,
166172
dateFrom: formatDate(publication?.run_from),
167173
dateTill: formatDate(publication?.run_till),
174+
dateReaderFrom: formatDateForReader(publication?.run_from),
175+
dateReaderTill: formatDateForReader(publication?.run_till),
168176
status: getPubState(
169177
publication?.run_from,
170178
new Date(

lib/kits/core-ui/paged-publication.ts

+14-14
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ import {
1616
transformFilter,
1717
translate,
1818
animateShoppingListCounter,
19-
dispatchProductClickEvent
19+
dispatchProductClickEvent,
20+
formatDateForReader
2021
} from './components/helpers/component';
2122
import {transformScriptData} from './components/helpers/transformers';
2223
import MainContainer from './components/paged-publication/main-container';
@@ -220,23 +221,22 @@ const PagedPublication = (
220221
const addScreenReaderText = () => {
221222
const container = options.el;
222223

223-
const formatDate = (date) => {
224-
const dateFormat = new Date(date);
225-
226-
return new Intl.DateTimeFormat('en-US', {
227-
month: 'long',
228-
day: 'numeric'
229-
}).format(dateFormat);
224+
const translations = {
225+
validFrom: translate('publication_viewer_offer_valid_from'),
226+
till: translate('publication_viewer_until_label')
230227
};
231228

229+
const {branding, label, page_count, run_from, run_till} =
230+
sgnData?.details || {};
231+
232232
container.setAttribute(
233233
'aria-label',
234-
`${sgnData?.details?.branding?.name};
235-
${sgnData?.details?.label};
236-
${sgnData?.details?.page_count} pages;
237-
Valid from ${formatDate(
238-
sgnData?.details?.run_from
239-
)} to ${formatDate(sgnData?.details?.run_till)}
234+
`${branding?.name};
235+
${label};
236+
${page_count} pages;
237+
${translations.validFrom} ${formatDateForReader(run_from)} ${
238+
translations.till
239+
} ${formatDateForReader(run_till)}
240240
`
241241
);
242242
};

0 commit comments

Comments
 (0)