diff --git a/packages/client/src/components/chat/MessageDropdown.svelte b/packages/client/src/components/chat/MessageDropdown.svelte new file mode 100644 index 0000000..41a37f8 --- /dev/null +++ b/packages/client/src/components/chat/MessageDropdown.svelte @@ -0,0 +1,16 @@ + + +{#if visible} +
+ {@render children()} +
+{/if} diff --git a/packages/client/src/components/chat/MessageList.svelte b/packages/client/src/components/chat/MessageList.svelte index 71398bf..214b1ca 100644 --- a/packages/client/src/components/chat/MessageList.svelte +++ b/packages/client/src/components/chat/MessageList.svelte @@ -3,6 +3,7 @@ import type { Doc } from "@packages/convex/src/convex/_generated/dataModel"; import { useQuery } from "convex-svelte"; import { onMount } from "svelte"; + import MessageDropdown from "./MessageDropdown.svelte"; interface Props { channelId: Id<"channels">; @@ -43,46 +44,82 @@ onMount(() => { scrollToBottom(); }); + + let clientX = $state(0); + let clientY = $state(0); + let visibleDropdown = $state | null>(null); + document.addEventListener("click", () => { + visibleDropdown = null; + });
{#if messages.data} {#each messages.data as message (message._id)} - {#if message.parentId && messages.data.find((m) => m._id === message.parentId)} -
- 返信 - {messagesById.get(message.parentId)?.author} - - {messagesById.get(message.parentId)?.content} - -
- {/if} -
-
- {message.author} - - {formatTime(message.createdAt)} - -
-
- {message.content} -
-
-