feat(tabs): 支持标签展示配置并提示保存 SQL 文件

- 新增标签展示元素配置,支持单行、双行布局和元素排序

- 在设置面板提供标签展示入口并持久化用户配置

- 标签右键菜单增加标签设置入口并优化悬浮信息展示

- 关闭外部 SQL 文件标签前检测未保存草稿并支持保存后关闭
This commit is contained in:
Syngnat
2026-06-02 11:16:25 +08:00
parent e6dd986115
commit c405eb08b5
11 changed files with 1664 additions and 60 deletions

View File

@@ -0,0 +1,46 @@
import { describe, expect, it } from 'vitest';
import {
clearQueryTabDraft,
clearSQLFileTabDraft,
getQueryTabDraft,
getSQLFileTabDraft,
hasQueryTabDraft,
hasSQLFileTabDraft,
setQueryTabDraft,
setSQLFileTabDraft,
} from './sqlFileTabDrafts';
describe('sqlFileTabDrafts', () => {
it('stores query editor drafts outside the persisted tab state', () => {
clearQueryTabDraft('query-tab-1');
expect(hasQueryTabDraft('query-tab-1')).toBe(false);
expect(getQueryTabDraft('query-tab-1', 'fallback')).toBe('fallback');
setQueryTabDraft('query-tab-1', 'select * from large_table;');
expect(hasQueryTabDraft('query-tab-1')).toBe(true);
expect(getQueryTabDraft('query-tab-1', 'fallback')).toBe('select * from large_table;');
clearQueryTabDraft('query-tab-1');
expect(hasQueryTabDraft('query-tab-1')).toBe(false);
});
it('stores external SQL file editor drafts outside the persisted tab state', () => {
clearSQLFileTabDraft('tab-1');
expect(hasSQLFileTabDraft('tab-1')).toBe(false);
expect(getSQLFileTabDraft('tab-1', 'fallback')).toBe('fallback');
setSQLFileTabDraft('tab-1', 'select 1;');
expect(hasSQLFileTabDraft('tab-1')).toBe(true);
expect(getSQLFileTabDraft('tab-1', 'fallback')).toBe('select 1;');
clearSQLFileTabDraft('tab-1');
expect(hasSQLFileTabDraft('tab-1')).toBe(false);
});
});