mirror of
https://github.com/modrinth/code.git
synced 2026-08-31 12:05:53 +00:00
feat: click on friends
This commit is contained in:
@@ -123,45 +123,46 @@ const messages = defineMessages({
|
|||||||
<div
|
<div
|
||||||
v-for="friend in friends"
|
v-for="friend in friends"
|
||||||
:key="friend.username"
|
:key="friend.username"
|
||||||
class="group grid items-center grid-cols-[auto_1fr_auto] gap-2 hover:bg-button-bg transition-colors rounded-full mr-1"
|
class="group grid items-center grid-cols-[1fr_auto] gap-2 hover:bg-button-bg transition-colors rounded-full mr-1"
|
||||||
@contextmenu.prevent.stop="
|
@contextmenu.prevent.stop="
|
||||||
(event) => friendOptions?.showMenu(event, friend, createContextMenuOptions(friend))
|
(event) => friendOptions?.showMenu(event, friend, createContextMenuOptions(friend))
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<div class="relative">
|
<RouterLink
|
||||||
<Avatar
|
:to="`/user/${encodeURIComponent(friend.username)}`"
|
||||||
:src="friend.avatar"
|
class="grid min-w-0 grid-cols-[auto_1fr] items-center gap-2 text-inherit no-underline"
|
||||||
:class="{ grayscale: !friend.online && friend.accepted }"
|
>
|
||||||
class="w-12 h-12 rounded-full"
|
<div class="relative">
|
||||||
size="32px"
|
<Avatar
|
||||||
circle
|
:src="friend.avatar"
|
||||||
/>
|
:class="{ grayscale: !friend.online && friend.accepted }"
|
||||||
<span
|
class="w-12 h-12 rounded-full"
|
||||||
v-if="friend.online"
|
size="32px"
|
||||||
aria-hidden="true"
|
circle
|
||||||
class="bottom-[2px] right-[-2px] absolute w-3 h-3 bg-brand border-2 border-black border-solid rounded-full"
|
/>
|
||||||
/>
|
<span
|
||||||
</div>
|
v-if="friend.online"
|
||||||
<div class="flex flex-col">
|
aria-hidden="true"
|
||||||
<span
|
class="bottom-[2px] right-[-2px] absolute w-3 h-3 bg-brand border-2 border-black border-solid rounded-full"
|
||||||
class="text-sm m-0"
|
/>
|
||||||
:class="friend.online || !friend.accepted ? 'text-contrast' : 'text-primary'"
|
</div>
|
||||||
>
|
<div class="flex flex-col">
|
||||||
{{ friend.username }}
|
<span
|
||||||
</span>
|
class="text-sm m-0"
|
||||||
<span v-if="!friend.accepted" class="m-0 text-xs">
|
:class="friend.online || !friend.accepted ? 'text-contrast' : 'text-primary'"
|
||||||
{{ formatMessage(messages.friendRequestSent) }}
|
>
|
||||||
</span>
|
{{ friend.username }}
|
||||||
<span v-else-if="friend.status" class="m-0 text-xs">{{ friend.status }}</span>
|
</span>
|
||||||
</div>
|
<span v-if="!friend.accepted" class="m-0 text-xs">
|
||||||
|
{{ formatMessage(messages.friendRequestSent) }}
|
||||||
|
</span>
|
||||||
|
<span v-else-if="friend.status" class="m-0 text-xs">{{ friend.status }}</span>
|
||||||
|
</div>
|
||||||
|
</RouterLink>
|
||||||
<ButtonStyled v-if="friend.accepted" circular type="transparent">
|
<ButtonStyled v-if="friend.accepted" circular type="transparent">
|
||||||
<OverflowMenu
|
<OverflowMenu
|
||||||
class="opacity-0 group-hover:opacity-100 transition-opacity"
|
class="opacity-0 group-hover:opacity-100 transition-opacity"
|
||||||
:options="[
|
:options="[
|
||||||
{
|
|
||||||
id: 'view-profile',
|
|
||||||
action: () => openProfile(friend.username),
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: 'remove-friend',
|
id: 'remove-friend',
|
||||||
action: () => removeFriend(friend),
|
action: () => removeFriend(friend),
|
||||||
@@ -170,10 +171,6 @@ const messages = defineMessages({
|
|||||||
]"
|
]"
|
||||||
>
|
>
|
||||||
<MoreVerticalIcon />
|
<MoreVerticalIcon />
|
||||||
<template #view-profile>
|
|
||||||
<UserIcon />
|
|
||||||
{{ formatMessage(messages.viewProfile) }}
|
|
||||||
</template>
|
|
||||||
<template #remove-friend>
|
<template #remove-friend>
|
||||||
<TrashIcon />
|
<TrashIcon />
|
||||||
{{ formatMessage(messages.removeFriend) }}
|
{{ formatMessage(messages.removeFriend) }}
|
||||||
|
|||||||
Reference in New Issue
Block a user