From a8f01f099dcc59e5b65d0aef8142890db562bcae Mon Sep 17 00:00:00 2001 From: Aqr-K <95741669+Aqr-K@users.noreply.github.com> Date: Sat, 30 Aug 2025 20:54:17 +0800 Subject: [PATCH 1/3] feat(file): Add an `ignoreCase` button. --- src/components/filebrowser/FileList.vue | 32 +++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/components/filebrowser/FileList.vue b/src/components/filebrowser/FileList.vue index 8d2adf50..28198b54 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) @@ -113,10 +116,32 @@ const dropdownItems = ref<{ [key: string]: any }[]>([]) const progressActive = ref(false) // 目录过滤 -const dirs = computed(() => items.value.filter(item => item.type === 'dir' && item.name.includes(filter.value))) +const dirs = computed(() => + items.value.filter(item => { + if (item.type !== 'dir') return false + if (!filter.value) return true + + if (ignoreCase.value) { + return item.name.toLowerCase().includes(filter.value.toLowerCase()) + } else { + return item.name.includes(filter.value) + } + }), +) // 文件过滤 -const files = computed(() => items.value.filter(item => item.type === 'file' && item.name.includes(filter.value))) +const files = computed(() => + items.value.filter(item => { + if (item.type !== 'file') return false + if (!filter.value) return true + + if (ignoreCase.value) { + return item.name.toLowerCase().includes(filter.value.toLowerCase()) + } else { + return item.name.includes(filter.value) + } + }), +) // 是否文件 const isFile = computed(() => inProps.item.type == 'file') @@ -622,6 +647,9 @@ onMounted(() => { rounded /> + + + mdi-selection-remove mdi-select From 8ff879661a82e4dda2b9375b56d6c94fb2f18b65 Mon Sep 17 00:00:00 2001 From: Aqr-K <95741669+Aqr-K@users.noreply.github.com> Date: Sat, 30 Aug 2025 20:56:58 +0800 Subject: [PATCH 2/3] fix(file): Simplify the `selectMode` button. --- src/components/filebrowser/FileList.vue | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/filebrowser/FileList.vue b/src/components/filebrowser/FileList.vue index 28198b54..0bfaa8ee 100644 --- a/src/components/filebrowser/FileList.vue +++ b/src/components/filebrowser/FileList.vue @@ -651,8 +651,7 @@ onMounted(() => { - mdi-selection-remove - mdi-select + mdi-text-recognition From 35bbb44ce3405c7dbe0c0487b6c5989344dabe39 Mon Sep 17 00:00:00 2001 From: Aqr-K <95741669+Aqr-K@users.noreply.github.com> Date: Sat, 30 Aug 2025 21:08:17 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20FileList.vue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/filebrowser/FileList.vue | 42 ++++++++++--------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/src/components/filebrowser/FileList.vue b/src/components/filebrowser/FileList.vue index 0bfaa8ee..bc24a411 100644 --- a/src/components/filebrowser/FileList.vue +++ b/src/components/filebrowser/FileList.vue @@ -115,34 +115,26 @@ const dropdownItems = ref<{ [key: string]: any }[]>([]) // 进度是否激活 const progressActive = ref(false) -// 目录过滤 -const dirs = computed(() => - items.value.filter(item => { - if (item.type !== 'dir') return false - if (!filter.value) return true +// 通用过滤 +const getFilteredItems = (type: 'dir' | 'file') => { + const filterValue = filter.value + if (!filterValue) { + return items.value.filter(item => item.type === type) + } - if (ignoreCase.value) { - return item.name.toLowerCase().includes(filter.value.toLowerCase()) - } else { - return item.name.includes(filter.value) - } - }), -) + 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(() => getFilteredItems('dir')) // 文件过滤 -const files = computed(() => - items.value.filter(item => { - if (item.type !== 'file') return false - if (!filter.value) return true - - if (ignoreCase.value) { - return item.name.toLowerCase().includes(filter.value.toLowerCase()) - } else { - return item.name.includes(filter.value) - } - }), -) - +const files = computed(() => getFilteredItems('file')) // 是否文件 const isFile = computed(() => inProps.item.type == 'file')