diff --git a/browser_tests/tests/selectionToolboxSubmenus.spec.ts b/browser_tests/tests/selectionToolboxSubmenus.spec.ts index 5c7d380a5..f526b07e0 100644 --- a/browser_tests/tests/selectionToolboxSubmenus.spec.ts +++ b/browser_tests/tests/selectionToolboxSubmenus.spec.ts @@ -85,7 +85,7 @@ test.describe('Selection Toolbox - More Options Submenus', () => { const initialShape = await nodeRef.getProperty('shape') await openMoreOptions(comfyPage) - await comfyPage.page.getByText('Shape', { exact: true }).click() + await comfyPage.page.getByText('Shape', { exact: true }).hover() await expect(comfyPage.page.getByText('Box', { exact: true })).toBeVisible({ timeout: 5000 }) @@ -136,13 +136,18 @@ test.describe('Selection Toolbox - More Options Submenus', () => { comfyPage }) => { await openMoreOptions(comfyPage) - await expect( - comfyPage.page.getByText('Rename', { exact: true }) - ).toBeVisible({ timeout: 5000 }) + const renameItem = comfyPage.page.getByText('Rename', { exact: true }) + await expect(renameItem).toBeVisible({ timeout: 5000 }) + + // Wait for multiple frames to allow PrimeVue's outside click handler to initialize + for (let i = 0; i < 30; i++) { + await comfyPage.nextFrame() + } await comfyPage.page .locator('#graph-canvas') .click({ position: { x: 0, y: 50 }, force: true }) + await comfyPage.nextFrame() await expect( comfyPage.page.getByText('Rename', { exact: true }) diff --git a/src/components/graph/GraphCanvas.vue b/src/components/graph/GraphCanvas.vue index 06c46da35..48d82e44b 100644 --- a/src/components/graph/GraphCanvas.vue +++ b/src/components/graph/GraphCanvas.vue @@ -87,7 +87,6 @@ @@ -115,7 +114,6 @@ import GraphCanvasMenu from '@/components/graph/GraphCanvasMenu.vue' import NodeTooltip from '@/components/graph/NodeTooltip.vue' import SelectionToolbox from '@/components/graph/SelectionToolbox.vue' import TitleEditor from '@/components/graph/TitleEditor.vue' -import NodeOptions from '@/components/graph/selectionToolbox/NodeOptions.vue' import NodePropertiesPanel from '@/components/rightSidePanel/RightSidePanel.vue' import NodeSearchboxPopover from '@/components/searchbox/NodeSearchBoxPopover.vue' import SideToolbar from '@/components/sidebar/SideToolbar.vue' diff --git a/src/components/graph/NodeContextMenu.vue b/src/components/graph/NodeContextMenu.vue new file mode 100644 index 000000000..632108274 --- /dev/null +++ b/src/components/graph/NodeContextMenu.vue @@ -0,0 +1,272 @@ + + + diff --git a/src/components/graph/SelectionToolbox.test.ts b/src/components/graph/SelectionToolbox.test.ts index e8e689bb2..0938a3fe3 100644 --- a/src/components/graph/SelectionToolbox.test.ts +++ b/src/components/graph/SelectionToolbox.test.ts @@ -136,6 +136,7 @@ describe('SelectionToolbox', () => { '
', props: ['pt', 'style', 'class'] }, + NodeContextMenu: { template: '
' }, InfoButton: { template: '
' }, ColorPickerButton: { template: diff --git a/src/components/graph/SelectionToolbox.vue b/src/components/graph/SelectionToolbox.vue index 06626ab1e..a56a82cf9 100644 --- a/src/components/graph/SelectionToolbox.vue +++ b/src/components/graph/SelectionToolbox.vue @@ -42,6 +42,7 @@
+ diff --git a/src/components/graph/selectionToolbox/NodeOptions.vue b/src/components/graph/selectionToolbox/NodeOptions.vue deleted file mode 100644 index 3a8461f05..000000000 --- a/src/components/graph/selectionToolbox/NodeOptions.vue +++ /dev/null @@ -1,322 +0,0 @@ - - - diff --git a/src/components/graph/selectionToolbox/NodeOptionsButton.vue b/src/components/graph/selectionToolbox/NodeOptionsButton.vue index 2b4e613c2..91c05d371 100644 --- a/src/components/graph/selectionToolbox/NodeOptionsButton.vue +++ b/src/components/graph/selectionToolbox/NodeOptionsButton.vue @@ -1,6 +1,5 @@