From 9706fa571a96f194faaf3faea2e2d3a4e7149aba Mon Sep 17 00:00:00 2001 From: AutumnNazi <104422820+AutumnNazi@users.noreply.github.com> Date: Wed, 22 Jul 2026 17:44:25 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(query-editor):=20=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E6=90=9C=E7=B4=A2=E6=A1=86=E9=A1=B6=E9=83=A8=E7=A9=BA?= =?UTF-8?q?=E7=99=BD=E5=8C=BA=E5=9F=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 禁用 Monaco 查找组件的顶部预留空间,保持浮层显示 - 删除 V2 查询编辑器中查找组件的额外 24px 顶部补偿 - 更新查找配置与样式回归测试 --- .../components/QueryEditor.external-sql-save.test.tsx | 11 +++++------ frontend/src/components/QueryEditor.i18n.test.ts | 2 +- frontend/src/components/QueryEditor.tsx | 8 ++++---- frontend/src/styles/v2-theme-workbench.css | 5 ----- 4 files changed, 10 insertions(+), 16 deletions(-) diff --git a/frontend/src/components/QueryEditor.external-sql-save.test.tsx b/frontend/src/components/QueryEditor.external-sql-save.test.tsx index a1d1b3a1..46b47507 100644 --- a/frontend/src/components/QueryEditor.external-sql-save.test.tsx +++ b/frontend/src/components/QueryEditor.external-sql-save.test.tsx @@ -4526,7 +4526,7 @@ describe('QueryEditor external SQL save', () => { expect(initialOptions).toMatchObject({ fixedOverflowWidgets: true, find: { - addExtraSpaceOnTop: true, + addExtraSpaceOnTop: false, }, hover: { enabled: true, @@ -11164,14 +11164,13 @@ describe('QueryEditor external SQL save', () => { expect(css).toContain('body[data-ui-version="v2"] .gn-v2-query-results .query-result-tab-text {'); }); - it('keeps Monaco find widget spacing scoped to the v2 query editor shell', () => { + it('does not reserve vertical space for the Monaco find widget in the v2 query editor', () => { const source = readFileSync(new URL('./QueryEditor.tsx', import.meta.url), 'utf8'); const css = readV2ThemeCss(); - expect(source).toContain('addExtraSpaceOnTop: true'); - expect(css).toContain('body[data-ui-version="v2"] .gn-v2-query-monaco-stage:has(.monaco-editor .find-widget.visible:not(.hiddenEditor)) {'); - expect(css).toContain('padding-top: 24px;'); - expect(css).toContain('overflow: visible;'); + expect(source).not.toContain('addExtraSpaceOnTop: true'); + expect(css).not.toContain('body[data-ui-version="v2"] .gn-v2-query-monaco-stage:has(.monaco-editor .find-widget.visible:not(.hiddenEditor)) {'); + expect(css).not.toContain('padding-top: 24px;'); expect(css).not.toContain('body[data-ui-version="v2"] .gn-v2-query-monaco-stage .monaco-editor .find-widget {'); }); diff --git a/frontend/src/components/QueryEditor.i18n.test.ts b/frontend/src/components/QueryEditor.i18n.test.ts index 6637688e..87840be9 100644 --- a/frontend/src/components/QueryEditor.i18n.test.ts +++ b/frontend/src/components/QueryEditor.i18n.test.ts @@ -39,7 +39,7 @@ describe('QueryEditor i18n source guards', () => { expect(queryEditorSource).toContain('query_editor.action.find_in_editor'); expect(queryEditorSource).toContain('gonavi:find-active-query'); expect(queryEditorSource).toContain("editor.getAction?.('actions.find')"); - expect(queryEditorSource).toContain('addExtraSpaceOnTop: true'); + expect(queryEditorSource).toContain('addExtraSpaceOnTop: false'); }); it('uses a localized wrapper for save query failures', () => { diff --git a/frontend/src/components/QueryEditor.tsx b/frontend/src/components/QueryEditor.tsx index 1f681210..09550c5d 100644 --- a/frontend/src/components/QueryEditor.tsx +++ b/frontend/src/components/QueryEditor.tsx @@ -210,9 +210,6 @@ export { const buildQueryEditorMonacoActionLabel = (key: string): string => `GoNavi: ${translate(key)}`; -const QUERY_EDITOR_MONACO_FIND_OPTIONS = { - addExtraSpaceOnTop: true, -} as const; const QUERY_EDITOR_NATIVE_SELECT_CURRENT_LINE_EVENT = 'gonavi:native-select-current-line'; const QUERY_EDITOR_MAC_FIND_WITH_SELECTION_COMBO = 'Meta+E'; const QUERY_EDITOR_MAC_FIND_WITH_SELECTION_GUARD_ACTION_ID = 'gonavi.suppressMacFindWithSelection'; @@ -316,7 +313,10 @@ const buildQueryEditorMonacoOptions = (isObjectEditQueryTab: boolean) => ({ minimap: { enabled: false }, automaticLayout: true, fixedOverflowWidgets: true, - find: QUERY_EDITOR_MONACO_FIND_OPTIONS, + // Keep the find widget as an overlay; Monaco's default top spacer creates a blank band. + find: { + addExtraSpaceOnTop: false, + }, hover: { enabled: true, delay: QUERY_EDITOR_HOVER_DELAY_MS, diff --git a/frontend/src/styles/v2-theme-workbench.css b/frontend/src/styles/v2-theme-workbench.css index 2a5569cb..6f84a532 100644 --- a/frontend/src/styles/v2-theme-workbench.css +++ b/frontend/src/styles/v2-theme-workbench.css @@ -296,11 +296,6 @@ body[data-ui-version="v2"] .gn-v2-query-monaco-stage { background: var(--gn-bg-panel); } -body[data-ui-version="v2"] .gn-v2-query-monaco-stage:has(.monaco-editor .find-widget.visible:not(.hiddenEditor)) { - padding-top: 24px; - overflow: visible; -} - body[data-ui-version="v2"] .gn-v2-query-monaco-shell { min-height: 0; overflow: visible;