频道筛选框从 topbar 移至聊天卡片内,ChatPanel v-model:channelFilter 双向绑定

This commit is contained in:
2026-08-07 19:31:33 +08:00
parent 4ce341208b
commit d2b5832df3
3 files changed
+66 -14

No files matched your search

@@ -9,6 +9,7 @@ const props = defineProps<{
loadingOlder: boolean
hasMoreMessages: boolean
isAdmin: boolean
channelFilter: string
}>()
type GroupedTextMessage = TextMessage & { mergedCount: number; mergedMessages: TextMessage[] }
@@ -18,6 +19,7 @@ const emit = defineEmits<{
'load-older': []
'delete-message': [message: GroupedTextMessage]
'delete-and-block-node': [payload: { nodeId: string; nodeNum: number | null; message: GroupedTextMessage }]
'update:channelFilter': [value: string]
}>()
const panelRef = ref<HTMLElement | null>(null)
@@ -192,6 +194,22 @@ onUpdated(() => {
<span class="badge">{{ groupedMessages.length }}</span>
</div>
<div class="chat-filter">
<input
type="search"
class="chat-filter-input"
:value="channelFilter"
placeholder="筛选频道"
@input="emit('update:channelFilter', ($event.target as HTMLInputElement).value)"
/>
<button
v-if="channelFilter.trim()"
type="button"
class="chat-filter-clear"
@click="emit('update:channelFilter', '')"
>清除</button>
</div>
<div v-if="loadingOlder" class="chat-loading">正在加载更早消息...</div>
<div v-else-if="!hasMoreMessages && messages.length > 0" class="chat-end">没有更多历史消息</div>
<div v-if="messages.length === 0" class="empty">暂无聊天消息</div>