优化功能

This commit is contained in:
2026-07-10 16:58:05 +08:00
parent 78913c46b6
commit fed4110565
3 changed files with 116 additions and 97 deletions

View File

@@ -7,14 +7,6 @@ export default { name: "TreeEntry" };
import { computed, onBeforeUnmount, ref, watch } from "vue";
import ConfirmDialog from "./ConfirmDialog.vue";
import PromptDialog from "./PromptDialog.vue";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuGroup,
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
interface DirEntry {
name: string;
@@ -305,40 +297,6 @@ function onContextMenu(event: MouseEvent) {
></i>
<i class="tree-entry-icon ri-folder-2-line text-base shrink-0"></i>
<span class="truncate flex-1 min-w-0">{{ entry.name }}</span>
<!-- More button + DropdownMenu -->
<DropdownMenu>
<DropdownMenuTrigger
class="tree-more-btn shrink-0 ml-auto opacity-0 group-hover:opacity-100 transition-opacity focus-visible:opacity-100"
title="更多操作"
@click.stop
>
<i class="ri-more-line"></i>
</DropdownMenuTrigger>
<DropdownMenuContent @click.stop>
<DropdownMenuGroup>
<DropdownMenuItem @click="handleCreateFolder">
<i class="ri-folder-add-line"></i>
<span>新建文件夹</span>
</DropdownMenuItem>
<DropdownMenuItem @click="handleCreateFile">
<i class="ri-file-add-line"></i>
<span>新建 MD 文件</span>
</DropdownMenuItem>
<DropdownMenuItem @click="handleRename">
<i class="ri-edit-line"></i>
<span>重命名</span>
</DropdownMenuItem>
</DropdownMenuGroup>
<DropdownMenuSeparator />
<DropdownMenuGroup>
<DropdownMenuItem variant="destructive" @click="handleDelete">
<i class="ri-delete-bin-line"></i>
<span>删除文件夹</span>
</DropdownMenuItem>
</DropdownMenuGroup>
</DropdownMenuContent>
</DropdownMenu>
</div>
<!-- Children (recursive) -->
@@ -375,32 +333,6 @@ function onContextMenu(event: MouseEvent) {
>
<i :class="['tree-entry-icon', fileIcon, 'text-sm shrink-0']"></i>
<span class="truncate flex-1 min-w-0">{{ entry.name }}</span>
<!-- More button + DropdownMenu -->
<DropdownMenu>
<DropdownMenuTrigger
class="tree-more-btn shrink-0 ml-auto opacity-0 group-hover:opacity-100 transition-opacity focus-visible:opacity-100"
title="更多操作"
@click.stop
>
<i class="ri-more-line"></i>
</DropdownMenuTrigger>
<DropdownMenuContent @click.stop>
<DropdownMenuGroup>
<DropdownMenuItem @click="handleRename">
<i class="ri-edit-line"></i>
<span>重命名</span>
</DropdownMenuItem>
</DropdownMenuGroup>
<DropdownMenuSeparator />
<DropdownMenuGroup>
<DropdownMenuItem variant="destructive" @click="handleDelete">
<i class="ri-delete-bin-line"></i>
<span>删除</span>
</DropdownMenuItem>
</DropdownMenuGroup>
</DropdownMenuContent>
</DropdownMenu>
</div>
</template>
@@ -435,30 +367,6 @@ function onContextMenu(event: MouseEvent) {
color: var(--app-accent);
}
/* ── More button ────────────────────────────── */
.tree-more-btn {
display: inline-flex;
align-items: center;
justify-content: center;
width: 22px;
height: 22px;
border: none;
border-radius: 4px;
background: transparent;
color: var(--app-muted);
font-size: 14px;
cursor: pointer;
transition:
background-color 0.12s ease,
color 0.12s ease;
flex-shrink: 0;
}
.tree-more-btn:hover {
background: var(--app-border);
color: var(--app-text);
}
.tree-context-menu {
position: fixed;
z-index: 100;