Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit 4bf8d18

Browse files
committed
Change aria-label to aria-labelledby, make listitem tab-able, override the profile picture alt text
1 parent e30354b commit 4bf8d18

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

src/components/views/avatars/MemberAvatar.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ function MemberAvatar(
8686
return (
8787
<BaseAvatar
8888
{...props}
89+
tabindex="-1"
8990
size={size}
9091
name={name ?? ""}
9192
title={hideTitle ? undefined : title}
@@ -102,6 +103,7 @@ function MemberAvatar(
102103
}
103104
: props.onClick
104105
}
106+
aria-label={name ? name + ". " : ""}
105107
altText={_t("common|user_avatar")}
106108
ref={ref}
107109
/>

src/components/views/messages/TextualBody.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -623,6 +623,7 @@ export default class TextualBody extends React.Component<IBodyProps, IState> {
623623
}
624624

625625
let widgets;
626+
const id = 'mx_EventTile_content_' + mxEvent.getId();
626627
if (this.state.links.length && !this.state.widgetHidden && this.props.showUrlPreview) {
627628
widgets = (
628629
<LinkPreviewGroup
@@ -636,7 +637,7 @@ export default class TextualBody extends React.Component<IBodyProps, IState> {
636637

637638
if (isEmote) {
638639
return (
639-
<div className="mx_MEmoteBody mx_EventTile_content" onClick={this.onBodyLinkClick}>
640+
<div className="mx_MEmoteBody mx_EventTile_content" id={id} onClick={this.onBodyLinkClick}>
640641
*&nbsp;
641642
<span className="mx_MEmoteBody_sender" onClick={this.onEmoteSenderClick}>
642643
{mxEvent.sender ? mxEvent.sender.name : mxEvent.getSender()}
@@ -649,14 +650,14 @@ export default class TextualBody extends React.Component<IBodyProps, IState> {
649650
}
650651
if (isNotice) {
651652
return (
652-
<div className="mx_MNoticeBody mx_EventTile_content" onClick={this.onBodyLinkClick}>
653+
<div className="mx_MNoticeBody mx_EventTile_content" id={id} onClick={this.onBodyLinkClick}>
653654
{body}
654655
{widgets}
655656
</div>
656657
);
657658
}
658659
return (
659-
<div className="mx_MTextBody mx_EventTile_content" onClick={this.onBodyLinkClick}>
660+
<div className="mx_MTextBody mx_EventTile_content" id={id} onClick={this.onBodyLinkClick}>
660661
{body}
661662
{widgets}
662663
</div>

src/components/views/rooms/EventTile.tsx

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,7 +1061,7 @@ export class UnwrappedEventTile extends React.Component<EventTileProps, IState>
10611061
this.context.timelineRenderingType,
10621062
);
10631063
avatar = (
1064-
<div className="mx_EventTile_avatar">
1064+
<div className="mx_EventTile_avatar" id={'mx_EventTile_avatar_'+this.props.mxEvent.getId()} tabindex="-1">
10651065
<MemberAvatar
10661066
member={member}
10671067
size={avatarSize}
@@ -1147,6 +1147,7 @@ export class UnwrappedEventTile extends React.Component<EventTileProps, IState>
11471147
<a
11481148
href={permalink}
11491149
onClick={this.onPermalinkClicked}
1150+
tabindex="-1"
11501151
aria-label={formatTime(new Date(this.props.mxEvent.getTs()), this.props.isTwelveHour)}
11511152
onContextMenu={this.onTimestampContextMenu}
11521153
>
@@ -1209,8 +1210,9 @@ export class UnwrappedEventTile extends React.Component<EventTileProps, IState>
12091210
{
12101211
"ref": this.ref,
12111212
"className": classes,
1213+
"tabindex": 0,
12121214
"aria-live": ariaLive,
1213-
"aria-label": this.props.mxEvent.sender.name + '. ' + (this.props.mxEvent.clearEvent || this.props.mxEvent.event).content.body,
1215+
"aria-labelledby": `mx_EventTile_avatar_${this.props.mxEvent.getId()} mx_EventTile_content_${this.props.mxEvent.getId()}`,
12141216
"aria-atomic": true,
12151217
"data-scroll-tokens": scrollToken,
12161218
"data-has-reply": !!replyChain,
@@ -1264,8 +1266,9 @@ export class UnwrappedEventTile extends React.Component<EventTileProps, IState>
12641266
{
12651267
"ref": this.ref,
12661268
"className": classes,
1267-
"tabIndex": -1,
1269+
"tabindex": 0,
12681270
"aria-live": ariaLive,
1271+
"aria-labelledby": `mx_EventTile_avatar_${this.props.mxEvent.getId()} mx_EventTile_content_${this.props.mxEvent.getId()}`,
12691272
"aria-atomic": "true",
12701273
"data-scroll-tokens": scrollToken,
12711274
"data-layout": this.props.layout,
@@ -1398,9 +1401,9 @@ export class UnwrappedEventTile extends React.Component<EventTileProps, IState>
13981401
{
13991402
"ref": this.ref,
14001403
"className": classes,
1401-
"tabIndex": -1,
1404+
"tabindex": 0,
14021405
"aria-live": ariaLive,
1403-
"aria-label": this.props.mxEvent.sender.name + '. ' + (this.props.mxEvent.clearEvent || this.props.mxEvent.event).content.body,
1406+
"aria-labelledby": `mx_EventTile_avatar_${this.props.mxEvent.getId()} mx_EventTile_content_${this.props.mxEvent.getId()}`,
14041407
"aria-atomic": "true",
14051408
"data-scroll-tokens": scrollToken,
14061409
"data-layout": this.props.layout,
@@ -1415,7 +1418,7 @@ export class UnwrappedEventTile extends React.Component<EventTileProps, IState>
14151418
{sender}
14161419
{ircPadlock}
14171420
{avatar}
1418-
<div className={lineClasses} key="mx_EventTile_line" onContextMenu={this.onContextMenu}>
1421+
<div className={lineClasses} key="mx_EventTile_line" onContextMenu={this.onContextMenu} aria-labelledby={'mx_EventTile_content_' + this.props.mxEvent.getId()}>
14191422
{this.renderContextMenu()}
14201423
{groupTimestamp}
14211424
{groupPadlock}

0 commit comments

Comments
 (0)