File tree Expand file tree Collapse file tree 2 files changed +21
-3
lines changed
Expand file tree Collapse file tree 2 files changed +21
-3
lines changed Original file line number Diff line number Diff line change @@ -82,7 +82,8 @@ class Menu extends Component<MenuProps> {
8282 shouldFocusTriggerOnClose : true ,
8383 withArrow : true ,
8484 offsetX : 0 ,
85- offsetY : 0
85+ offsetY : 0 ,
86+ focusFirsItemOnOpen : false
8687 }
8788
8889 static Item = MenuItem
@@ -455,7 +456,8 @@ class Menu extends Component<MenuProps> {
455456 onMouseOver,
456457 positionContainerDisplay,
457458 offsetX,
458- offsetY
459+ offsetY,
460+ focusFirsItemOnOpen
459461 } = this . props
460462
461463 return trigger ? (
@@ -500,6 +502,17 @@ class Menu extends Component<MenuProps> {
500502 onKeyDown : this . handleTriggerKeyDown ,
501503 disabled : ( trigger as ReactElement ) . props . disabled || disabled
502504 } ) }
505+ defaultFocusElement = {
506+ focusFirsItemOnOpen
507+ ? ( ) => {
508+ // TODO: this could be better. Maybe a more precise selector
509+ // @ts -expect-error it works
510+ return this . _popover ?. _contentElement ?. querySelector (
511+ '[class$="menuItem"]'
512+ )
513+ }
514+ : undefined
515+ }
503516 >
504517 { this . renderMenu ( ) }
505518 </ Popover >
Original file line number Diff line number Diff line change @@ -175,6 +175,10 @@ type MenuOwnProps = {
175175 * Content to render in the label's info region. It is only visible on nested Menus.
176176 */
177177 renderLabelInfo ?: React . ReactNode | ( ( ) => React . ReactNode )
178+ /**
179+ * If true, when menu opens, the focus will jump to the first menuItem
180+ */
181+ focusFirsItemOnOpen ?: boolean
178182}
179183
180184type PropKeys = keyof MenuOwnProps
@@ -223,7 +227,8 @@ const propTypes: PropValidators<PropKeys> = {
223227 offsetX : PropTypes . oneOfType ( [ PropTypes . string , PropTypes . number ] ) ,
224228 offsetY : PropTypes . oneOfType ( [ PropTypes . string , PropTypes . number ] ) ,
225229 maxHeight : PropTypes . string ,
226- renderLabelInfo : PropTypes . node
230+ renderLabelInfo : PropTypes . node ,
231+ focusFirsItemOnOpen : PropTypes . bool
227232}
228233
229234const allowedProps : AllowedPropKeys = [
You can’t perform that action at this time.
0 commit comments