File tree Expand file tree Collapse file tree 3 files changed +29
-0
lines changed Expand file tree Collapse file tree 3 files changed +29
-0
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ ' @leafygreen-ui/menu ' : patch
3
+ ---
4
+
5
+ Adds semantically correct ` type="button" ` to MenuItem components that are rendered as a button. This prevents submitting forms when Menu components are rendered inside of forms.
Original file line number Diff line number Diff line change @@ -83,6 +83,13 @@ export const InternalMenuItemContent = React.forwardRef<
83
83
}
84
84
: { } ;
85
85
86
+ const defaultButtonProps =
87
+ as === 'button'
88
+ ? {
89
+ type : 'button' ,
90
+ }
91
+ : { } ;
92
+
86
93
return (
87
94
< InputOption
88
95
ref = { fwdRef }
@@ -133,6 +140,7 @@ export const InternalMenuItemContent = React.forwardRef<
133
140
} ,
134
141
className ,
135
142
) }
143
+ { ...defaultButtonProps }
136
144
{ ...defaultAnchorProps }
137
145
{ ...rest }
138
146
>
Original file line number Diff line number Diff line change @@ -90,6 +90,22 @@ describe('packages/menu/menu-item', () => {
90
90
} ) ;
91
91
} ) ;
92
92
93
+ describe ( 'when rendered inside a form' , ( ) => {
94
+ test ( 'does not invoke a forms submit handler when clicked' , ( ) => {
95
+ const onSubmit = jest . fn ( ) ;
96
+
97
+ const { getByTestId } = render (
98
+ < form onSubmit = { onSubmit } >
99
+ < MenuItem data-testid = "menu-item" />
100
+ </ form > ,
101
+ ) ;
102
+
103
+ const menuItem = getByTestId ( 'menu-item' ) ;
104
+ userEvent . click ( menuItem ) ;
105
+ expect ( onSubmit ) . not . toHaveBeenCalled ( ) ;
106
+ } ) ;
107
+ } ) ;
108
+
93
109
/* eslint-disable jest/no-disabled-tests */
94
110
describe ( 'types behave as expected' , ( ) => {
95
111
test . skip ( 'Accepts string as `as` prop' , ( ) => {
You can’t perform that action at this time.
0 commit comments