From de414de7543bb12b9e070cc947aac1d15d35811b Mon Sep 17 00:00:00 2001 From: xiaoqidun Date: Tue, 13 Oct 2026 21:58:37 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=89=8D=E7=AB=AF=E7=95=8C=E9=9D=A2):=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=85=8D=E7=BD=AE=E7=A9=BA=E6=80=81=E4=B8=8E?= =?UTF-8?q?=E7=84=A6=E7=82=B9=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/webui/ofdgo.css | 4 ++++ assets/webui/ofdgo.js | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/assets/webui/ofdgo.css b/assets/webui/ofdgo.css index cded1e5..bcf8540 100644 --- a/assets/webui/ofdgo.css +++ b/assets/webui/ofdgo.css @@ -1769,6 +1769,10 @@ body[data-hide-meta] .meta-panel { overflow: hidden; } +.settings-dialog :focus-visible { + outline-offset: -2px; +} + .settings-dialog > form { display: flex; flex-direction: column; diff --git a/assets/webui/ofdgo.js b/assets/webui/ofdgo.js index bb9a8c5..c3229f6 100644 --- a/assets/webui/ofdgo.js +++ b/assets/webui/ofdgo.js @@ -5713,6 +5713,7 @@ async function applyStyleResource(kind, clear = false) { function renderLayerSettings() { const entries = settings.data.page.layers || []; settingsPages(settingsElements.Context, "Page", settings.page, value => { settings.page = Number(value); settings.selected = -1; loadDocumentSettings(); }); + if (!entries.length && !state.editing) { settingsElements.Status.textContent = "暂无图层"; return; } if (settings.selected >= entries.length) settings.selected = -1; if (!state.editing && settings.selected < 0 && entries.length) settings.selected = 0; const types = {Background: "背景", Body: "正文", Foreground: "前景"}; @@ -5720,7 +5721,6 @@ function renderLayerSettings() { if (state.editing) options.unshift([-1, "新增"]); settingsSelect(settingsElements.Context, "图层", "Entry", options, settings.selected, value => { settings.selected = Number(value); renderDocumentSettings(); }); const entry = entries[settings.selected]; - if (!entry && !state.editing) { settingsElements.Status.textContent = "暂无图层"; return; } const properties = settingsSection("属性"), content = properties.section; settingsSelect(content, "类型", "LayerType", Object.entries(types), entry?.Type || "Body"); settingsSelect(content, "样式", "DrawParam", [["", "无"], ...settings.data.resources.filter(item => item.kind === "DrawParam").map(item => [item.id, item.name])], referenceIDKey(entry?.DrawParam)); @@ -5753,13 +5753,13 @@ function renderLayerSettings() { function renderTemplateSettings() { const entries = settings.data.page.templates || [], bindings = settings.data.page.bindings || []; settingsPages(settingsElements.Context, "Page", settings.page, value => { settings.page = Number(value); loadDocumentSettings(); }); + if (!entries.length && !state.editing) { settingsElements.Status.textContent = "暂无模板"; return; } if (settings.selected >= entries.length) settings.selected = -1; 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)) ? " · 已绑定" : ""}`]); if (state.editing) options.unshift([-1, "新增"]); settingsSelect(settingsElements.Context, "模板", "Entry", options, settings.selected, value => { settings.selected = Number(value); renderDocumentSettings(); }); const entry = entries[settings.selected]; - if (!entry && !state.editing) { settingsElements.Status.textContent = "暂无模板"; return; } const properties = settingsSection("属性"), content = properties.section; settingsField(content, "名称", "Name", entry?.Name); settingsSelect(content, "层次", "TemplateOrder", [["Background", "背景"], ["Foreground", "前景"]], entry?.ZOrder || "Background"); @@ -5810,13 +5810,13 @@ function renderTemplateSettings() { function renderBookmarkSettings() { const entries = settings.data.bookmarks || []; + if (!entries.length && !state.editing) { settingsElements.Status.textContent = "暂无书签"; return; } if (settings.selected >= entries.length) settings.selected = -1; if (!state.editing && settings.selected < 0 && entries.length) settings.selected = 0; const options = entries.map((entry, index) => [index, entry.Name]); if (state.editing) options.unshift([-1, "新增"]); settingsSelect(settingsElements.Context, "书签", "Entry", options, settings.selected, value => { settings.selected = Number(value); renderDocumentSettings(); }); const entry = entries[settings.selected]; - if (!entry && !state.editing) { settingsElements.Status.textContent = "暂无书签"; return; } settingsField(settingsElements.Content, "名称", "Name", entry?.Name).required = true; renderDestinationFields(settingsElements.Content, entry?.Dest); settingsElements.Content.querySelectorAll("input,select").forEach(field => { field.disabled = !state.editing; });