xyflow / web

📖 This monorepo contains the xyflow website and the documentation sites for React Flow and Svelte Flow.
https://xyflow.com
MIT License
48 stars 52 forks source link

Context menu does not react to zoom and pan movements #483

Open ilamanov opened 2 months ago

ilamanov commented 2 months ago

What platform were you using when you found the bug?

Live code example

https://svelteflow.dev/examples/interaction/context-menu

Describe the Bug

SvelteFlow's context menu does not react to zoom and pan effects. This can be seen from SvelteFlow's own example: https://svelteflow.dev/examples/interaction/context-menu

Seems like there is no way to get around this issue now. Would be great if the context menu react to zoom and to be able to hide the context menu when panning. (I can't hide the context menu on pan currently because there is no callback when pan happens)

Steps to reproduce the bug or issue

  1. Go to https://svelteflow.dev/examples/interaction/context-menu
  2. Right click to open context menu
  3. Try to zoom and pan

Expected behavior

  1. Context menu should react to scale/zoom
  2. It should be hidden when panning

Screenshots or Videos

https://github.com/user-attachments/assets/958c17ce-6352-4f8a-8fa5-03f721669255

Additional context

No response

alexanderhorner commented 2 months ago

Native context menus usually disappear on scroll or dragging. That's how I did it with my context menu and it feels pretty good. If you want it to move with the pane you would have to make it relative to that. Right now it's positioned relative to the container wich doesnt move.

peterkogo commented 2 months ago

This would be an enhancement of the showcased example as we very much encourage people to build their own context menus.

A context menu placed inside the viewport can be achieved via the ViewportPortal - but imagine being zoomed out very far, then you'd have a very tiny context menu.

I like @alexanderhorner suggestion, but this really depends on the use case. What if panning while the context menu is open is a regular occurrence in your application? Maybe translating but not scaling the context menu is the answer.

Anyway, these decisions are best left for application maintainers, but I will check with the team if we can have a better default behavior.