mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-16 01:40:15 +08:00
fix(dashboard): Vuetify 4 compatibility fixes
- Replace deprecated v-chip-text with span (PersonaForm) - Replace deprecated v-tab-item with v-window-item (ExtensionPage, InstalledPluginsTab, MarketPluginsTab) - Replace deprecated v-row dense with density="compact" (SessionManagementPage, InstalledPluginsTab) - Add missing hasUnsavedChanges field to ConfigPage data() - Add missing i18n key editPersona (en-US, zh-CN) Fixes multiple Vue warnings about failed component resolution and deprecated Vuetify props.
This commit is contained in:
@@ -138,9 +138,9 @@
|
||||
>
|
||||
<v-icon start size="small"> mdi-server </v-icon>
|
||||
{{ server.name }}
|
||||
<v-chip-text v-if="server.tools" class="ml-1">
|
||||
<span v-if="server.tools" class="ml-1">
|
||||
({{ server.tools.length }})
|
||||
</v-chip-text>
|
||||
</span>
|
||||
</v-chip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
"confirmSelection": "Confirm Selection",
|
||||
"selectPersonaPool": "Select Persona Pool...",
|
||||
"rootFolder": "All Personas",
|
||||
"editPersona": "Edit Persona",
|
||||
"emptyFolder": "This folder is empty"
|
||||
},
|
||||
"personaQuickPreview": {
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
"confirmSelection": "确认选择",
|
||||
"selectPersonaPool": "选择人格池...",
|
||||
"rootFolder": "全部人格",
|
||||
"editPersona": "编辑人格",
|
||||
"emptyFolder": "此文件夹为空"
|
||||
},
|
||||
"personaQuickPreview": {
|
||||
|
||||
@@ -441,6 +441,7 @@ export default {
|
||||
// 未保存的更改状态
|
||||
// 存储原始配置
|
||||
originalConfigData: null,
|
||||
hasUnsavedChanges: false,
|
||||
};
|
||||
},
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ const {
|
||||
<InstalledPluginsTab :state="pageState" />
|
||||
|
||||
<!-- 指令面板标签页内容 -->
|
||||
<v-tab-item v-show="activeTab === 'components'">
|
||||
<v-window-item v-show="activeTab === 'components'">
|
||||
<div class="mb-4 pt-4 pb-4">
|
||||
<div class="d-flex align-center flex-wrap" style="gap: 12px">
|
||||
<h2 class="text-h2 mb-0">{{ tm("tabs.handlersOperation") }}</h2>
|
||||
@@ -177,10 +177,10 @@ const {
|
||||
<ComponentPanel :active="activeTab === 'components'" />
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
</v-tab-item>
|
||||
</v-window-item>
|
||||
|
||||
<!-- 已安装的 MCP 服务器标签页内容 -->
|
||||
<v-tab-item v-show="activeTab === 'mcp'">
|
||||
<v-window-item v-show="activeTab === 'mcp'">
|
||||
<div class="mb-4 pt-4 pb-4">
|
||||
<div class="d-flex align-center flex-wrap" style="gap: 12px">
|
||||
<h2 class="text-h2 mb-0">
|
||||
@@ -197,10 +197,10 @@ const {
|
||||
<McpServersSection />
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
</v-tab-item>
|
||||
</v-window-item>
|
||||
|
||||
<!-- Skills 标签页内容 -->
|
||||
<v-tab-item v-show="activeTab === 'skills'">
|
||||
<v-window-item v-show="activeTab === 'skills'">
|
||||
<div class="mb-4 pt-4 pb-4">
|
||||
<div class="d-flex align-center flex-wrap" style="gap: 12px">
|
||||
<h2 class="text-h2 mb-0">{{ tm("tabs.skills") }}</h2>
|
||||
@@ -215,7 +215,7 @@ const {
|
||||
<SkillsSection />
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
</v-tab-item>
|
||||
</v-window-item>
|
||||
|
||||
<!-- 插件市场标签页内容 -->
|
||||
<MarketPluginsTab :state="pageState" />
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<v-chip size="small" class="ml-1"
|
||||
>{{ totalItems }} {{ tm("customRules.rulesCount") }}</v-chip
|
||||
>
|
||||
<v-row class="me-4 ms-4" dense>
|
||||
<v-row class="me-4 ms-4" density="compact">
|
||||
<v-text-field
|
||||
v-model="searchQuery"
|
||||
prepend-inner-icon="mdi-magnify"
|
||||
@@ -241,7 +241,7 @@
|
||||
</v-chip>
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
<v-row dense>
|
||||
<v-row density="compact">
|
||||
<v-col cols="12" md="6" lg="3">
|
||||
<v-select
|
||||
v-model="batchScope"
|
||||
@@ -302,7 +302,7 @@
|
||||
</v-select>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row dense class="mt-3">
|
||||
<v-row density="compact" class="mt-3">
|
||||
<v-col cols="12" class="d-flex justify-end">
|
||||
<v-btn
|
||||
color="primary"
|
||||
@@ -370,7 +370,7 @@
|
||||
</v-btn>
|
||||
</v-card-title>
|
||||
<v-card-text v-if="groups.length > 0">
|
||||
<v-row dense>
|
||||
<v-row density="compact">
|
||||
<v-col
|
||||
v-for="group in groups"
|
||||
:key="group.id"
|
||||
@@ -440,7 +440,7 @@
|
||||
hide-details
|
||||
class="mb-4"
|
||||
></v-text-field>
|
||||
<v-row dense>
|
||||
<v-row density="compact">
|
||||
<!-- 左侧:可选会话 -->
|
||||
<v-col cols="5">
|
||||
<div class="text-subtitle-2 mb-2">
|
||||
@@ -650,7 +650,7 @@
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<v-row dense>
|
||||
<v-row density="compact">
|
||||
<v-col cols="12">
|
||||
<v-checkbox
|
||||
v-model="serviceConfig.session_enabled"
|
||||
@@ -707,7 +707,7 @@
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<v-row dense>
|
||||
<v-row density="compact">
|
||||
<v-col cols="12">
|
||||
<v-select
|
||||
v-model="providerConfig.chat_completion"
|
||||
@@ -767,7 +767,7 @@
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<v-row dense>
|
||||
<v-row density="compact">
|
||||
<v-col cols="12">
|
||||
<v-select
|
||||
v-model="serviceConfig.persona_id"
|
||||
@@ -812,7 +812,7 @@
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<v-row dense>
|
||||
<v-row density="compact">
|
||||
<v-col cols="12">
|
||||
<v-select
|
||||
v-model="pluginConfig.disabled_plugins"
|
||||
@@ -860,7 +860,7 @@
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<v-row dense>
|
||||
<v-row density="compact">
|
||||
<v-col cols="12">
|
||||
<v-select
|
||||
v-model="kbConfig.kb_ids"
|
||||
|
||||
@@ -268,7 +268,7 @@ const pinnedPlugins = computed(() => {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<v-tab-item v-show="activeTab === 'installed'">
|
||||
<v-window-item v-show="activeTab === 'installed'">
|
||||
<div class="mb-4 pt-4 pb-4">
|
||||
<div class="d-flex align-center flex-wrap" style="gap: 12px">
|
||||
<h2 class="text-h2 mb-0">{{ tm("titles.installedAstrBotPlugins") }}</h2>
|
||||
@@ -371,7 +371,7 @@ const pinnedPlugins = computed(() => {
|
||||
<h3 class="text-h6 mb-0">{{ tm("titles.pinnedPlugins") }}</h3>
|
||||
</div>
|
||||
|
||||
<v-row class="mt-3 relative" dense align="center" style="gap: 12px">
|
||||
<v-row class="mt-3 relative" density="compact" align="center" style="gap: 12px">
|
||||
<template v-if="!pinnedPlugins || pinnedPlugins.length === 0">
|
||||
<v-col v-for="n in 4" :key="n" cols="auto" />
|
||||
</template>
|
||||
@@ -849,7 +849,7 @@ const pinnedPlugins = computed(() => {
|
||||
</button>
|
||||
</template>
|
||||
</v-tooltip>
|
||||
</v-tab-item>
|
||||
</v-window-item>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
|
||||
@@ -180,7 +180,7 @@ const marketCategorySelectItems = computed(() =>
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<v-tab-item v-show="activeTab === 'market'">
|
||||
<v-window-item v-show="activeTab === 'market'">
|
||||
<div class="mb-6 pt-4 pb-4">
|
||||
<div class="d-flex align-center" style="gap: 12px">
|
||||
<div class="d-flex align-center" style="gap: 12px; min-width: 0">
|
||||
@@ -393,7 +393,7 @@ const marketCategorySelectItems = computed(() =>
|
||||
</div>
|
||||
</v-expand-transition>
|
||||
</div>
|
||||
</v-tab-item>
|
||||
</v-window-item>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
|
||||
Reference in New Issue
Block a user