fix: 当选择模式激活时关闭上下文菜单

- 添加 `useEffect`,在 `isAssetSelectionMode` 为 true 时关闭菜单。
- 更新测试以覆盖新行为。
This commit is contained in:
2026-07-31 19:46:44 +08:00
parent 31900df2b8
commit 8526063cea
2 changed files with 29 additions and 2 deletions
@@ -126,8 +126,10 @@ function renderAssetRow({
onDownloadAsset,
};
render(<ImageCanvasAssetRowView {...props} />);
return props;
return {
props,
...render(<ImageCanvasAssetRowView {...props} />),
};
}
describe('ImageCanvasAssetRowView', () => {
@@ -185,6 +187,25 @@ describe('ImageCanvasAssetRowView', () => {
expect(screen.queryByRole('menu')).toBeNull();
});
it('closes the right click menu when selection mode becomes active', () => {
const { props, rerender } = renderAssetRow();
fireEvent.contextMenu(
screen.getByRole('button', { name: '添加账号素材A' }),
{
clientX: 120,
clientY: 80,
},
);
expect(screen.getByRole('menu')).toBeTruthy();
rerender(
<ImageCanvasAssetRowView {...props} isAssetSelectionMode={true} />,
);
expect(screen.queryByRole('menu')).toBeNull();
});
it('selects the asset instead of adding it in selection mode', () => {
const addAssetLayer = vi.fn();
const toggleAssetSelected = vi.fn();
@@ -106,6 +106,12 @@ export function ImageCanvasAssetRowView({
setMenuPosition(null);
}, []);
useEffect(() => {
if (isAssetSelectionMode) {
closeMenu();
}
}, [closeMenu, isAssetSelectionMode]);
const selectAssetFromEvent = useCallback(
(event: ReactMouseEvent<HTMLElement>) => {
const pointerKind =