Use tooltip compound in `ReadReceiptPerson` component

pull/28217/head
Florian Duros 2024-05-22 09:29:54 +02:00
parent dbe00e5889
commit 25fa1238ec
No known key found for this signature in database
GPG Key ID: A5BBB4041B493F15
1 changed files with 32 additions and 47 deletions

View File

@ -23,12 +23,10 @@ import { IReadReceiptProps } from "./EventTile";
import AccessibleButton from "../elements/AccessibleButton"; import AccessibleButton from "../elements/AccessibleButton";
import MemberAvatar from "../avatars/MemberAvatar"; import MemberAvatar from "../avatars/MemberAvatar";
import AutoHideScrollbar from "../../structures/AutoHideScrollbar"; import AutoHideScrollbar from "../../structures/AutoHideScrollbar";
import { Alignment } from "../elements/Tooltip";
import { formatDate } from "../../../DateUtils"; import { formatDate } from "../../../DateUtils";
import { Action } from "../../../dispatcher/actions"; import { Action } from "../../../dispatcher/actions";
import dis from "../../../dispatcher/dispatcher"; import dis from "../../../dispatcher/dispatcher";
import ContextMenu, { aboveLeftOf, MenuItem, useContextMenu } from "../../structures/ContextMenu"; import ContextMenu, { aboveLeftOf, MenuItem, useContextMenu } from "../../structures/ContextMenu";
import { useTooltip } from "../../../utils/useTooltip";
import { _t } from "../../../languageHandler"; import { _t } from "../../../languageHandler";
import { useRovingTabIndex } from "../../../accessibility/RovingTabIndex"; import { useRovingTabIndex } from "../../../accessibility/RovingTabIndex";
import { formatList } from "../../../utils/FormattingUtils"; import { formatList } from "../../../utils/FormattingUtils";
@ -219,53 +217,40 @@ function ReadReceiptPerson({
isTwelveHour, isTwelveHour,
onAfterClick, onAfterClick,
}: ReadReceiptPersonProps): JSX.Element { }: ReadReceiptPersonProps): JSX.Element {
const [{ showTooltip, hideTooltip }, tooltip] = useTooltip({
alignment: Alignment.Top,
tooltipClassName: "mx_ReadReceiptGroup_person--tooltip",
label: (
<>
<div className="mx_Tooltip_title">{roomMember?.rawDisplayName ?? userId}</div>
<div className="mx_Tooltip_sub">{userId}</div>
</>
),
});
return ( return (
<MenuItem <Tooltip label={roomMember?.rawDisplayName ?? userId} caption={userId} placement="top">
className="mx_ReadReceiptGroup_person" <div>
onClick={() => { <MenuItem
dis.dispatch({ className="mx_ReadReceiptGroup_person"
action: Action.ViewUser, onClick={() => {
// XXX: We should be using a real member object and not assuming what the receiver wants. dis.dispatch({
// The ViewUser action leads to the RightPanelStore, and RightPanelStoreIPanelState defines the action: Action.ViewUser,
// member property of IRightPanelCardState as `RoomMember | User`, so were fine for now, but we // XXX: We should be using a real member object and not assuming what the receiver wants.
// should definitely clean this up later // The ViewUser action leads to the RightPanelStore, and RightPanelStoreIPanelState defines the
member: roomMember ?? ({ userId } as User), // member property of IRightPanelCardState as `RoomMember | User`, so were fine for now, but we
push: false, // should definitely clean this up later
}); member: roomMember ?? ({ userId } as User),
onAfterClick?.(); push: false,
}} });
onMouseOver={showTooltip} onAfterClick?.();
onMouseLeave={hideTooltip} }}
onFocus={showTooltip} >
onBlur={hideTooltip} <MemberAvatar
onWheel={hideTooltip} member={roomMember}
> fallbackUserId={userId}
<MemberAvatar size="24px"
member={roomMember} aria-hidden="true"
fallbackUserId={userId} aria-live="off"
size="24px" resizeMethod="crop"
aria-hidden="true" hideTitle
aria-live="off" />
resizeMethod="crop" <div className="mx_ReadReceiptGroup_name">
hideTitle <p>{roomMember?.name ?? userId}</p>
/> <p className="mx_ReadReceiptGroup_secondary">{formatDate(new Date(ts), isTwelveHour)}</p>
<div className="mx_ReadReceiptGroup_name"> </div>
<p>{roomMember?.name ?? userId}</p> </MenuItem>
<p className="mx_ReadReceiptGroup_secondary">{formatDate(new Date(ts), isTwelveHour)}</p>
</div> </div>
{tooltip} </Tooltip>
</MenuItem>
); );
} }