feat: Add pm

This commit is contained in:
2026-04-27 00:45:16 +02:00
parent bc2fa7de22
commit 11c2588e45
65 changed files with 3653 additions and 214 deletions

View File

@@ -301,12 +301,14 @@
@for (user of onlineRoomUsers(); track user.id) {
<div
class="group/user flex items-center gap-2 rounded-md px-3 py-2 transition-colors hover:bg-secondary/50 cursor-pointer"
[attr.data-testid]="'room-user-card-' + (user.oderId || user.id)"
role="button"
tabindex="0"
(contextmenu)="openUserContextMenu($event, user)"
(click)="openProfileCard($event, user, false); $event.stopPropagation()"
(keydown.enter)="openProfileCard($event, user, false); $event.stopPropagation()"
(keydown.space)="openProfileCard($event, user, false); $event.preventDefault(); $event.stopPropagation()"
(click)="openUserCard($event, user)"
(dblclick)="openDirectMessage($event, user)"
(keydown.enter)="openUserCard($event, user)"
(keydown.space)="openUserCard($event, user); $event.preventDefault()"
>
<app-user-avatar
[name]="user.displayName"
@@ -350,6 +352,19 @@
}
</div>
</div>
<button
type="button"
class="grid h-7 w-7 shrink-0 place-items-center rounded-md text-muted-foreground opacity-0 transition-colors hover:bg-card hover:text-foreground group-hover/user:opacity-100 focus:opacity-100"
title="Message"
[attr.aria-label]="'Message ' + user.displayName"
(click)="openDirectMessage($event, user)"
(dblclick)="$event.stopPropagation()"
>
<ng-icon
name="lucideMessageSquare"
class="h-4 w-4"
/>
</button>
</div>
}
</div>
@@ -363,12 +378,14 @@
<div class="space-y-1">
@for (member of offlineRoomMembers(); track member.oderId || member.id) {
<div
class="flex items-center gap-2 rounded-md px-3 py-2 opacity-80 hover:bg-secondary/30 transition-colors cursor-pointer"
class="group/user flex items-center gap-2 rounded-md px-3 py-2 opacity-80 hover:bg-secondary/30 transition-colors cursor-pointer"
[attr.data-testid]="'room-user-card-' + (member.oderId || member.id)"
role="button"
tabindex="0"
(click)="openProfileCardForMember($event, member); $event.stopPropagation()"
(keydown.enter)="openProfileCardForMember($event, member); $event.stopPropagation()"
(keydown.space)="openProfileCardForMember($event, member); $event.preventDefault(); $event.stopPropagation()"
(click)="openMemberCard($event, member)"
(dblclick)="openDirectMessageForMember($event, member)"
(keydown.enter)="openMemberCard($event, member)"
(keydown.space)="openMemberCard($event, member); $event.preventDefault()"
>
<app-user-avatar
[name]="member.displayName"
@@ -390,6 +407,19 @@
</div>
<p class="text-[10px] text-muted-foreground">Offline</p>
</div>
<button
type="button"
class="grid h-7 w-7 shrink-0 place-items-center rounded-md text-muted-foreground opacity-0 transition-colors hover:bg-card hover:text-foreground group-hover/user:opacity-100 focus:opacity-100"
title="Message"
[attr.aria-label]="'Message ' + member.displayName"
(click)="openDirectMessageForMember($event, member)"
(dblclick)="$event.stopPropagation()"
>
<ng-icon
name="lucideMessageSquare"
class="h-4 w-4"
/>
</button>
</div>
}
</div>