diff --git a/src/event/synthetic/SyntheticDragEvent.js b/src/event/synthetic/SyntheticDragEvent.js new file mode 100644 index 00000000000..a2f27235d29 --- /dev/null +++ b/src/event/synthetic/SyntheticDragEvent.js @@ -0,0 +1,44 @@ +/** + * Copyright 2013 Facebook, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @providesModule SyntheticDragEvent + * @typechecks static-only + */ + +"use strict"; + +var SyntheticMouseEvent = require('SyntheticMouseEvent'); + +/** + * @interface DragEvent + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ +var DragEventInterface = { + dataTransfer: null +}; + +/** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticUIEvent} + */ +function SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent) { + SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent); +} + +SyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface); + +module.exports = SyntheticDragEvent; diff --git a/src/eventPlugins/SimpleEventPlugin.js b/src/eventPlugins/SimpleEventPlugin.js index 4c69441dbe6..3e0eb38c719 100644 --- a/src/eventPlugins/SimpleEventPlugin.js +++ b/src/eventPlugins/SimpleEventPlugin.js @@ -25,6 +25,7 @@ var SyntheticEvent = require('SyntheticEvent'); var SyntheticFocusEvent = require('SyntheticFocusEvent'); var SyntheticKeyboardEvent = require('SyntheticKeyboardEvent'); var SyntheticMouseEvent = require('SyntheticMouseEvent'); +var SyntheticDragEvent = require('SyntheticDragEvent'); var SyntheticTouchEvent = require('SyntheticTouchEvent'); var SyntheticUIEvent = require('SyntheticUIEvent'); var SyntheticWheelEvent = require('SyntheticWheelEvent'); @@ -315,6 +316,11 @@ var SimpleEventPlugin = { /* falls through */ case topLevelTypes.topContextMenu: case topLevelTypes.topDoubleClick: + case topLevelTypes.topMouseDown: + case topLevelTypes.topMouseMove: + case topLevelTypes.topMouseUp: + EventConstructor = SyntheticMouseEvent; + break; case topLevelTypes.topDrag: case topLevelTypes.topDragEnd: case topLevelTypes.topDragEnter: @@ -323,10 +329,7 @@ var SimpleEventPlugin = { case topLevelTypes.topDragOver: case topLevelTypes.topDragStart: case topLevelTypes.topDrop: - case topLevelTypes.topMouseDown: - case topLevelTypes.topMouseMove: - case topLevelTypes.topMouseUp: - EventConstructor = SyntheticMouseEvent; + EventConstructor = SyntheticDragEvent; break; case topLevelTypes.topTouchCancel: case topLevelTypes.topTouchEnd: