feat(前端界面): 统一侧栏文案与注解布局
build.yaml / build (push) Successful in 1m1s

This commit is contained in:
xiaoqidun committed 2026-10-13 16:50:25 +08:00
1 parent cd5ea45a89
commit fc01fbdc17
3 files changed
+34 -21

No files matched your search

+2 -2
View File
@@ -401,7 +401,7 @@
</dialog> </dialog>
<dialog id="settingsPanel" class="form-dialog settings-dialog" aria-labelledby="settingsTitle"> <dialog id="settingsPanel" class="form-dialog settings-dialog" aria-labelledby="settingsTitle">
<form id="settingsForm"> <form id="settingsForm">
<h2 id="settingsTitle" class="form-title">文档设置</h2> <h2 id="settingsTitle" class="form-title">文档配置</h2>
<label class="form-row"><span>类型</span><select id="settingsKind"><option value="bookmarks">书签</option><option value="actions">动作</option><option value="templates">模板</option><option value="layers">图层</option><option value="extensions">扩展</option><option value="ColorSpace" hidden>色彩</option><option value="DrawParam" hidden>样式</option></select></label> <label class="form-row"><span>类型</span><select id="settingsKind"><option value="bookmarks">书签</option><option value="actions">动作</option><option value="templates">模板</option><option value="layers">图层</option><option value="extensions">扩展</option><option value="ColorSpace" hidden>色彩</option><option value="DrawParam" hidden>样式</option></select></label>
<div id="settingsContext"></div> <div id="settingsContext"></div>
<div id="settingsContent"></div> <div id="settingsContent"></div>
@@ -707,7 +707,7 @@
<div class="panel-title compact">文档</div> <div class="panel-title compact">文档</div>
<div class="panel-actions"> <div class="panel-actions">
<button id="resourceManageButton" class="small-button" type="button" title="资源管理" aria-label="资源管理" aria-haspopup="dialog" aria-controls="resourcePanel" disabled>资源</button> <button id="resourceManageButton" class="small-button" type="button" title="资源管理" aria-label="资源管理" aria-haspopup="dialog" aria-controls="resourcePanel" disabled>资源</button>
<button id="settingsButton" class="small-button" type="button" title="文档设置" aria-label="文档设置" aria-haspopup="dialog" aria-controls="settingsPanel" disabled>设置</button> <button id="settingsButton" class="small-button" type="button" title="文档配置" aria-label="文档配置" aria-haspopup="dialog" aria-controls="settingsPanel" disabled>配置</button>
<button id="versionManageButton" class="small-button" type="button" title="版本管理" aria-label="版本管理" aria-haspopup="dialog" aria-controls="versionPanel" hidden>版本</button> <button id="versionManageButton" class="small-button" type="button" title="版本管理" aria-label="版本管理" aria-haspopup="dialog" aria-controls="versionPanel" hidden>版本</button>
<button id="documentManageButton" class="small-button" type="button" title="文档管理" aria-label="文档管理" aria-haspopup="dialog" aria-controls="documentPanel" hidden>管理</button> <button id="documentManageButton" class="small-button" type="button" title="文档管理" aria-label="文档管理" aria-haspopup="dialog" aria-controls="documentPanel" hidden>管理</button>
</div> </div>
+27 -14
View File
@@ -1880,25 +1880,28 @@ body[data-hide-meta] .meta-panel {
} }
.annotation-summary-list { .annotation-summary-list {
display: grid; min-height: 0;
gap: 10px; overflow: auto;
} }
.annotation-summary { .annotation-summary {
min-width: 0; min-width: 0;
padding: 10px 0; padding: 8px 4px;
border-bottom: 1px solid var(--line); border-bottom: 1px solid var(--line);
} }
.annotation-summary-target { .annotation-summary-target {
display: grid; display: grid;
gap: 6px; gap: 3px;
width: 100%; width: 100%;
padding: 0 0 8px; height: auto;
padding: 0;
border: 0; border: 0;
background: transparent; background: transparent;
color: inherit; color: inherit;
font: inherit; font: inherit;
font-size: 13px;
line-height: 1.5;
text-align: left; text-align: left;
cursor: pointer; cursor: pointer;
} }
@@ -1909,17 +1912,18 @@ body[data-hide-meta] .meta-panel {
} }
.annotation-summary-target span:first-child { .annotation-summary-target span:first-child {
color: var(--muted); color: var(--text-muted);
font-size: 12px;
}
.annotation-summary-target + .info-line {
margin-top: 3px;
} }
.annotation-summary .small-button { .annotation-summary .small-button {
margin-top: 8px; margin-top: 8px;
} }
#annotationsPanel .search-form {
grid-template-columns: minmax(0, 1fr) 72px;
}
#annotationsPanel select { #annotationsPanel select {
min-width: 0; min-width: 0;
border: 1px solid var(--line); border: 1px solid var(--line);
@@ -1928,7 +1932,12 @@ body[data-hide-meta] .meta-panel {
} }
#annotationsStatus { #annotationsStatus {
margin: 8px 0; flex-shrink: 0;
margin: 8px 0 0;
}
#annotationsStatus:empty {
display: none;
} }
.navigation-tabs button { .navigation-tabs button {
@@ -1954,18 +1963,22 @@ body[data-hide-meta] .meta-panel {
} }
.navigation-content:has(#searchPanel:not([hidden])), .navigation-content:has(#searchPanel:not([hidden])),
#searchPanel:not([hidden]) { .navigation-content:has(#annotationsPanel:not([hidden])),
#searchPanel:not([hidden]),
#annotationsPanel:not([hidden]) {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
min-height: 0; min-height: 0;
overflow: hidden; overflow: hidden;
} }
#searchPanel { #searchPanel,
#annotationsPanel {
flex: 1; flex: 1;
} }
#searchPanel :focus-visible { #searchPanel :focus-visible,
#annotationsPanel :focus-visible {
outline-offset: -2px; outline-offset: -2px;
} }
+5 -5
View File
@@ -5268,7 +5268,7 @@ function renderDocumentSettings() {
settingsElements.Content.replaceChildren(); settingsElements.Content.replaceChildren();
settingsElements.Actions.replaceChildren(); settingsElements.Actions.replaceChildren();
const kind = settingsElements.Kind.value; const kind = settingsElements.Kind.value;
settingsElements.Title.textContent = {ColorSpace: "色彩设置", DrawParam: "样式设置"}[kind] || "文档设置"; settingsElements.Title.textContent = {ColorSpace: "色彩设置", DrawParam: "样式设置"}[kind] || "文档配置";
if (kind === "actions") renderActionSettings(); if (kind === "actions") renderActionSettings();
else if (kind === "bookmarks") renderBookmarkSettings(); else if (kind === "bookmarks") renderBookmarkSettings();
else if (kind === "extensions") renderExtensionSettings(); else if (kind === "extensions") renderExtensionSettings();
@@ -5309,7 +5309,7 @@ function renderActionSettings() {
if (settings.scope === "object") settingsSelect(context, "图元", "Object", (settings.data.objects || []).map(item => [item.id, `${item.id} · ${item.text || ({TextObject: "文字", PathObject: "图形", ImageObject: "图片"}[item.type] || "组合")}`]), settings.object, value => { settings.object = value; settings.selected = -1; loadDocumentSettings(); }); if (settings.scope === "object") settingsSelect(context, "图元", "Object", (settings.data.objects || []).map(item => [item.id, `${item.id} · ${item.text || ({TextObject: "文字", PathObject: "图形", ImageObject: "图片"}[item.type] || "组合")}`]), settings.object, value => { settings.object = value; settings.selected = -1; loadDocumentSettings(); });
if (settings.scope === "outline") settingsSelect(context, "目录", "Outline", outlineSettingsChoices(), JSON.stringify(settings.path), value => { settings.path = JSON.parse(value); settings.selected = -1; loadDocumentSettings(); }); if (settings.scope === "outline") settingsSelect(context, "目录", "Outline", outlineSettingsChoices(), JSON.stringify(settings.path), value => { settings.path = JSON.parse(value); settings.selected = -1; loadDocumentSettings(); });
if (settings.selected >= settings.actions.length) settings.selected = -1; if (settings.selected >= settings.actions.length) settings.selected = -1;
settingsSelect(context, "动作", "Entry", [[-1, "新增动作"], ...settings.actions.map((item, index) => [index, `${index + 1} · ${actionSettingsLabel(item)}`])], settings.selected, value => { settings.selected = Number(value); renderDocumentSettings(); }); settingsSelect(context, "动作", "Entry", [[-1, "新增"], ...settings.actions.map((item, index) => [index, `${index + 1} · ${actionSettingsLabel(item)}`])], settings.selected, value => { settings.selected = Number(value); renderDocumentSettings(); });
const action = settings.actions[settings.selected] || {}; const action = settings.actions[settings.selected] || {};
const type = action.Goto ? action.Goto.Bookmark ? "Bookmark" : "Goto" : ["URI", "GotoA", "Sound", "Movie"].find(key => action[key]) || "Goto"; const type = action.Goto ? action.Goto.Bookmark ? "Bookmark" : "Goto" : ["URI", "GotoA", "Sound", "Movie"].find(key => action[key]) || "Goto";
settingsSelect(content, "类型", "ActionType", [["Goto", "页面"], ["Bookmark", "书签"], ["URI", "网址"], ["GotoA", "附件"], ["Sound", "音频"], ["Movie", "视频"]], type, value => renderActionFields(value, action)); settingsSelect(content, "类型", "ActionType", [["Goto", "页面"], ["Bookmark", "书签"], ["URI", "网址"], ["GotoA", "附件"], ["Sound", "音频"], ["Movie", "视频"]], type, value => renderActionFields(value, action));
@@ -5536,7 +5536,7 @@ function renderLayerSettings() {
if (!state.editing && settings.selected < 0 && entries.length) settings.selected = 0; if (!state.editing && settings.selected < 0 && entries.length) settings.selected = 0;
const types = {Background: "背景", Body: "正文", Foreground: "前景"}; const types = {Background: "背景", Body: "正文", Foreground: "前景"};
const options = entries.map((entry, index) => [index, `${entry.ID} · ${types[entry.Type] || entry.Type} · ${entry.ObjectCount}个图元`]); const options = entries.map((entry, index) => [index, `${entry.ID} · ${types[entry.Type] || entry.Type} · ${entry.ObjectCount}个图元`]);
if (state.editing) options.unshift([-1, "新增图层"]); if (state.editing) options.unshift([-1, "新增"]);
settingsSelect(settingsElements.Context, "图层", "Entry", options, settings.selected, value => { settings.selected = Number(value); renderDocumentSettings(); }); settingsSelect(settingsElements.Context, "图层", "Entry", options, settings.selected, value => { settings.selected = Number(value); renderDocumentSettings(); });
const entry = entries[settings.selected]; const entry = entries[settings.selected];
if (!entry && !state.editing) { settingsElements.Status.textContent = "暂无图层"; return; } if (!entry && !state.editing) { settingsElements.Status.textContent = "暂无图层"; return; }
@@ -5568,7 +5568,7 @@ function renderTemplateSettings() {
if (settings.selected >= entries.length) settings.selected = -1; if (settings.selected >= entries.length) settings.selected = -1;
if (!state.editing && settings.selected < 0 && entries.length) settings.selected = 0; if (!state.editing && settings.selected < 0 && entries.length) settings.selected = 0;
const options = entries.map((entry, index) => [index, `${entry.Name || entry.ID}${bindings.some(binding => referenceIDKey(binding.TemplateID) === referenceIDKey(entry.ID)) ? " · 已绑定" : ""}`]); const options = entries.map((entry, index) => [index, `${entry.Name || entry.ID}${bindings.some(binding => referenceIDKey(binding.TemplateID) === referenceIDKey(entry.ID)) ? " · 已绑定" : ""}`]);
if (state.editing) options.unshift([-1, "新增模板"]); if (state.editing) options.unshift([-1, "新增"]);
settingsSelect(settingsElements.Context, "模板", "Entry", options, settings.selected, value => { settings.selected = Number(value); renderDocumentSettings(); }); settingsSelect(settingsElements.Context, "模板", "Entry", options, settings.selected, value => { settings.selected = Number(value); renderDocumentSettings(); });
const entry = entries[settings.selected]; const entry = entries[settings.selected];
if (!entry && !state.editing) { settingsElements.Status.textContent = "暂无模板"; return; } if (!entry && !state.editing) { settingsElements.Status.textContent = "暂无模板"; return; }
@@ -5607,7 +5607,7 @@ function renderBookmarkSettings() {
if (settings.selected >= entries.length) settings.selected = -1; if (settings.selected >= entries.length) settings.selected = -1;
if (!state.editing && settings.selected < 0 && entries.length) settings.selected = 0; if (!state.editing && settings.selected < 0 && entries.length) settings.selected = 0;
const options = entries.map((entry, index) => [index, entry.Name]); const options = entries.map((entry, index) => [index, entry.Name]);
if (state.editing) options.unshift([-1, "新增书签"]); if (state.editing) options.unshift([-1, "新增"]);
settingsSelect(settingsElements.Context, "书签", "Entry", options, settings.selected, value => { settings.selected = Number(value); renderDocumentSettings(); }); settingsSelect(settingsElements.Context, "书签", "Entry", options, settings.selected, value => { settings.selected = Number(value); renderDocumentSettings(); });
const entry = entries[settings.selected]; const entry = entries[settings.selected];
if (!entry && !state.editing) { settingsElements.Status.textContent = "暂无书签"; return; } if (!entry && !state.editing) { settingsElements.Status.textContent = "暂无书签"; return; }