From a2f294adaf244c1f59b83cca0a14df38b2c1c14e Mon Sep 17 00:00:00 2001 From: Julien Wajsberg Date: Thu, 11 May 2017 16:55:48 +0200 Subject: [PATCH] Fixes #105: properly call mousedown, mouseup, touchstart, touchend, mouseout and contextmenu event handlers if they're specified. (#107) --- src/ContextMenuTrigger.js | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/ContextMenuTrigger.js b/src/ContextMenuTrigger.js index 0c37584c..56a5c3c7 100644 --- a/src/ContextMenuTrigger.js +++ b/src/ContextMenuTrigger.js @@ -39,12 +39,21 @@ export default class ContextMenuTrigger extends Component { this.props.holdToDisplay ); } + callIfExists(this.props.attributes.onMouseDown, event); } handleMouseUp = (event) => { if (event.button === 0) { clearTimeout(this.mouseDownTimeoutId); } + callIfExists(this.props.attributes.onMouseUp, event); + } + + handleMouseOut = (event) => { + if (event.button === 0) { + clearTimeout(this.mouseDownTimeoutId); + } + callIfExists(this.props.attributes.onMouseOut, event); } handleTouchstart = (event) => { @@ -61,6 +70,7 @@ export default class ContextMenuTrigger extends Component { this.props.holdToDisplay ); } + callIfExists(this.props.attributes.onTouchStart, event); } handleTouchEnd = (event) => { @@ -68,6 +78,12 @@ export default class ContextMenuTrigger extends Component { event.preventDefault(); } clearTimeout(this.touchstartTimeoutId); + callIfExists(this.props.attributes.onTouchEnd, event); + } + + handleContextMenu = (event) => { + this.handleContextClick(event); + callIfExists(this.props.attributes.onContextMenu, event); } handleContextClick = (event) => { @@ -97,12 +113,12 @@ export default class ContextMenuTrigger extends Component { const { renderTag, attributes, children } = this.props; const newAttrs = assign({}, attributes, { className: cx(cssClasses.menuWrapper, attributes.className), - onContextMenu: this.handleContextClick, + onContextMenu: this.handleContextMenu, onMouseDown: this.handleMouseDown, onMouseUp: this.handleMouseUp, onTouchStart: this.handleTouchstart, onTouchEnd: this.handleTouchEnd, - onMouseOut: this.handleMouseUp, + onMouseOut: this.handleMouseOut, ref: this.elemRef });