diff --git a/src/locales/en-US.ts b/src/locales/en-US.ts index c8be7abc..b33830ca 100644 --- a/src/locales/en-US.ts +++ b/src/locales/en-US.ts @@ -727,6 +727,8 @@ export default { filterResolution: 'Resolution', filterReleaseGroup: 'Release Group', noMatchingResults: 'No matching data', + allFilters: 'All Filters', + clearAll: 'Clear All', }, calendar: { episode: 'Episode {number}', @@ -1120,7 +1122,7 @@ export default { channelsDesc: 'Set message sending channel parameters.', organizeSuccess: 'Media Import', downloadAdded: 'Download Added', - subscribeAdded: 'Subscribe Added', + subscribeAdded: 'Subscribe Added', subscribeComplete: 'Subscribe Complete', templateConfigTitle: 'Message Template', templateConfigDesc: 'Set message template, support Jinja2 syntax.', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index e3de9dd0..333e2574 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -724,6 +724,8 @@ export default { filterResolution: '分辨率', filterReleaseGroup: '制作组', noMatchingResults: '没有数据', + allFilters: '综合筛选', + clearAll: '清除全部', }, calendar: { episode: '第{number}集', diff --git a/src/locales/zh-TW.ts b/src/locales/zh-TW.ts index 30ded1a7..2bd50266 100644 --- a/src/locales/zh-TW.ts +++ b/src/locales/zh-TW.ts @@ -725,6 +725,8 @@ export default { filterResolution: '分辨率', filterReleaseGroup: '製作組', noMatchingResults: '沒有數據', + allFilters: '綜合篩選', + clearAll: '清除全部', }, calendar: { episode: '第{number}集', diff --git a/src/views/torrent/TorrentCardListView.vue b/src/views/torrent/TorrentCardListView.vue index 21c28b93..07dd3564 100644 --- a/src/views/torrent/TorrentCardListView.vue +++ b/src/views/torrent/TorrentCardListView.vue @@ -78,10 +78,9 @@ const groupedDataList = ref>() // 过滤菜单相关 const filterMenuOpen = ref(false) const currentFilter = ref('site') -const currentFilterTitle = computed(() => filterTitles[currentFilter.value]) -const currentFilterOptions = computed(() => { - return filterOptions[currentFilter.value] -}) + +// 添加全部筛选菜单相关 +const allFilterMenuOpen = ref(false) // 初始化过滤选项 function initOptions(data: Context) { @@ -303,6 +302,11 @@ function toggleFilterMenu(key: string) { } } +// 开关全部筛选菜单 +function toggleAllFilterMenu() { + allFilterMenuOpen.value = !allFilterMenuOpen.value +} + // 清除所有过滤条件 function clearAllFilters() { for (const key in filterForm) { @@ -432,6 +436,22 @@ function loadMore({ done }: { done: any }) { + + + {{ t('torrent.allFilters') }} + + {{ getFilterCount }} + + + - - + + + - - {{ currentFilterTitle }} + + {{ t('torrent.allFilters') }} - {{ t('torrent.clear') }} - - - {{ t('torrent.selectAll') }} + {{ t('torrent.clearAll') }} - - - +
+ - {{ option }} - - + + + {{ title }} + + + + + + {{ option }} + + + + +
- - - {{ t('torrent.confirm') }} -
@@ -633,6 +680,7 @@ function loadMore({ done }: { done: any }) { } .filter-menu-content { + max-block-size: 50vh; overflow-y: auto; } @@ -739,4 +787,14 @@ function loadMore({ done }: { done: any }) { background-color: rgba(var(--v-theme-background), 0.95); inset-block-start: 0; } + +.all-filters-grid { + display: grid; + gap: 24px; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); +} + +.filter-section { + background-color: rgba(var(--v-theme-surface-variant), 0.08); +} diff --git a/src/views/torrent/TorrentRowListView.vue b/src/views/torrent/TorrentRowListView.vue index 4d8482ff..83226e91 100644 --- a/src/views/torrent/TorrentRowListView.vue +++ b/src/views/torrent/TorrentRowListView.vue @@ -277,10 +277,17 @@ const filterMenuOpen = ref(false) const currentFilter = ref('site') const currentFilterTitle = computed(() => filterTitles[currentFilter.value]) const currentFilterOptions = computed(() => { - // 季集选项不再需要特殊处理,直接从 filterOptions 获取 return filterOptions[currentFilter.value] }) +// 添加全部筛选菜单相关 +const allFilterMenuOpen = ref(false) + +// 开关全部筛选菜单 +function toggleAllFilterMenu() { + allFilterMenuOpen.value = !allFilterMenuOpen.value +} + // 给定过滤类型返回不同图标 function getFilterIcon(key: string) { const icons: Record = { @@ -361,6 +368,7 @@ onMounted(() => { >
+ { + + + {{ t('torrent.allFilters') }} + + {{ getFilterCount }} + + + { class="search-count me-auto" prepend-icon="mdi-magnify" > - {{ props.items?.length || 0 }} 个资源 + {{ props.items?.length || 0 }} {{ t('torrent.resources') }} @@ -482,6 +506,22 @@ onMounted(() => {
+ + + + + {{ t('torrent.allFilters') }} + + + + {
+ + + + + + + {{ t('torrent.allFilters') }} + + + {{ t('torrent.clearAll') }} + + + + +
+ + + + {{ title }} + + + + + + {{ option }} + + + + +
+
+
+
+ @@ -522,12 +632,14 @@ onMounted(() => { color="error" @click="clearFilter(currentFilter)" > - 清除 + {{ t('torrent.clear') }} +
+ + {{ t('torrent.selectAll') }} - 全选 - + { - {{ t('torrent.confirm') }} + + {{ t('torrent.confirm') }} +
@@ -729,4 +843,14 @@ onMounted(() => { max-inline-size: 130px; min-inline-size: 110px; } + +.all-filters-grid { + display: grid; + gap: 24px; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); +} + +.filter-section { + background-color: rgba(var(--v-theme-surface-variant), 0.08); +}