diff --git a/src/components/filebrowser/FileList.vue b/src/components/filebrowser/FileList.vue index 8d2adf50..bc24a411 100644 --- a/src/components/filebrowser/FileList.vue +++ b/src/components/filebrowser/FileList.vue @@ -82,6 +82,9 @@ const items = ref([]) // 过滤条件 const filter = ref('') +// 是否忽略大小写 +const ignoreCase = ref(true) + // 重命名弹窗 const renamePopper = ref(false) @@ -112,12 +115,26 @@ const dropdownItems = ref<{ [key: string]: any }[]>([]) // 进度是否激活 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') @@ -622,9 +639,11 @@ onMounted(() => { rounded /> + + + - mdi-selection-remove - mdi-select + mdi-text-recognition