mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-09-05 23:56:42 +08:00
Merge pull request #384 from Aqr-K/feat-v2.7.8-filelist-case-insensitive
This commit is contained in:
@@ -82,6 +82,9 @@ const items = ref<FileItem[]>([])
|
|||||||
// 过滤条件
|
// 过滤条件
|
||||||
const filter = ref('')
|
const filter = ref('')
|
||||||
|
|
||||||
|
// 是否忽略大小写
|
||||||
|
const ignoreCase = ref(true)
|
||||||
|
|
||||||
// 重命名弹窗
|
// 重命名弹窗
|
||||||
const renamePopper = ref(false)
|
const renamePopper = ref(false)
|
||||||
|
|
||||||
@@ -112,12 +115,26 @@ const dropdownItems = ref<{ [key: string]: any }[]>([])
|
|||||||
// 进度是否激活
|
// 进度是否激活
|
||||||
const progressActive = ref(false)
|
const progressActive = ref(false)
|
||||||
|
|
||||||
|
// 通用过滤
|
||||||
|
const getFilteredItems = (type: 'dir' | 'file') => {
|
||||||
|
const filterValue = filter.value
|
||||||
|
if (!filterValue) {
|
||||||
|
return items.value.filter(item => item.type === type)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ignoreCase.value) {
|
||||||
|
const lowerCaseFilter = filterValue.toLowerCase()
|
||||||
|
return items.value.filter(item => item.type === type && item.name.toLowerCase().includes(lowerCaseFilter))
|
||||||
|
} else {
|
||||||
|
return items.value.filter(item => item.type === type && item.name.includes(filterValue))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 目录过滤
|
// 目录过滤
|
||||||
const dirs = computed(() => items.value.filter(item => item.type === 'dir' && item.name.includes(filter.value)))
|
const dirs = computed(() => getFilteredItems('dir'))
|
||||||
|
|
||||||
// 文件过滤
|
// 文件过滤
|
||||||
const files = computed(() => items.value.filter(item => item.type === 'file' && item.name.includes(filter.value)))
|
const files = computed(() => getFilteredItems('file'))
|
||||||
|
|
||||||
// 是否文件
|
// 是否文件
|
||||||
const isFile = computed(() => inProps.item.type == 'file')
|
const isFile = computed(() => inProps.item.type == 'file')
|
||||||
|
|
||||||
@@ -622,9 +639,11 @@ onMounted(() => {
|
|||||||
rounded
|
rounded
|
||||||
/>
|
/>
|
||||||
<VSpacer v-if="isFile" />
|
<VSpacer v-if="isFile" />
|
||||||
|
<IconBtn v-if="!isFile" @click="ignoreCase = !ignoreCase">
|
||||||
|
<VIcon :color="ignoreCase ? 'primary' : 'error'" icon="mdi-format-letter-case" />
|
||||||
|
</IconBtn>
|
||||||
<IconBtn v-if="!isFile" @click="changeSelectMode">
|
<IconBtn v-if="!isFile" @click="changeSelectMode">
|
||||||
<VIcon color="primary" v-if="selectMode"> mdi-selection-remove </VIcon>
|
<VIcon color="primary" :icon="selectMode ? 'mdi-selection-remove' : 'mdi-select'" />
|
||||||
<VIcon color="primary" v-else>mdi-select</VIcon>
|
|
||||||
</IconBtn>
|
</IconBtn>
|
||||||
<IconBtn v-if="isFile" @click="recognize(inProps.item.path || '')">
|
<IconBtn v-if="isFile" @click="recognize(inProps.item.path || '')">
|
||||||
<VIcon color="primary"> mdi-text-recognition </VIcon>
|
<VIcon color="primary"> mdi-text-recognition </VIcon>
|
||||||
|
|||||||
Reference in New Issue
Block a user