feat(terminal): 右侧服务器列表增加搜索
侧栏复用 PickerSearch,按名称/域名筛选并支持搜索历史。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,16 @@
|
|||||||
|
# 终端页右侧服务器列表搜索
|
||||||
|
|
||||||
|
**日期**: 2026-06-12
|
||||||
|
|
||||||
|
## 变更摘要
|
||||||
|
|
||||||
|
终端页右侧服务器栏增加与空态/弹窗一致的搜索框,支持按名称、域名筛选及搜索历史。
|
||||||
|
|
||||||
|
## 涉及文件
|
||||||
|
|
||||||
|
- `frontend/src/components/terminal/TerminalServerPicker.vue`
|
||||||
|
- `frontend/src/pages/TerminalPage.vue`
|
||||||
|
|
||||||
|
## 验证
|
||||||
|
|
||||||
|
`npm run type-check`;终端页右侧输入关键词,列表实时过滤。
|
||||||
@@ -4,24 +4,17 @@
|
|||||||
服务器
|
服务器
|
||||||
<span class="text-caption text-medium-emphasis ml-1">({{ servers.length }})</span>
|
<span class="text-caption text-medium-emphasis ml-1">({{ servers.length }})</span>
|
||||||
</div>
|
</div>
|
||||||
<v-skeleton-loader v-if="loading" type="list-item@8" class="px-2 pt-2" />
|
<div class="terminal-server-rail__search px-2 pt-2 pb-1">
|
||||||
<v-list v-else density="compact" nav class="terminal-server-rail__list flex-grow-1 py-0">
|
<PickerSearch
|
||||||
<v-list-item
|
:search="search"
|
||||||
v-for="s in servers"
|
:search-history="searchHistory"
|
||||||
:key="s.id"
|
@update:search="$emit('update:search', $event)"
|
||||||
rounded="lg"
|
@search-commit="$emit('search-commit')"
|
||||||
class="mb-1"
|
/>
|
||||||
@click="$emit('select', s.id)"
|
</div>
|
||||||
>
|
<v-skeleton-loader v-if="loading" type="list-item@8" class="px-2 pt-1" />
|
||||||
<template #prepend>
|
<v-list v-else density="compact" nav class="terminal-server-rail__list flex-grow-1 py-0 px-2">
|
||||||
<v-icon :color="s.is_online ? 'success' : 'grey'" size="8">mdi-circle</v-icon>
|
<PickerListItems :servers="servers" @select="$emit('select', $event)" />
|
||||||
</template>
|
|
||||||
<v-list-item-title class="text-body-2 text-truncate" :title="s.name">{{ s.name }}</v-list-item-title>
|
|
||||||
<v-list-item-subtitle class="text-truncate" :title="s.domain">{{ s.domain }}</v-list-item-subtitle>
|
|
||||||
</v-list-item>
|
|
||||||
<v-list-item v-if="servers.length === 0" class="text-medium-emphasis">
|
|
||||||
暂无匹配的服务器
|
|
||||||
</v-list-item>
|
|
||||||
</v-list>
|
</v-list>
|
||||||
</aside>
|
</aside>
|
||||||
|
|
||||||
|
|||||||
@@ -101,7 +101,11 @@
|
|||||||
<TerminalServerPicker
|
<TerminalServerPicker
|
||||||
mode="sidebar"
|
mode="sidebar"
|
||||||
:servers="filteredServers"
|
:servers="filteredServers"
|
||||||
|
:search="serverSearch"
|
||||||
|
:search-history="terminalSearchHistory"
|
||||||
:loading="serversLoading"
|
:loading="serversLoading"
|
||||||
|
@update:search="onServerSearchUpdate"
|
||||||
|
@search-commit="commitServerSearch"
|
||||||
@select="(id) => newSession(id)"
|
@select="(id) => newSession(id)"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user