feat(filelib): 项目新增修改历史 tab 并隐藏 version hash id

This commit is contained in:
2026-07-27 21:09:10 +08:00
parent 8c26c42e0c
commit 1dab83f9db
8 changed files with 234 additions and 9 deletions
@@ -5,10 +5,11 @@
import OverviewPanel from "./OverviewPanel.svelte";
import FilesPanel from "./FilesPanel.svelte";
import GrantsPanel from "./GrantsPanel.svelte";
import HistoryPanel from "./HistoryPanel.svelte";
import Modal from "./Modal.svelte";
import Icon from "./Icon.svelte";
type Tab = "detail" | "files" | "grants";
type Tab = "detail" | "files" | "history" | "grants";
let tab = $state<Tab>("detail");
let showCreateChild = $state(false);
let newName = $state("");
@@ -20,11 +21,12 @@
const canManage = $derived(node?.role === "MANAGE");
const canEdit = $derived(canManage || node?.role === "EDIT");
// 与旧 libraryBrowser 的 tab 组装一致:概览恒有;文件仅 PROJECT;授权仅 MANAGE
// 与旧 libraryBrowser 的 tab 组装一致:概览恒有;文件仅 PROJECT;修改历史仅 PROJECT;授权仅 MANAGE
// (FOLDER 也有授权 —— 它虽是透明组织节点,授权仍挂在节点上,ADR-0021)。
const tabs = $derived.by((): ReadonlyArray<readonly [Tab, string]> => {
const out: Array<readonly [Tab, string]> = [["detail", "概览"]];
if (node?.kind === "PROJECT") out.push(["files", "文件"]);
if (node?.kind === "PROJECT") out.push(["history", "修改历史"]);
if (canManage) out.push(["grants", "授权"]);
return out;
});
@@ -129,6 +131,8 @@
<GrantsPanel {node} />
{:else if tab === "files" && node.kind === "PROJECT"}
<FilesPanel {node} />
{:else if tab === "history" && node.kind === "PROJECT"}
<HistoryPanel {node} />
{:else}
<OverviewPanel {node} />
{#if node.kind === "FOLDER"}