From c72dceffbce0856711d0fde0fb4f2a312734d591 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Wed, 5 Jun 2019 17:51:41 +0100 Subject: [PATCH] [Flare] Small Swipe/Drag fixes (#15825) --- packages/react-events/src/Drag.js | 5 ++++- packages/react-events/src/Swipe.js | 14 ++++++++------ .../src/__tests__/Drag-test.internal.js | 15 +++++++++------ 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/packages/react-events/src/Drag.js b/packages/react-events/src/Drag.js index 68fd7b451e..3d422d8010 100644 --- a/packages/react-events/src/Drag.js +++ b/packages/react-events/src/Drag.js @@ -166,7 +166,10 @@ const DragResponder = { const y = (obj: any).screenY; state.x = x; state.y = y; - if (!state.isDragging && x !== state.startX && y !== state.startY) { + if (x === state.startX && y === state.startY) { + return; + } + if (!state.isDragging) { let shouldEnableDragging = true; if ( diff --git a/packages/react-events/src/Swipe.js b/packages/react-events/src/Swipe.js index 4a186af1f4..f7bfaf810b 100644 --- a/packages/react-events/src/Swipe.js +++ b/packages/react-events/src/Swipe.js @@ -53,12 +53,14 @@ function createSwipeEvent( target: Element | Document, eventData?: EventData, ): SwipeEvent { - return { - target, - type, - timeStamp: context.getTimeStamp(), - ...eventData, - }; + return context.objectAssign( + { + target, + type, + timeStamp: context.getTimeStamp(), + }, + eventData, + ); } function dispatchSwipeEvent( diff --git a/packages/react-events/src/__tests__/Drag-test.internal.js b/packages/react-events/src/__tests__/Drag-test.internal.js index e65a564018..8ae61bc460 100644 --- a/packages/react-events/src/__tests__/Drag-test.internal.js +++ b/packages/react-events/src/__tests__/Drag-test.internal.js @@ -155,7 +155,7 @@ describe('Drag event responder', () => { ReactDOM.render(, container); const mouseOverEvent = document.createEvent('MouseEvents'); - mouseOverEvent.initEvent('mousedown', true, true); + mouseOverEvent.initEvent('mousedown', true, true, window, 1, 0, 0); divRef.current.dispatchEvent(mouseOverEvent); const mouseMoveEvent = document.createEvent('MouseEvents'); @@ -166,8 +166,8 @@ describe('Drag event responder', () => { true, window, 1, - index, - index, + index + 1, + index + 1, 50, 50, ); @@ -178,12 +178,15 @@ describe('Drag event responder', () => { mouseUpEvent.initEvent('mouseup', true, true); divRef.current.dispatchEvent(mouseUpEvent); expect(events).toHaveLength(20); - let index = 0; expect(events).toEqual( expect.arrayContaining([ expect.objectContaining({ - diffX: index, - diffY: index++, + diffX: 2, + diffY: 2, + }), + expect.objectContaining({ + diffX: 21, + diffY: 21, }), ]), );