From e9b214cff80ea46847def8a42f517333908c9630 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 19 Apr 2026 12:29:02 +0800 Subject: [PATCH] refactor: enhance dynamic button system to support menus, reactive properties, and improved PWA floating action button integration --- src/components/FileBrowser.vue | 31 +++ src/components/filebrowser/FileToolbar.vue | 19 +- src/composables/useDynamicButton.ts | 99 +++++++-- src/layouts/components/Footer.vue | 8 +- src/pages/subscribe.vue | 207 ++++++++++++++----- src/pages/workflow.vue | 100 +++++---- src/views/plugin/PluginCardListView.vue | 104 +++++++--- src/views/reorganize/TransferHistoryView.vue | 154 ++++++-------- src/views/subscribe/SubscribeListView.vue | 37 +--- src/views/workflow/WorkflowListView.vue | 38 +--- src/views/workflow/WorkflowShareView.vue | 14 +- 11 files changed, 523 insertions(+), 288 deletions(-) diff --git a/src/components/FileBrowser.vue b/src/components/FileBrowser.vue index eec6b6a5..4a56b261 100644 --- a/src/components/FileBrowser.vue +++ b/src/components/FileBrowser.vue @@ -5,6 +5,8 @@ import FileNavigator from './filebrowser/FileNavigator.vue' import type { EndPoints, FileItem, StorageConf } from '@/api/types' import { storageIconDict } from '@/api/constants' import type { AxiosInstance } from 'axios' +import { useDynamicButton } from '@/composables/useDynamicButton' +import { usePWA } from '@/composables/usePWA' // LocalStorage keys const SORT_KEY = 'fileBrowser.sort' @@ -33,6 +35,9 @@ const props = defineProps({ // 对外事件 const emit = defineEmits(['pathchanged']) +const route = useRoute() +const { appMode } = usePWA() +const toolbarRef = ref | null>(null) const fileIcons = { // 压缩包 @@ -123,6 +128,18 @@ const fileIcons = { other: 'mdi-file-outline', } +function openNewFolderDialog() { + toolbarRef.value?.openNewFolderDialog() +} + +const showFloatingNewFolderAction = computed(() => route.path === '/filemanager') + +useDynamicButton({ + icon: 'mdi-folder-plus-outline', + onClick: openNewFolderDialog, + show: computed(() => appMode.value && showFloatingNewFolderAction.value), +}) + // 加载次数 const loading = ref(0) @@ -254,12 +271,14 @@ function stopDrag() {
+ + + +