mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-05-16 09:27:36 +08:00
- 收敛左上角入口为工具和设置中心,并调整新建连接操作优先级 - 优化表设计器 SQL 预览高亮和刷新前未保存字段变更确认 - 下移数据页次级操作并将编辑行收口到单元格右键菜单 - 补充侧边栏布局、表设计器草稿检测和数据页布局回归测试 Refs #324
72 lines
2.1 KiB
TypeScript
72 lines
2.1 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import {
|
|
SIDEBAR_UTILITY_ITEM_KEYS,
|
|
resolveAIEntryPlacement,
|
|
resolveAIEdgeHandleAttachment,
|
|
resolveAIEdgeHandleDockStyle,
|
|
resolveAIEdgeHandleStyle,
|
|
} from './aiEntryLayout';
|
|
|
|
describe('ai entry layout', () => {
|
|
it('keeps the sidebar utility group compact and free of the AI entry', () => {
|
|
expect(SIDEBAR_UTILITY_ITEM_KEYS).toEqual(['tools', 'settings']);
|
|
});
|
|
|
|
it('anchors the AI entry to the content edge', () => {
|
|
expect(resolveAIEntryPlacement()).toBe('content-edge');
|
|
});
|
|
|
|
it('attaches the closed handle to the content shell', () => {
|
|
expect(resolveAIEdgeHandleAttachment(false)).toBe('content-shell');
|
|
});
|
|
|
|
it('attaches the open handle to the panel shell', () => {
|
|
expect(resolveAIEdgeHandleAttachment(true)).toBe('panel-shell');
|
|
});
|
|
|
|
it('keeps the closed handle docked on the content edge', () => {
|
|
expect(resolveAIEdgeHandleDockStyle('content-shell')).toMatchObject({
|
|
position: 'absolute',
|
|
top: 16,
|
|
right: 0,
|
|
zIndex: 12,
|
|
});
|
|
});
|
|
|
|
it('keeps the open handle outside the panel shell to avoid header overlap', () => {
|
|
expect(resolveAIEdgeHandleDockStyle('panel-shell')).toMatchObject({
|
|
position: 'absolute',
|
|
top: 16,
|
|
right: '100%',
|
|
zIndex: 12,
|
|
});
|
|
});
|
|
|
|
it('uses the attached active appearance when the AI panel is open', () => {
|
|
const style = resolveAIEdgeHandleStyle({
|
|
darkMode: true,
|
|
aiPanelVisible: true,
|
|
effectiveUiScale: 1,
|
|
});
|
|
|
|
expect(style.color).toBe('#ffd666');
|
|
expect(style.background).toBe('rgba(255,214,102,0.12)');
|
|
expect(style.borderRadius).toBe('10px 0 0 10px');
|
|
expect(style.borderRight).toBe('none');
|
|
expect(style.height).toBe(24);
|
|
});
|
|
|
|
it('uses the subdued attached appearance when the AI panel is closed', () => {
|
|
const style = resolveAIEdgeHandleStyle({
|
|
darkMode: false,
|
|
aiPanelVisible: false,
|
|
effectiveUiScale: 1,
|
|
});
|
|
|
|
expect(style.color).toBe('rgba(22,32,51,0.82)');
|
|
expect(style.background).toBe('rgba(15,23,42,0.04)');
|
|
expect(style.paddingInline).toBe(8);
|
|
expect(style.borderRadius).toBe('10px 0 0 10px');
|
|
});
|
|
});
|