From 210bdfcb72b387f7891e921f76370b124e658b2b Mon Sep 17 00:00:00 2001 From: Harrison Healey Date: Mon, 28 Apr 2025 15:54:50 -0400 Subject: [PATCH] MM-63056/MM-63058/MM-63049 Improve accessibility of Threads list (#30816) * MM-63056 Add accessible name to Threads item menus * MM-63058 Add accessible name to Threads mark as unread button * MM-63049 Change Threads list to use tab pattern for filtering * Revert accidentally added i18n string --- .../__snapshots__/thread_item.test.tsx.snap | 3 + .../thread_item/thread_item.tsx | 4 + .../__snapshots__/thread_list.test.tsx.snap | 26 ++++- .../thread_list/thread_list.scss | 4 + .../thread_list/thread_list.tsx | 106 ++++++++++++++++-- .../__snapshots__/thread_menu.test.tsx.snap | 4 +- .../thread_menu/thread_menu.tsx | 5 +- webapp/channels/src/i18n/en.json | 3 +- 8 files changed, 137 insertions(+), 18 deletions(-) diff --git a/webapp/channels/src/components/threading/global_threads/thread_item/__snapshots__/thread_item.test.tsx.snap b/webapp/channels/src/components/threading/global_threads/thread_item/__snapshots__/thread_item.test.tsx.snap index 9bae8b5b14..4ab9139b24 100644 --- a/webapp/channels/src/components/threading/global_threads/thread_item/__snapshots__/thread_item.test.tsx.snap +++ b/webapp/channels/src/components/threading/global_threads/thread_item/__snapshots__/thread_item.test.tsx.snap @@ -57,6 +57,7 @@ exports[`components/threading/global_threads/thread_item should report total num } > @@ -183,6 +184,7 @@ exports[`components/threading/global_threads/thread_item should report unread me } > @@ -307,6 +309,7 @@ exports[`components/threading/global_threads/thread_item should report unread me } > diff --git a/webapp/channels/src/components/threading/global_threads/thread_item/thread_item.tsx b/webapp/channels/src/components/threading/global_threads/thread_item/thread_item.tsx index 60e4983b40..74b33ab961 100644 --- a/webapp/channels/src/components/threading/global_threads/thread_item/thread_item.tsx +++ b/webapp/channels/src/components/threading/global_threads/thread_item/thread_item.tsx @@ -258,6 +258,10 @@ function ThreadItem({ diff --git a/webapp/channels/src/components/threading/global_threads/thread_list/__snapshots__/thread_list.test.tsx.snap b/webapp/channels/src/components/threading/global_threads/thread_list/__snapshots__/thread_list.test.tsx.snap index aa8bb93fbd..65bc38fbe0 100644 --- a/webapp/channels/src/components/threading/global_threads/thread_list/__snapshots__/thread_list.test.tsx.snap +++ b/webapp/channels/src/components/threading/global_threads/thread_list/__snapshots__/thread_list.test.tsx.snap @@ -8,14 +8,25 @@ exports[`components/threading/global_threads/thread_list should match snapshot 1 >
+
- +
} id="tutorial-threads-mobile-header" right={ @@ -47,9 +64,10 @@ exports[`components/threading/global_threads/thread_list should match snapshot 1 className="right-anchor" > { - setFilter(ThreadFilter.none); - }, [setFilter]); + const handleSetFilter = useCallback((filter: ThreadFilter) => { + if (filter === ThreadFilter.unread) { + trackEvent('crt', 'filter_threads_by_unread'); + } - const handleUnread = useCallback(() => { - trackEvent('crt', 'filter_threads_by_unread'); - setFilter(ThreadFilter.unread); + setFilter(filter); }, [setFilter]); const handleLoadMoreItems = useCallback(async (startIndex) => { @@ -186,6 +186,23 @@ const ThreadList = ({ })); }, [handleAllMarkedRead]); + const {tabListProps, tabProps} = useTabs({ + activeTab: currentFilter, + setActiveTab: handleSetFilter, + tabs: [ + { + id: 'threads-list-filter-none', + name: ThreadFilter.none, + panelId: 'threads-list', + }, + { + id: 'threads-list-filter-unread', + name: ThreadFilter.unread, + panelId: 'threads-list', + }, + ], + }); + return (
+
- +
)} right={(
{children}