Skip to content

Commit

Permalink
[Flare] Move Press root event removal till click phase (#15854)
Browse files Browse the repository at this point in the history
  • Loading branch information
trueadm authored Jun 10, 2019
1 parent f4cd7a3 commit c403ae4
Showing 1 changed file with 32 additions and 35 deletions.
67 changes: 32 additions & 35 deletions packages/react-events/src/Press.js
Original file line number Diff line number Diff line change
Expand Up @@ -118,14 +118,14 @@ const DEFAULT_PRESS_RETENTION_OFFSET = {
};

const targetEventTypes = [
{name: 'click', passive: false},
{name: 'keydown', passive: false},
{name: 'contextmenu', passive: false},
// We need to preventDefault on pointerdown for mouse/pen events
// that are in hit target area but not the element area.
{name: 'pointerdown', passive: false},
];
const rootEventTypes = [
{name: 'click', passive: false},
'keyup',
'pointerup',
'pointermove',
Expand Down Expand Up @@ -422,11 +422,9 @@ function dispatchCancel(
): void {
if (state.isPressed) {
state.ignoreEmulatedMouseEvents = false;
removeRootEventTypes(context, state);
dispatchPressEndEvents(event, context, props, state);
} else if (state.allowPressReentry) {
removeRootEventTypes(context, state);
}
removeRootEventTypes(context, state);
}

function isValidKeyboardEvent(nativeEvent: Object): boolean {
Expand Down Expand Up @@ -609,7 +607,7 @@ const PressResponder = {
props: PressProps,
state: PressState,
): void {
const {target, type} = event;
const {type} = event;

if (props.disabled) {
removeRootEventTypes(context, state);
Expand Down Expand Up @@ -652,6 +650,7 @@ const PressResponder = {
context.isEventWithinTouchHitTarget(event)
) {
// We need to prevent the native event to block the focus
removeRootEventTypes(context, state);
nativeEvent.preventDefault();
return;
}
Expand Down Expand Up @@ -710,29 +709,6 @@ const PressResponder = {
}
break;
}

case 'click': {
if (context.isTargetWithinHostComponent(target, 'a', true)) {
const {
altKey,
ctrlKey,
metaKey,
shiftKey,
} = (nativeEvent: MouseEvent);
// Check "open in new window/tab" and "open context menu" key modifiers
const preventDefault = props.preventDefault;
if (
preventDefault !== false &&
!shiftKey &&
!metaKey &&
!ctrlKey &&
!altKey
) {
nativeEvent.preventDefault();
}
}
break;
}
}
},
onRootEvent(
Expand Down Expand Up @@ -807,9 +783,6 @@ const PressResponder = {
dispatchPressStartEvents(event, context, props, state);
}
} else {
if (!state.allowPressReentry) {
removeRootEventTypes(context, state);
}
dispatchPressEndEvents(event, context, props, state);
}
}
Expand Down Expand Up @@ -851,7 +824,6 @@ const PressResponder = {
}

const wasLongPressed = state.isLongPressed;
removeRootEventTypes(context, state);
dispatchPressEndEvents(event, context, props, state);

if (state.pressTarget !== null && props.onPress) {
Expand All @@ -874,10 +846,35 @@ const PressResponder = {
}
}
}
} else if (type === 'mouseup' && state.ignoreEmulatedMouseEvents) {
} else if (type === 'mouseup') {
state.ignoreEmulatedMouseEvents = false;
} else if (state.allowPressReentry) {
removeRootEventTypes(context, state);
}
break;
}

case 'click': {
removeRootEventTypes(context, state);
if (
context.isTargetWithinEventComponent(target) &&
context.isTargetWithinHostComponent(target, 'a', true)
) {
const {
altKey,
ctrlKey,
metaKey,
shiftKey,
} = (nativeEvent: MouseEvent);
// Check "open in new window/tab" and "open context menu" key modifiers
const preventDefault = props.preventDefault;
if (
preventDefault !== false &&
!shiftKey &&
!metaKey &&
!ctrlKey &&
!altKey
) {
nativeEvent.preventDefault();
}
}
break;
}
Expand Down

0 comments on commit c403ae4

Please sign in to comment.