From 01dd62f4e217310038a2fe31882817d0d3e15d11 Mon Sep 17 00:00:00 2001 From: Syngnat Date: Sun, 26 Apr 2026 18:04:01 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(table-designer):=20=E5=8E=BB?= =?UTF-8?q?=E9=99=A4=20SQL=20=E5=8F=98=E6=9B=B4=E9=87=8D=E5=A4=8D=E6=A0=87?= =?UTF-8?q?=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 Monaco glyph margin 变更标记通道 - 仅保留 line decorations 左侧单一变更标记 - 补充防重复标记回归测试 Refs #324 --- .../src/components/TableDesignerSqlPreview.test.tsx | 12 ++++++++++++ frontend/src/components/TableDesignerSqlPreview.tsx | 2 -- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/TableDesignerSqlPreview.test.tsx b/frontend/src/components/TableDesignerSqlPreview.test.tsx index b05c909..1350e4b 100644 --- a/frontend/src/components/TableDesignerSqlPreview.test.tsx +++ b/frontend/src/components/TableDesignerSqlPreview.test.tsx @@ -91,6 +91,7 @@ describe('TableDesignerSqlPreview', () => { expect(markup).toContain('data-theme="gonavi-sql-preview-light"'); expect(markup).toContain('"readOnly":true'); expect(markup).toContain('"lineNumbers":"on"'); + expect(markup).not.toContain('"glyphMargin":true'); expect(markup).toContain('ALTER TABLE'); expect(markup).toContain('RENAME COLUMN'); @@ -143,6 +144,7 @@ describe('TableDesignerSqlPreview', () => { options: expect.objectContaining({ className: expect.stringContaining('gonavi-sql-preview-change-line-add'), isWholeLine: true, + linesDecorationsClassName: expect.stringContaining('gonavi-sql-preview-change-marker-add'), }), }), expect.objectContaining({ @@ -150,12 +152,22 @@ describe('TableDesignerSqlPreview', () => { options: expect.objectContaining({ className: expect.stringContaining('gonavi-sql-preview-change-line-drop'), isWholeLine: true, + linesDecorationsClassName: expect.stringContaining('gonavi-sql-preview-change-marker-drop'), }), }), ]), ); const firstDecorationCall = mockEditor.deltaDecorations.mock.calls[0] as unknown as [unknown, unknown[]]; expect(firstDecorationCall[1]).toHaveLength(2); + expect(firstDecorationCall[1]).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + options: expect.not.objectContaining({ + glyphMarginClassName: expect.any(String), + }), + }), + ]), + ); }); it('uses the dark SQL preview theme when dark mode is enabled', () => { diff --git a/frontend/src/components/TableDesignerSqlPreview.tsx b/frontend/src/components/TableDesignerSqlPreview.tsx index 2622d0d..05d32f4 100644 --- a/frontend/src/components/TableDesignerSqlPreview.tsx +++ b/frontend/src/components/TableDesignerSqlPreview.tsx @@ -151,7 +151,6 @@ const TableDesignerSqlPreview: React.FC = ({ range: new monaco.Range(highlight.lineNumber, 1, highlight.lineNumber, endColumn), options: { className: getLineDecorationClassName(highlight.kind), - glyphMarginClassName: getLineDecorationMarkerClassName(highlight.kind), hoverMessage: { value: highlight.label }, isWholeLine: true, linesDecorationsClassName: getLineDecorationMarkerClassName(highlight.kind), @@ -233,7 +232,6 @@ const TableDesignerSqlPreview: React.FC = ({ automaticLayout: true, fontFamily: '"JetBrains Mono", "Cascadia Code", Consolas, monospace', fontSize: 13, - glyphMargin: true, lineNumbers: 'on', lineDecorationsWidth: 14, minimap: { enabled: false },