@@ -5,7 +5,7 @@ import ReactDOM from 'react-dom';
55
66import DeleteButton from '../delete-button/delete-button.jsx' ;
77import styles from './sprite-selector-item.css' ;
8- import { ContextMenuTrigger } from 'react-contextmenu' ;
8+ import { ContextMenuTrigger , hideMenu } from 'react-contextmenu' ;
99import { DangerousMenuItem , ContextMenu , MenuItem } from '../context-menu/context-menu.jsx' ;
1010import { FormattedMessage } from 'react-intl' ;
1111
@@ -19,10 +19,23 @@ const SpriteSelectorItem = props => {
1919 }
2020 const menuId = contextMenuIdRef . current ;
2121
22+ const handleMenuMouseDown = onClick => event => {
23+ if ( event . button !== 0 ) {
24+ return ;
25+ }
26+ event . preventDefault ( ) ;
27+ event . stopPropagation ( ) ;
28+ onClick ( event ) ;
29+ hideMenu ( ) ;
30+ } ;
31+
2232 const menu = props . onDuplicateButtonClick || props . onDeleteButtonClick || props . onExportButtonClick ? (
2333 < ContextMenu id = { menuId } >
2434 { props . onDuplicateButtonClick ? (
25- < MenuItem onClick = { props . onDuplicateButtonClick } >
35+ < MenuItem
36+ onClick = { null }
37+ onMouseDown = { handleMenuMouseDown ( props . onDuplicateButtonClick ) }
38+ >
2639 < FormattedMessage
2740 defaultMessage = "duplicate"
2841 description = "Menu item to duplicate in the right click menu"
@@ -31,7 +44,10 @@ const SpriteSelectorItem = props => {
3144 </ MenuItem >
3245 ) : null }
3346 { props . onExportButtonClick ? (
34- < MenuItem onClick = { props . onExportButtonClick } >
47+ < MenuItem
48+ onClick = { null }
49+ onMouseDown = { handleMenuMouseDown ( props . onExportButtonClick ) }
50+ >
3551 < FormattedMessage
3652 defaultMessage = "export"
3753 description = "Menu item to export the selected item"
@@ -40,7 +56,10 @@ const SpriteSelectorItem = props => {
4056 </ MenuItem >
4157 ) : null }
4258 { props . onRenameButtonClick ? (
43- < MenuItem onClick = { props . onRenameButtonClick } >
59+ < MenuItem
60+ onClick = { null }
61+ onMouseDown = { handleMenuMouseDown ( props . onRenameButtonClick ) }
62+ >
4463 < FormattedMessage
4564 defaultMessage = "rename"
4665 description = "Menu item to rename an item"
@@ -49,7 +68,10 @@ const SpriteSelectorItem = props => {
4968 </ MenuItem >
5069 ) : null }
5170 { props . onDeleteButtonClick ? (
52- < DangerousMenuItem onClick = { props . onDeleteButtonClick } >
71+ < DangerousMenuItem
72+ onClick = { null }
73+ onMouseDown = { handleMenuMouseDown ( props . onDeleteButtonClick ) }
74+ >
5375 < FormattedMessage
5476 defaultMessage = "delete"
5577 description = "Menu item to delete in the right click menu"
@@ -112,7 +134,7 @@ const SpriteSelectorItem = props => {
112134 />
113135 ) : null }
114136 </ ContextMenuTrigger >
115- { menu && typeof document !== 'undefined' ? ReactDOM . createPortal ( menu , document . body ) : menu }
137+ { menu && typeof document !== 'undefined' ? ReactDOM . createPortal ( menu , document . body ) : null }
116138 </ React . Fragment >
117139 ) ;
118140} ;
@@ -123,6 +145,7 @@ SpriteSelectorItem.propTypes = {
123145 costumeURL : PropTypes . string ,
124146 details : PropTypes . string ,
125147 disableContextMenu : PropTypes . bool ,
148+ dragType : PropTypes . string ,
126149 // eslint-disable-next-line react/forbid-prop-types
127150 id : PropTypes . any ,
128151 // eslint-disable-next-line react/forbid-prop-types
0 commit comments