[RAC] MenuItem should support closeOnSelect boolean for when pressed/selected
Provide a general summary of the feature here
react-aria-component's MenuItem does not support an option to keep the Menu open after clicking on a specific MenuItem
๐ค Expected Behavior?
Support a boolean prop for MenuItem like closeOnSelect?: boolean, so that if it's false, the onAction handler fires but does not automatically close the menu
๐ฏ Current Behavior
Any click on a MenuItem causes the entire menu to close
๐ Possible Solution
No response
๐ฆ Context
- I'd like to insert some menu item buttons and entries that have checkboxes, where I'd like to keep the menu open when a user selects the checkbox. These checkboxes are in a sub-menu, so the user experience is annoying if they have to keep reopening the menu and hovering over the sub-item to see the checkbox values in the submenu. This can be worked around with to an extent using the
selectionModeprop for theMenu - I'd like some menu items to act like a button that kicks off a side-effect and still keep the menu open afterwards after its selected and the
onActionhandler fires
๐ป Examples
No response
๐งข Your Company/Team
Squint.ai
๐ท Tracking Issue
No response
Just re-read the documentation and noticed that there's a way to enable selection mode, but it'd be great to also optionally support a closeOnSelect?: boolean for when I want a menu item's action handle to act like a button that kicks off a side-effect and keeps the menu open afterwards still.
useMenuItem does support this option: https://github.com/adobe/react-spectrum/blob/22a9d27f62bf68668bd5bc08bede09bc0c73ae53/packages/%40react-aria/menu/src/useMenuItem.ts#L72-L76
and it should already work if you pass it to react-aria-components MenuItem since it spreads all props. I forget if there was a reason it's not in the TypeScript definition. Will discuss with the team but you should be able to use it with a @ts-ignore in the meantime I think.
Would be nice if ListBoxItem component supported that as well
ListBox doesn't know about modals or popovers, can you share a codesandbox of what you're trying to do?