From 537fca8a144f61aeee77e3a525264daeb72167ac Mon Sep 17 00:00:00 2001 From: xmanrui <841206367@qq.com> Date: Thu, 3 Sep 2026 00:30:18 +0800 Subject: [PATCH] fix context tooltip clipping --- lib/client.js | 5 +++-- plugin-src/client/styles.js | 5 +++-- test/context-enhancement-ui.test.mjs | 3 +++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/client.js b/lib/client.js index 45e56b4..a32646a 100644 --- a/lib/client.js +++ b/lib/client.js @@ -13278,14 +13278,15 @@ var CSS11 = String.raw` .dim-contextSwitch:checked { border-color: var(--dsw-alias-state-business-primary, #3370ff); background: var(--dsw-alias-state-business-primary, #3370ff); } .dim-contextSwitch:checked::before { transform: translateX(13px); background: #fff; } .dim-contextFields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 3px 12px; } -.dim-contextField { min-width: 0; min-height: 30px; display: flex; align-items: center; gap: 6px; } +.dim-contextField { position: relative; min-width: 0; min-height: 30px; display: flex; align-items: center; gap: 6px; } .dim-contextField input { flex: none; width: 14px; height: 14px; margin: 0; accent-color: var(--dsw-alias-state-business-primary, #3370ff); } .dim-contextFieldText { min-width: 0; display: grid; grid-template-columns: max-content max-content; align-items: center; column-gap: 5px; overflow-wrap: anywhere; } .dim-contextFieldName { min-width: 0; line-height: 17px; cursor: pointer; } .dim-contextFieldKey { min-width: 0; grid-column: 1 / -1; color: var(--dsw-alias-label-tertiary, #8f959e); font: 10px/14px ui-monospace, SFMono-Regular, Menlo, monospace; overflow-wrap: anywhere; cursor: pointer; } -.dim-contextFieldHelp { position: relative; } +.dim-contextFieldHelp { position: static; } .dim-contextFieldHelpButton { width: 16px; height: 16px; font-size: 10px; } .dim-contextTooltip.dim-contextFieldTooltip { top: calc(100% + 6px); right: 0; left: auto; width: min(280px, calc(100vw - 72px)); } +.dim-contextField:nth-child(odd) .dim-contextFieldTooltip { right: auto; left: 0; } .dim-contextEditorHeader { position: relative; flex-wrap: wrap; } .dim-contextEditorTitle { min-width: 0; display: inline-flex; align-items: center; gap: 6px; } .dim-contextEditorTitle > label { font-weight: 500; } diff --git a/plugin-src/client/styles.js b/plugin-src/client/styles.js index eb21105..90a5e9c 100644 --- a/plugin-src/client/styles.js +++ b/plugin-src/client/styles.js @@ -245,14 +245,15 @@ const CSS = String.raw` .dim-contextSwitch:checked { border-color: var(--dsw-alias-state-business-primary, #3370ff); background: var(--dsw-alias-state-business-primary, #3370ff); } .dim-contextSwitch:checked::before { transform: translateX(13px); background: #fff; } .dim-contextFields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 3px 12px; } -.dim-contextField { min-width: 0; min-height: 30px; display: flex; align-items: center; gap: 6px; } +.dim-contextField { position: relative; min-width: 0; min-height: 30px; display: flex; align-items: center; gap: 6px; } .dim-contextField input { flex: none; width: 14px; height: 14px; margin: 0; accent-color: var(--dsw-alias-state-business-primary, #3370ff); } .dim-contextFieldText { min-width: 0; display: grid; grid-template-columns: max-content max-content; align-items: center; column-gap: 5px; overflow-wrap: anywhere; } .dim-contextFieldName { min-width: 0; line-height: 17px; cursor: pointer; } .dim-contextFieldKey { min-width: 0; grid-column: 1 / -1; color: var(--dsw-alias-label-tertiary, #8f959e); font: 10px/14px ui-monospace, SFMono-Regular, Menlo, monospace; overflow-wrap: anywhere; cursor: pointer; } -.dim-contextFieldHelp { position: relative; } +.dim-contextFieldHelp { position: static; } .dim-contextFieldHelpButton { width: 16px; height: 16px; font-size: 10px; } .dim-contextTooltip.dim-contextFieldTooltip { top: calc(100% + 6px); right: 0; left: auto; width: min(280px, calc(100vw - 72px)); } +.dim-contextField:nth-child(odd) .dim-contextFieldTooltip { right: auto; left: 0; } .dim-contextEditorHeader { position: relative; flex-wrap: wrap; } .dim-contextEditorTitle { min-width: 0; display: inline-flex; align-items: center; gap: 6px; } .dim-contextEditorTitle > label { font-weight: 500; } diff --git a/test/context-enhancement-ui.test.mjs b/test/context-enhancement-ui.test.mjs index 1a7eba7..22e38d8 100644 --- a/test/context-enhancement-ui.test.mjs +++ b/test/context-enhancement-ui.test.mjs @@ -645,7 +645,10 @@ test('the approved neutral entry and theme-aware modal keep responsive labels an assert.match(styles, /\.dim-contextGuidance textarea::placeholder \{[^}]*--dsw-alias-label-tertiary[^}]*opacity: 1;/); assert.match(styles, /\.dim-contextFieldKey \{[^}]*ui-monospace/); assert.match(styles, /\.dim-contextFieldText \{[^}]*grid-template-columns: max-content max-content;[^}]*column-gap: 5px;/); + assert.match(styles, /\.dim-contextField \{[^}]*position: relative;/); + assert.match(styles, /\.dim-contextFieldHelp \{[^}]*position: static;/); assert.match(styles, /\.dim-contextTooltip\.dim-contextFieldTooltip \{[^}]*right: 0;[^}]*left: auto;/); + assert.match(styles, /\.dim-contextField:nth-child\(odd\) \.dim-contextFieldTooltip \{[^}]*right: auto;[^}]*left: 0;/); assert.match(styles, /@media \(pointer: coarse\) \{\s*\.dim-contextEntry[^}]*min-height: 44px;/); assert.match(styles, /\.dim-contextLabel \{[^}]*overflow-wrap: anywhere;/); assert.match(styles, /\.dim-contextTooltip \{[^}]*opacity: 0;[^}]*visibility: hidden;/);