From e91dd0ed9784d185fd23657bfce1b75eb2013a85 Mon Sep 17 00:00:00 2001 From: Youzini-afk <13153778771cx@gmail.com> Date: Sun, 12 Apr 2026 23:38:09 +0800 Subject: [PATCH] ui: collapse advanced story time fields and story time span section --- style.css | 36 ++++++++++++++++++++++++++++++++++++ ui/panel.js | 42 ++++++++++++++++++++++++++---------------- 2 files changed, 62 insertions(+), 16 deletions(-) diff --git a/style.css b/style.css index 758e3a9..7fa38e0 100644 --- a/style.css +++ b/style.css @@ -4819,6 +4819,42 @@ line-height: 1.4; } +.bme-node-detail-collapse { + margin: 6px 0 8px; +} + +.bme-node-detail-collapse > summary { + font-size: 10px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.5px; + color: var(--bme-on-surface-dim); + cursor: pointer; + user-select: none; + list-style: none; + display: flex; + align-items: center; + gap: 4px; +} + +.bme-node-detail-collapse > summary::-webkit-details-marker { + display: none; +} + +.bme-node-detail-collapse > summary::before { + content: "▶"; + font-size: 8px; + transition: transform 0.15s; +} + +.bme-node-detail-collapse[open] > summary::before { + transform: rotate(90deg); +} + +.bme-node-detail-collapse > .bme-node-detail-field:first-of-type { + margin-top: 6px; +} + /* --- Scrollbar --- */ .bme-tab-content::-webkit-scrollbar, .bme-config-sidebar::-webkit-scrollbar, diff --git a/ui/panel.js b/ui/panel.js index 11eb920..d4b0b43 100644 --- a/ui/panel.js +++ b/ui/panel.js @@ -4082,87 +4082,97 @@ function _buildNodeDetailEditorFragment(raw, { idPrefix = "bme-detail" } = {}) { storyTime.tense, STORY_TIME_TENSE_OPTIONS, ); + + const storyTimeAdvanced = document.createElement("details"); + storyTimeAdvanced.className = "bme-node-detail-collapse"; + const storyTimeAdvancedSummary = document.createElement("summary"); + storyTimeAdvancedSummary.textContent = "高级"; + storyTimeAdvanced.appendChild(storyTimeAdvancedSummary); _appendNodeDetailSelectInput( - fragment, + storyTimeAdvanced, "相对关系", inputId("story-time-relation"), storyTime.relation, STORY_TIME_RELATION_OPTIONS, ); _appendNodeDetailTextInput( - fragment, + storyTimeAdvanced, "锚点标签", inputId("story-time-anchor-label"), storyTime.anchorLabel, ); _appendNodeDetailSelectInput( - fragment, + storyTimeAdvanced, "置信度", inputId("story-time-confidence"), storyTime.confidence, STORY_TIME_CONFIDENCE_OPTIONS, ); _appendNodeDetailSelectInput( - fragment, + storyTimeAdvanced, "来源", inputId("story-time-source"), storyTime.source, STORY_TIME_SOURCE_OPTIONS, ); _appendNodeDetailTextInput( - fragment, + storyTimeAdvanced, "段 ID", inputId("story-time-segment-id"), storyTime.segmentId, ); + fragment.appendChild(storyTimeAdvanced); - const storyTimeSpanSection = document.createElement("div"); - storyTimeSpanSection.className = "bme-node-detail-section"; - storyTimeSpanSection.textContent = "剧情时间范围"; - fragment.appendChild(storyTimeSpanSection); + const storyTimeSpanCollapse = document.createElement("details"); + storyTimeSpanCollapse.className = "bme-node-detail-collapse"; + const storyTimeSpanSummaryEl = document.createElement("summary"); + storyTimeSpanSummaryEl.className = "bme-node-detail-section"; + storyTimeSpanSummaryEl.textContent = "剧情时间范围"; + storyTimeSpanCollapse.appendChild(storyTimeSpanSummaryEl); _appendNodeDetailReadOnly( - fragment, + storyTimeSpanCollapse, "当前范围", _describeStoryTimeSpanDisplay(storyTimeSpan) || "—", ); _appendNodeDetailTextInput( - fragment, + storyTimeSpanCollapse, "起点标签", inputId("story-time-span-start-label"), storyTimeSpan.startLabel, ); _appendNodeDetailTextInput( - fragment, + storyTimeSpanCollapse, "终点标签", inputId("story-time-span-end-label"), storyTimeSpan.endLabel, ); _appendNodeDetailSelectInput( - fragment, + storyTimeSpanCollapse, "混合时间", inputId("story-time-span-mixed"), storyTimeSpan.mixed ? "true" : "false", STORY_TIME_MIXED_OPTIONS, ); _appendNodeDetailSelectInput( - fragment, + storyTimeSpanCollapse, "来源", inputId("story-time-span-source"), storyTimeSpan.source, STORY_TIME_SOURCE_OPTIONS, ); _appendNodeDetailTextInput( - fragment, + storyTimeSpanCollapse, "起点段 ID", inputId("story-time-span-start-segment-id"), storyTimeSpan.startSegmentId, ); _appendNodeDetailTextInput( - fragment, + storyTimeSpanCollapse, "终点段 ID", inputId("story-time-span-end-segment-id"), storyTimeSpan.endSegmentId, ); + fragment.appendChild(storyTimeSpanCollapse); _appendNodeDetailNumberInput( fragment,