From ce68db5c20926d07bc208cbea32101806618f73a Mon Sep 17 00:00:00 2001 From: David Langley Date: Thu, 8 May 2025 18:46:36 +0100 Subject: [PATCH] Improve voiceover experience - As well as stylng cells, set the tabIndex(roving) - Natively focus the div with .focus() so screen reader actually moves over the cells - improve labels and roles --- .../views/rooms/MemberList/MemberListView.tsx | 4 ++++ .../rooms/MemberList/tiles/RoomMemberTileView.tsx | 5 +++-- .../MemberList/tiles/ThreePidInviteTileView.tsx | 5 ++++- .../MemberList/tiles/common/MemberTileView.tsx | 15 ++++++++++++--- src/i18n/strings/en_EN.json | 4 +++- 5 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/components/views/rooms/MemberList/MemberListView.tsx b/src/components/views/rooms/MemberList/MemberListView.tsx index bb9f8e6cfd..64c88113fa 100644 --- a/src/components/views/rooms/MemberList/MemberListView.tsx +++ b/src/components/views/rooms/MemberList/MemberListView.tsx @@ -117,10 +117,14 @@ const MemberListView: React.FC = (props: IProps) => { getRowComponent(member, index === focusedIndex)} diff --git a/src/components/views/rooms/MemberList/tiles/RoomMemberTileView.tsx b/src/components/views/rooms/MemberList/tiles/RoomMemberTileView.tsx index 3a3fe56e53..c5b433774a 100644 --- a/src/components/views/rooms/MemberList/tiles/RoomMemberTileView.tsx +++ b/src/components/views/rooms/MemberList/tiles/RoomMemberTileView.tsx @@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ -import React, { type JSX } from "react"; +import React, { useEffect, type JSX } from "react"; import DisambiguatedProfile from "../../../messages/DisambiguatedProfile"; import { type RoomMember } from "../../../../../models/rooms/RoomMember"; @@ -37,7 +37,7 @@ export function RoomMemberTileView(props: IProps): JSX.Element { /> ); const name = vm.name; - const nameJSX = ; + const nameJSX = ; const presenceState = member.presenceState; let presenceJSX: JSX.Element | undefined; @@ -60,6 +60,7 @@ export function RoomMemberTileView(props: IProps): JSX.Element { presenceJsx={presenceJSX} nameJsx={nameJSX} userLabel={vm.userLabel} + ariaLabel={_t("member_list|open_profile", { memberName: name })} iconJsx={iconJsx} focused={props.focused} /> diff --git a/src/components/views/rooms/MemberList/tiles/ThreePidInviteTileView.tsx b/src/components/views/rooms/MemberList/tiles/ThreePidInviteTileView.tsx index b03cd1db11..e3ab5d0895 100644 --- a/src/components/views/rooms/MemberList/tiles/ThreePidInviteTileView.tsx +++ b/src/components/views/rooms/MemberList/tiles/ThreePidInviteTileView.tsx @@ -12,6 +12,7 @@ import { type ThreePIDInvite } from "../../../../../models/rooms/ThreePIDInvite" import BaseAvatar from "../../../avatars/BaseAvatar"; import { MemberTileView } from "./common/MemberTileView"; import { InvitedIconView } from "./common/InvitedIconView"; +import { _t } from "../../../../../languageHandler"; interface Props { threePidInvite: ThreePIDInvite; @@ -22,12 +23,14 @@ export function ThreePidInviteTileView(props: Props): JSX.Element { const vm = useThreePidTileViewModel(props); const av =