mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-08-11 09:13:36 +08:00
🐛 fix(tab-manager): 修复工作区标签批量关闭菜单失效
- 将右键菜单项和下拉菜单排除在标签拖拽触发区域外 - 避免 dnd-kit 指针捕获吞掉关闭其他页及左右侧关闭操作 - 补充菜单项不触发拖拽的指针回归测试
This commit is contained in:
@@ -68,10 +68,15 @@ describe('TabManager hover info', () => {
|
||||
closest: vi.fn((selector: string) =>
|
||||
selector.includes('.ant-tabs-tab-remove') ? { className: 'ant-tabs-tab-remove' } : null),
|
||||
} as unknown as EventTarget;
|
||||
const contextMenuItem = {
|
||||
closest: vi.fn((selector: string) =>
|
||||
selector.includes('[role="menuitem"]') ? { role: 'menuitem' } : null),
|
||||
} as unknown as EventTarget;
|
||||
|
||||
expect(shouldActivateTabDragPointer({ button: 0, target: tabContent })).toBe(true);
|
||||
expect(shouldActivateTabDragPointer({ button: 0, target: closeIcon })).toBe(false);
|
||||
expect(shouldActivateTabDragPointer({ button: 0, target: legacyCloseIcon })).toBe(false);
|
||||
expect(shouldActivateTabDragPointer({ button: 0, target: contextMenuItem })).toBe(false);
|
||||
expect(shouldActivateTabDragPointer({ button: 1, target: tabContent })).toBe(false);
|
||||
expect(shouldActivateTabDragPointer({ button: 2, target: tabContent })).toBe(false);
|
||||
expect(shouldActivateTabDragPointer({ button: 0, ctrlKey: true, target: tabContent })).toBe(false);
|
||||
@@ -85,6 +90,10 @@ describe('TabManager hover info', () => {
|
||||
const closeIcon = {
|
||||
closest: vi.fn(() => ({ className: 'gn-v2-tab-close' })),
|
||||
} as unknown as EventTarget;
|
||||
const contextMenuItem = {
|
||||
closest: vi.fn((selector: string) =>
|
||||
selector.includes('[role="menuitem"]') ? { role: 'menuitem' } : null),
|
||||
} as unknown as EventTarget;
|
||||
const buildEvent = (overrides: Record<string, unknown> = {}) => ({
|
||||
button: 0,
|
||||
ctrlKey: false,
|
||||
@@ -102,6 +111,7 @@ describe('TabManager hover info', () => {
|
||||
setPointerCapture.mockClear();
|
||||
listener.mockClear();
|
||||
handleTabDragPointerDown(buildEvent({ target: closeIcon }), listener);
|
||||
handleTabDragPointerDown(buildEvent({ target: contextMenuItem }), listener);
|
||||
handleTabDragPointerDown(buildEvent({ button: 2 }), listener);
|
||||
handleTabDragPointerDown(buildEvent({ ctrlKey: true }), listener);
|
||||
expect(setPointerCapture).not.toHaveBeenCalled();
|
||||
|
||||
@@ -521,7 +521,9 @@ const TAB_DRAG_INTERACTIVE_SELECTOR = [
|
||||
'select',
|
||||
'[contenteditable="true"]',
|
||||
'[role="button"]',
|
||||
'[role="menuitem"]',
|
||||
'[data-tab-drag-ignore="true"]',
|
||||
'.ant-dropdown-menu',
|
||||
'.ant-tabs-tab-remove',
|
||||
'.gn-v2-tab-close',
|
||||
].join(', ');
|
||||
|
||||
Reference in New Issue
Block a user