diff --git a/src/core/ReactEventEmitter.js b/src/core/ReactEventEmitter.js index 0721c074f6..4d523957cc 100644 --- a/src/core/ReactEventEmitter.js +++ b/src/core/ReactEventEmitter.js @@ -241,6 +241,7 @@ var ReactEventEmitter = merge(ReactEventEmitterMixin, { trapBubbledEvent(topLevelTypes.topMouseOut, 'mouseout', mountAt); trapBubbledEvent(topLevelTypes.topClick, 'click', mountAt); trapBubbledEvent(topLevelTypes.topDoubleClick, 'dblclick', mountAt); + trapBubbledEvent(topLevelTypes.topContextMenu, 'contextmenu', mountAt); if (touchNotMouse) { trapBubbledEvent(topLevelTypes.topTouchStart, 'touchstart', mountAt); trapBubbledEvent(topLevelTypes.topTouchEnd, 'touchend', mountAt); diff --git a/src/event/EventConstants.js b/src/event/EventConstants.js index 298790a5f1..733e3a2cc8 100644 --- a/src/event/EventConstants.js +++ b/src/event/EventConstants.js @@ -32,6 +32,7 @@ var topLevelTypes = keyMirror({ topCompositionEnd: null, topCompositionStart: null, topCompositionUpdate: null, + topContextMenu: null, topCopy: null, topCut: null, topDoubleClick: null, diff --git a/src/eventPlugins/SimpleEventPlugin.js b/src/eventPlugins/SimpleEventPlugin.js index 0ba0348595..4c69441dbe 100644 --- a/src/eventPlugins/SimpleEventPlugin.js +++ b/src/eventPlugins/SimpleEventPlugin.js @@ -47,6 +47,12 @@ var eventTypes = { captured: keyOf({onClickCapture: true}) } }, + contextMenu: { + phasedRegistrationNames: { + bubbled: keyOf({onContextMenu: true}), + captured: keyOf({onContextMenuCapture: true}) + } + }, copy: { phasedRegistrationNames: { bubbled: keyOf({onCopy: true}), @@ -216,6 +222,7 @@ var eventTypes = { var topLevelEventsToDispatchConfig = { topBlur: eventTypes.blur, topClick: eventTypes.click, + topContextMenu: eventTypes.contextMenu, topCopy: eventTypes.copy, topCut: eventTypes.cut, topDoubleClick: eventTypes.doubleClick, @@ -306,6 +313,7 @@ var SimpleEventPlugin = { return null; } /* falls through */ + case topLevelTypes.topContextMenu: case topLevelTypes.topDoubleClick: case topLevelTypes.topDrag: case topLevelTypes.topDragEnd: