Skip to content

Commit 84da2bb

Browse files
juliajforestiCopilot
andcommitted
fix: a11y in ExportMessages message checkbox
Co-authored-by: Copilot <copilot@github.com>
1 parent 7baeb21 commit 84da2bb

5 files changed

Lines changed: 31 additions & 6 deletions

File tree

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import type { IMessage } from '@rocket.chat/core-typings';
2+
import type { TFunction } from 'i18next';
3+
4+
export const getCheckboxLabel = (message: IMessage, t: TFunction): string => {
5+
const username = message.u.name || message.u.username;
6+
if (message.msg) {
7+
return t('Select_message_from_user_with_preview', {
8+
username,
9+
message: message.msg,
10+
});
11+
}
12+
return t('Select_message_from_user', { username });
13+
};

apps/meteor/client/components/message/variants/RoomMessage.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ import type { IMessage } from '@rocket.chat/core-typings';
22
import { Message, MessageLeftContainer, MessageContainer, CheckBox } from '@rocket.chat/fuselage';
33
import { useToggle } from '@rocket.chat/fuselage-hooks';
44
import { MessageAvatar } from '@rocket.chat/ui-avatar';
5-
import { useTranslation, useUserId, useUserCard } from '@rocket.chat/ui-contexts';
5+
import { useUserId, useUserCard } from '@rocket.chat/ui-contexts';
66
import type { ComponentProps, ReactElement } from 'react';
77
import { memo } from 'react';
8+
import { useTranslation } from 'react-i18next';
89

910
import type { MessageActionContext } from '../../../../app/ui-utils/client/lib/MessageAction';
1011
import { useIsMessageHighlight } from '../../../views/room/MessageList/contexts/MessageHighlightContext';
@@ -21,6 +22,7 @@ import MessageHeader from '../MessageHeader';
2122
import MessageToolbarHolder from '../MessageToolbarHolder';
2223
import StatusIndicators from '../StatusIndicators';
2324
import RoomMessageContent from './room/RoomMessageContent';
25+
import { getCheckboxLabel } from '../helpers/getCheckboxLabel';
2426
import { useMessageListReadReceipts } from '../list/MessageListContext';
2527

2628
type RoomMessageProps = {
@@ -71,7 +73,7 @@ const RoomMessage = ({
7173
searchText,
7274
...props
7375
}: RoomMessageProps): ReactElement => {
74-
const t = useTranslation();
76+
const { t } = useTranslation();
7577
const uid = useUserId();
7678
const editing = useIsMessageHighlight(message._id);
7779
const [displayIgnoredMessage, toggleDisplayIgnoredMessage] = useToggle(false);
@@ -88,6 +90,8 @@ const RoomMessage = ({
8890
useCountSelected();
8991
const messageRef = useJumpToMessage(message._id);
9092

93+
const checkboxLabel = getCheckboxLabel(message, t);
94+
9195
return (
9296
<Message
9397
ref={messageRef}
@@ -122,7 +126,7 @@ const RoomMessage = ({
122126
{...triggerProps}
123127
/>
124128
)}
125-
{selecting && <CheckBox checked={selected} onChange={toggleSelected} />}
129+
{selecting && <CheckBox checked={selected} onChange={toggleSelected} aria-label={checkboxLabel} />}
126130
{sequential && <StatusIndicators message={message} />}
127131
</MessageLeftContainer>
128132
<MessageContainer>

apps/meteor/client/components/message/variants/SystemMessage.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import {
3030
} from '../../../views/room/MessageList/contexts/SelectedMessagesContext';
3131
import Attachments from '../content/Attachments';
3232
import MessageActions from '../content/MessageActions';
33+
import { getCheckboxLabel } from '../helpers/getCheckboxLabel';
3334
import {
3435
useMessageListShowRealName,
3536
useMessageListShowUsername,
@@ -63,6 +64,8 @@ const SystemMessage = ({ message, showUserAvatar, ...props }: SystemMessageProps
6364
useCountSelected();
6465
const buttonProps = useButtonPattern((e) => openUserCard(e, user.username));
6566

67+
const checkboxLabel = getCheckboxLabel(message, t);
68+
6669
return (
6770
<MessageSystem
6871
role='listitem'
@@ -75,7 +78,7 @@ const SystemMessage = ({ message, showUserAvatar, ...props }: SystemMessageProps
7578
>
7679
<MessageSystemLeftContainer>
7780
{!isSelecting && showUserAvatar && <UserAvatar username={message.u.username} size='x18' />}
78-
{isSelecting && <CheckBox checked={isSelected} onChange={toggleSelected} />}
81+
{isSelecting && <CheckBox checked={isSelected} onChange={toggleSelected} aria-label={checkboxLabel} />}
7982
</MessageSystemLeftContainer>
8083
<MessageSystemContainer>
8184
<MessageSystemBlock>

apps/meteor/client/components/message/variants/ThreadMessagePreview.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import { useGoToThread } from '../../../views/room/hooks/useGoToThread';
3131
import Emoji from '../../Emoji';
3232
import { useShowTranslated } from '../list/MessageListContext';
3333
import ThreadMessagePreviewBody from './threadPreview/ThreadMessagePreviewBody';
34+
import { getCheckboxLabel } from '../helpers/getCheckboxLabel';
3435

3536
type ThreadMessagePreviewProps = {
3637
message: IThreadMessage;
@@ -69,6 +70,8 @@ const ThreadMessagePreview = ({ message, showUserAvatar, sequential, ...props }:
6970
return toggleSelected();
7071
};
7172

73+
const checkboxLabel = getCheckboxLabel(message, t);
74+
7275
return (
7376
<ThreadMessage
7477
role='link'
@@ -117,7 +120,7 @@ const ThreadMessagePreview = ({ message, showUserAvatar, sequential, ...props }:
117120
size='x18'
118121
/>
119122
)}
120-
{isSelecting && <CheckBox checked={isSelected} onChange={toggleSelected} />}
123+
{isSelecting && <CheckBox checked={isSelected} onChange={toggleSelected} aria-label={checkboxLabel} />}
121124
</ThreadMessageLeftContainer>
122125
<ThreadMessageContainer>
123126
<ThreadMessageBody>

packages/i18n/src/locales/en.i18n.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7212,5 +7212,7 @@
72127212
"message_attachment": "message attachment",
72137213
"system_message_body": "system message body",
72147214
"No_changes_to_save": "No changes to save",
7215-
"Avatar_preview_updated": "Avatar preview updated"
7215+
"Avatar_preview_updated": "Avatar preview updated",
7216+
"Select_message_from_user": "Select message from {{username}}",
7217+
"Select_message_from_user_with_preview": "Select message from {{username}}: {{message}}"
72167218
}

0 commit comments

Comments
 (0)