Skip to content

Commit 81479b5

Browse files
authored
Merge pull request #53 from widgetbot-io/refactor/user-click-ref
[FR-252] Pass clicked element to userOnClick callback
2 parents f3b81ba + e283e0f commit 81479b5

File tree

4 files changed

+16
-6
lines changed

4 files changed

+16
-6
lines changed

src/Message/MessageAuthor.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ function MessageAuthor({
101101
<Styles.MessageAuthor
102102
clickable={userOnClick !== undefined}
103103
{...props}
104-
onClick={() => userOnClick?.(author)}
104+
onClick={(e) => userOnClick?.(author, e.currentTarget)}
105105
>
106106
<Styles.Username style={{ color: dominantRoleColor }}>
107107
{displayName}
@@ -114,7 +114,7 @@ function MessageAuthor({
114114
<Styles.MessageAuthor
115115
clickable={userOnClick !== undefined}
116116
{...props}
117-
onClick={() => userOnClick?.(author)}
117+
onClick={(e) => userOnClick?.(author, e.currentTarget)}
118118
>
119119
<Styles.AnimatedAvatarTrigger
120120
data-is-animated={animatedAvatarUrl !== undefined}

src/core/ConfigContext.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export type Config<SvgConfig extends PartialSvgConfig> = {
5454
// Click handlers
5555
currentUser(): APIUser | null;
5656
seeThreadOnClick?(messageId: Snowflake, thread: APIChannel): void;
57-
userOnClick?(user: APIUser): void;
57+
userOnClick?(user: APIUser, element: EventTarget & HTMLSpanElement): void;
5858
roleMentionOnClick?(role: APIRole): void;
5959
channelMentionOnClick?(channel: APIChannel): void;
6060
openPinnedMessagesOnClick?(channel: APIChannel): void;

src/markdown/render/elements/mentions/userMention.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ function UserMention({ userId }: UserMentionProps) {
1818

1919
return (
2020
<Styles.Mention
21-
onClick={() => {
22-
if (user !== null) userOnClick?.(user);
21+
onClick={(e) => {
22+
if (user !== null) userOnClick?.(user, e.currentTarget);
2323
}}
2424
canBeClicked={userOnClick !== undefined}
2525
>

src/stories/Wrapper.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,17 @@ const Wrapper: Decorator = (Story) => {
392392
seeThreadOnClick={(messageId, thread) =>
393393
alert(`See Thread "${thread.name}" clicked on message ${messageId}`)
394394
}
395-
userOnClick={(user) => alert(`User "${getDisplayName(user)}" clicked!`)}
395+
userOnClick={(user, el) => {
396+
const elPos = el.getBoundingClientRect();
397+
398+
return alert(
399+
`User "${getDisplayName(
400+
user
401+
)}" clicked! \nClicked Position: X - ${Math.floor(
402+
elPos.left
403+
)} Y - ${Math.floor(elPos.top)}`
404+
);
405+
}}
396406
roleMentionOnClick={(role) =>
397407
alert(`Role "${role.name}" mention clicked!`)
398408
}

0 commit comments

Comments
 (0)