fix: close plugin filter menus after selection

This commit is contained in:
jxxghp
2026-06-01 21:32:24 +08:00
parent a3ac46c891
commit d6b7b6d813
+45 -3
View File
@@ -222,6 +222,23 @@ function toggleMarketFilter(field: 'author' | 'label' | 'repo', value: string) {
} }
} }
// 关闭插件市场过滤菜单。
function closeMarketFilterMenu() {
filterMarketPluginDialog.value = false
}
// 选择插件市场排序项并关闭过滤菜单。
function selectMarketSort(value: string) {
activeSort.value = value
closeMarketFilterMenu()
}
// 提交插件市场关键字过滤并关闭过滤菜单。
function submitMarketNameFilter(event: KeyboardEvent) {
if (event.isComposing) return
closeMarketFilterMenu()
}
// 插件过滤条件 // 插件过滤条件
const installedFilter = ref(null) const installedFilter = ref(null)
@@ -237,6 +254,29 @@ const filterInstalledPluginDialog = ref(false)
// 插件市场过滤窗口 // 插件市场过滤窗口
const filterMarketPluginDialog = ref(false) const filterMarketPluginDialog = ref(false)
// 关闭已安装插件过滤菜单。
function closeInstalledFilterMenu() {
filterInstalledPluginDialog.value = false
}
// 切换已启用插件过滤条件并关闭过滤菜单。
function toggleEnabledInstalledFilter() {
enabledFilter.value = !enabledFilter.value
closeInstalledFilterMenu()
}
// 切换有新版本插件过滤条件并关闭过滤菜单。
function toggleHasUpdateInstalledFilter() {
hasUpdateFilter.value = !hasUpdateFilter.value
closeInstalledFilterMenu()
}
// 提交已安装插件关键字过滤并关闭过滤菜单。
function submitInstalledNameFilter(event: KeyboardEvent) {
if (event.isComposing) return
closeInstalledFilterMenu()
}
// 作者过滤项 // 作者过滤项
const authorFilterOptions = ref<string[]>([]) const authorFilterOptions = ref<string[]>([])
// 标签过滤项 // 标签过滤项
@@ -1480,13 +1520,14 @@ function onDragStartPlugin(evt: any) {
variant="outlined" variant="outlined"
hide-details hide-details
clearable clearable
@keyup.enter="submitInstalledNameFilter"
/> />
</div> </div>
<VDivider class="mt-2" /> <VDivider class="mt-2" />
<!-- 快捷筛选 --> <!-- 快捷筛选 -->
<VList density="compact" class="px-2 py-1"> <VList density="compact" class="px-2 py-1">
<VListSubheader>{{ t('common.filter') }}</VListSubheader> <VListSubheader>{{ t('common.filter') }}</VListSubheader>
<VListItem :active="enabledFilter" @click="enabledFilter = !enabledFilter" density="compact"> <VListItem :active="enabledFilter" @click="toggleEnabledInstalledFilter" density="compact">
<template #prepend> <template #prepend>
<VIcon icon="mdi-play-circle" color="success" size="small" /> <VIcon icon="mdi-play-circle" color="success" size="small" />
</template> </template>
@@ -1495,7 +1536,7 @@ function onDragStartPlugin(evt: any) {
<VIcon v-if="enabledFilter" icon="mdi-check" color="primary" size="small" /> <VIcon v-if="enabledFilter" icon="mdi-check" color="primary" size="small" />
</template> </template>
</VListItem> </VListItem>
<VListItem :active="hasUpdateFilter" @click="hasUpdateFilter = !hasUpdateFilter" density="compact"> <VListItem :active="hasUpdateFilter" @click="toggleHasUpdateInstalledFilter" density="compact">
<template #prepend> <template #prepend>
<VIcon icon="mdi-arrow-up-circle" color="info" size="small" /> <VIcon icon="mdi-arrow-up-circle" color="info" size="small" />
</template> </template>
@@ -1528,6 +1569,7 @@ function onDragStartPlugin(evt: any) {
variant="outlined" variant="outlined"
hide-details hide-details
clearable clearable
@keyup.enter="submitMarketNameFilter"
/> />
</div> </div>
<VDivider class="mt-2" /> <VDivider class="mt-2" />
@@ -1538,7 +1580,7 @@ function onDragStartPlugin(evt: any) {
v-for="option in sortOptions" v-for="option in sortOptions"
:key="option.value" :key="option.value"
:active="(activeSort || 'count') === option.value" :active="(activeSort || 'count') === option.value"
@click="activeSort = option.value" @click="selectMarketSort(option.value)"
density="compact" density="compact"
> >
<VListItemTitle>{{ option.title }}</VListItemTitle> <VListItemTitle>{{ option.title }}</VListItemTitle>