forked from kevin/meshtastic_mqtt_server
频道筛选框从 topbar 移至聊天卡片内,ChatPanel v-model:channelFilter 双向绑定
This commit is contained in:
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>
|
||||
|
||||
Reference in New Issue
Block a user