feat(compass-components): add context menu COMPASS-9386#6956
Merged
Conversation
…p menu state consistent The refactor is meant to make the Leafygreen integration more straightforward: 1. We stick to item groups and instead have a single wrapper to handle any rendering differences between groups. This allows the wrapper to always have context of all items when rendering which is useful when inserting menu seperators in Leafygreen. Also encourages consistent UI (while allowing per-case customization if needed at wrapper-level). We could introduce itemWrappers instead of itemGroups but having one wrapper handling all seems cleaner to me. 2. More of the responsibility is moved to a parent wrapper component that will house the context menu. This allows us to standardize the right click menu and make better use of Leafygreen's menu component including its click handling (which has been removed from the context menu library). 3. Menu state (i.e. position) is now preserved even closed; this is useful for leafygreen's menu to animate in the same position instead of losing the position all together.
…ompass into gagik/context-menu-compass-ui
…p menu state consistent The refactor is meant to make the Leafygreen integration more straightforward: 1. We stick to item groups and instead have a single wrapper to handle any rendering differences between groups. This allows the wrapper to always have context of all items when rendering which is useful when inserting menu seperators in Leafygreen. Also encourages consistent UI (while allowing per-case customization if needed at wrapper-level). We could introduce itemWrappers instead of itemGroups but having one wrapper handling all seems cleaner to me. 2. More of the responsibility is moved to a parent wrapper component that will house the context menu. This allows us to standardize the right click menu and make better use of Leafygreen's menu component including its click handling (which has been removed from the context menu library). 3. Menu state (i.e. position) is now preserved even closed; this is useful for leafygreen's menu to animate in the same position instead of losing the position all together.
82a10c5 to
ca1fb86
Compare
…ompass into gagik/context-menu-compass-ui
gagik
commented
May 23, 2025
| children: React.ReactNode; | ||
| }) { | ||
| return ( | ||
| <ContextMenuProviderBase wrapper={ContextMenu}> |
Contributor
Author
There was a problem hiding this comment.
maybe there's a better way to structure this, including the wrapper passing in general
30b97a5 to
6b6e398
Compare
7e90b5f to
4dafa7b
Compare
gagik
commented
Jun 19, 2025
This reverts commit 4dafa7b and uses testing-library instead.
kraenhansen
reviewed
Jun 25, 2025
Comment on lines
+15
to
+29
| let component: ReactWrapper; | ||
| beforeEach(function () { | ||
| component = mount( | ||
| <DocumentListView | ||
| docs={hadronDocs} | ||
| isEditable={false} | ||
| isTimeSeries={false} | ||
| />, | ||
| { wrappingComponent: ContextMenuProvider } | ||
| ); | ||
| }); | ||
|
|
||
| afterEach(function () { | ||
| component?.unmount(); | ||
| }); |
Contributor
There was a problem hiding this comment.
I wonder why this was needed and if it accidentally crept in from another PR? cc @gagik (tagging you for when you get back - it's not urgent)
Contributor
Author
There was a problem hiding this comment.
This was causing unintended side-effects (runtime errors) for other tests when running because it'd try to mount a component during the test discovery phase (basically mocha would import the file and it'd already run mount)
kraenhansen
approved these changes
Jun 25, 2025
kraenhansen
reviewed
Jun 27, 2025
| import { useContextMenuItems, ContextMenu } from './context-menu'; | ||
| import type { ContextMenuItem } from '@mongodb-js/compass-context-menu'; | ||
|
|
||
| describe('useContextMenuItems', function () { |
Contributor
There was a problem hiding this comment.
We might be missing a test to ensure the menu closes once clicked?
kraenhansen
reviewed
Jun 27, 2025
bae0640 to
fc243d0
Compare
This was referenced Jun 30, 2025
Merged
Simplify ContextMenuItemGroup by removing originListener
…xt-menu-compass-ui
b0e0a69 to
e6e22cc
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ties #6937's context menu with leafygreen components and exposes that.