Fix spotlight opening in TAC (#12315)
* Fix spotlight opening in TAC * Add tests * Remove `RovingTabIndexProvider`
This commit is contained in:
parent
70365c891b
commit
ddbc6439ce
4 changed files with 95 additions and 31 deletions
|
@ -32,6 +32,8 @@ import { useUnreadThreadRooms } from "./useUnreadThreadRooms";
|
|||
import { StatelessNotificationBadge } from "../../rooms/NotificationBadge/StatelessNotificationBadge";
|
||||
import { NotificationLevel } from "../../../../stores/notifications/NotificationLevel";
|
||||
import PosthogTrackers from "../../../../PosthogTrackers";
|
||||
import { getKeyBindingsManager } from "../../../../KeyBindingsManager";
|
||||
import { KeyBindingAction } from "../../../../accessibility/KeyboardShortcuts";
|
||||
|
||||
interface ThreadsActivityCentreProps {
|
||||
/**
|
||||
|
@ -49,41 +51,56 @@ export function ThreadsActivityCentre({ displayButtonLabel }: ThreadsActivityCen
|
|||
const roomsAndNotifications = useUnreadThreadRooms(open);
|
||||
|
||||
return (
|
||||
<Menu
|
||||
align="end"
|
||||
open={open}
|
||||
onOpenChange={(newOpen) => {
|
||||
// Track only when the Threads Activity Centre is opened
|
||||
if (newOpen) PosthogTrackers.trackInteraction("WebThreadsActivityCentreButton");
|
||||
<div
|
||||
className="mx_ThreadsActivityCentre_container"
|
||||
onKeyDown={(evt) => {
|
||||
// Do nothing if the TAC is closed
|
||||
if (!open) return;
|
||||
|
||||
setOpen(newOpen);
|
||||
const action = getKeyBindingsManager().getNavigationAction(evt);
|
||||
|
||||
// Block spotlight opening
|
||||
if (action === KeyBindingAction.FilterRooms) {
|
||||
evt.stopPropagation();
|
||||
}
|
||||
}}
|
||||
side="right"
|
||||
title={_t("threads_activity_centre|header")}
|
||||
trigger={
|
||||
<ThreadsActivityCentreButton
|
||||
displayLabel={displayButtonLabel}
|
||||
notificationLevel={roomsAndNotifications.greatestNotificationLevel}
|
||||
/>
|
||||
}
|
||||
>
|
||||
{/* Make the content of the pop-up scrollable */}
|
||||
<div className="mx_ThreadsActivity_rows">
|
||||
{roomsAndNotifications.rooms.map(({ room, notificationLevel }) => (
|
||||
<ThreadsActivityRow
|
||||
key={room.roomId}
|
||||
room={room}
|
||||
notificationLevel={notificationLevel}
|
||||
onClick={() => setOpen(false)}
|
||||
<Menu
|
||||
align="end"
|
||||
open={open}
|
||||
onOpenChange={(newOpen) => {
|
||||
// Track only when the Threads Activity Centre is opened
|
||||
if (newOpen) PosthogTrackers.trackInteraction("WebThreadsActivityCentreButton");
|
||||
|
||||
setOpen(newOpen);
|
||||
}}
|
||||
side="right"
|
||||
title={_t("threads_activity_centre|header")}
|
||||
trigger={
|
||||
<ThreadsActivityCentreButton
|
||||
displayLabel={displayButtonLabel}
|
||||
notificationLevel={roomsAndNotifications.greatestNotificationLevel}
|
||||
/>
|
||||
))}
|
||||
{roomsAndNotifications.rooms.length === 0 && (
|
||||
<div className="mx_ThreadsActivityCentre_emptyCaption">
|
||||
{_t("threads_activity_centre|no_rooms_with_unreads_threads")}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</Menu>
|
||||
}
|
||||
>
|
||||
{/* Make the content of the pop-up scrollable */}
|
||||
<div className="mx_ThreadsActivity_rows">
|
||||
{roomsAndNotifications.rooms.map(({ room, notificationLevel }) => (
|
||||
<ThreadsActivityRow
|
||||
key={room.roomId}
|
||||
room={room}
|
||||
notificationLevel={notificationLevel}
|
||||
onClick={() => setOpen(false)}
|
||||
/>
|
||||
))}
|
||||
{roomsAndNotifications.rooms.length === 0 && (
|
||||
<div className="mx_ThreadsActivityCentre_emptyCaption">
|
||||
{_t("threads_activity_centre|no_rooms_with_unreads_threads")}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</Menu>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue