diff --git a/web/app/components/workflow/__tests__/selection-contextmenu.spec.tsx b/web/app/components/workflow/__tests__/selection-contextmenu.spec.tsx index efa6e2abbb..a52f9b17d3 100644 --- a/web/app/components/workflow/__tests__/selection-contextmenu.spec.tsx +++ b/web/app/components/workflow/__tests__/selection-contextmenu.spec.tsx @@ -25,7 +25,7 @@ vi.mock('@/next/navigation', () => ({ }), })) -vi.mock('@/app/components/base/ui/toast', () => ({ +vi.mock('@langgenius/dify-ui/toast', () => ({ toast: { success: (...args: unknown[]) => mockToastSuccess(...args), error: (...args: unknown[]) => mockToastError(...args), @@ -39,13 +39,19 @@ vi.mock('@/service/use-snippets', () => ({ }), })) -vi.mock('@/service/client', () => ({ - consoleClient: { - snippets: { - syncDraftWorkflow: (...args: unknown[]) => mockSyncDraftWorkflow(...args), +vi.mock('@/service/client', async (importOriginal) => { + const actual = await importOriginal() + return { + ...actual, + consoleClient: { + ...actual.consoleClient, + snippets: { + ...actual.consoleClient.snippets, + syncDraftWorkflow: (...args: unknown[]) => mockSyncDraftWorkflow(...args), + }, }, - }, -})) + } +}) vi.mock('../hooks', async () => { const actual = await vi.importActual('../hooks') @@ -301,6 +307,8 @@ describe('SelectionContextmenu', () => { }) fireEvent.click(screen.getByTestId('selection-contextmenu-item-createSnippet')) + expect(store.getState().selectionMenu).toBeUndefined() + expect(screen.queryByTestId('selection-contextmenu-item-createSnippet')).not.toBeInTheDocument() fireEvent.change(screen.getByPlaceholderText('workflow.snippet.namePlaceholder'), { target: { value: 'My snippet' }, }) diff --git a/web/app/components/workflow/selection-contextmenu.tsx b/web/app/components/workflow/selection-contextmenu.tsx index 17e3904b8e..35e01f34d2 100644 --- a/web/app/components/workflow/selection-contextmenu.tsx +++ b/web/app/components/workflow/selection-contextmenu.tsx @@ -335,6 +335,7 @@ const SelectionContextmenu = () => { }), } }, [selectionMenu]) + const isMenuOpen = Boolean(selectionMenu && anchor) useEffect(() => { if (selectionMenu && selectedNodes.length <= 1) @@ -561,57 +562,59 @@ const SelectionContextmenu = () => { return (
{ if (!open) handleSelectionContextmenuCancel() }} > - -
- {menuActions.map(item => ( - handleMenuAction(item.action)} - > - {getActionLabel(item.translationKey)} - {item.shortcutKeys && ( - - )} - - ))} -
- -
-
- {alignMenuItems.map((item) => { - return ( - handleAlignNodes(item.alignType)} - > - - - ) - })} + {isMenuOpen && ( + +
+ {menuActions.map(item => ( + handleMenuAction(item.action)} + > + {getActionLabel(item.translationKey)} + {item.shortcutKeys && ( + + )} + + ))}
-
- + +
+
+ {alignMenuItems.map((item) => { + return ( + handleAlignNodes(item.alignType)} + > + + + ) + })} +
+
+ + )} {isCreateSnippetDialogOpen && (