Skip to content

Commit ed08069

Browse files
authored
fix: save button a11y (#202)
* feat: save button a11y * fix: removed unnecessary aria-label when title is string
1 parent cae68d2 commit ed08069

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/components/PostInfo/components/Save.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, {useContext} from 'react';
22

33
import {AnalyticsEventsProp, useAnalytics} from '@gravity-ui/page-constructor';
4-
import {Icon} from '@gravity-ui/uikit';
4+
import {Icon, useUniqId} from '@gravity-ui/uikit';
55

66
import {LikesContext} from '../../../contexts/LikesContext';
77
import {Save as SaveIcon} from '../../../icons/Save';
@@ -11,6 +11,7 @@ import {block} from '../../../utils/cn';
1111
import {postLikeStatus} from '../../../utils/common';
1212

1313
import '../PostInfo.scss';
14+
import {Keyset, i18n} from '../../../i18n';
1415

1516
const ICON_SIZE = 16;
1617

@@ -52,6 +53,9 @@ export const Save = ({
5253
const handleAnalytics = useAnalytics(DefaultEventNames.SaveButton);
5354
const isLikeable = Boolean(toggleLike);
5455

56+
const titleElementId = useUniqId();
57+
const isNumericTitle = typeof title === 'number';
58+
5559
return (
5660
<button
5761
className={b('item', {size, save: true})}
@@ -76,6 +80,9 @@ export const Save = ({
7680
handleAnalytics(analyticsEvents);
7781
}}
7882
data-qa={qa}
83+
aria-pressed={hasUserLike}
84+
aria-label={isNumericTitle ? i18n(Keyset.Save) : undefined}
85+
aria-describedby={isNumericTitle ? titleElementId : undefined}
7986
>
8087
<div className={b('content', {cursor: isLikeable, theme})}>
8188
<span className={b('icon')}>
@@ -85,7 +92,9 @@ export const Save = ({
8592
className={b({filled: Boolean(hasUserLike)})}
8693
/>
8794
</span>
88-
<span className={b('title', {cursor: isLikeable})}>{title}</span>
95+
<span id={titleElementId} className={b('title', {cursor: isLikeable})}>
96+
{title}
97+
</span>
8998
</div>
9099
</button>
91100
);

src/i18n/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export enum Keyset {
2222
AllServices = 'label_all_services',
2323
PromptSignInOnLike = 'prompt_sign_in_on_like',
2424
SignIn = 'Sign In',
25+
Save = 'save',
2526
}
2627

2728
const en = {
@@ -48,6 +49,7 @@ const en = {
4849
'{{count}} mins to read',
4950
],
5051
[Keyset.SignIn]: 'Sign In',
52+
[Keyset.Save]: 'Save',
5153
};
5254

5355
const ru = {
@@ -75,6 +77,7 @@ const ru = {
7577
'{{count}} минут чтения',
7678
],
7779
[Keyset.SignIn]: 'Войти',
80+
[Keyset.Save]: 'Сохранить',
7881
};
7982

8083
export const i18n = addComponentKeysets({en, ru}, NAMESPACE);

0 commit comments

Comments
 (0)