Skip to content

Commit c403ae4

Browse files
authored
[Flare] Move Press root event removal till click phase (#15854)
1 parent f4cd7a3 commit c403ae4

File tree

1 file changed

+32
-35
lines changed

1 file changed

+32
-35
lines changed

packages/react-events/src/Press.js

Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,14 @@ const DEFAULT_PRESS_RETENTION_OFFSET = {
118118
};
119119

120120
const targetEventTypes = [
121-
{name: 'click', passive: false},
122121
{name: 'keydown', passive: false},
123122
{name: 'contextmenu', passive: false},
124123
// We need to preventDefault on pointerdown for mouse/pen events
125124
// that are in hit target area but not the element area.
126125
{name: 'pointerdown', passive: false},
127126
];
128127
const rootEventTypes = [
128+
{name: 'click', passive: false},
129129
'keyup',
130130
'pointerup',
131131
'pointermove',
@@ -422,11 +422,9 @@ function dispatchCancel(
422422
): void {
423423
if (state.isPressed) {
424424
state.ignoreEmulatedMouseEvents = false;
425-
removeRootEventTypes(context, state);
426425
dispatchPressEndEvents(event, context, props, state);
427-
} else if (state.allowPressReentry) {
428-
removeRootEventTypes(context, state);
429426
}
427+
removeRootEventTypes(context, state);
430428
}
431429

432430
function isValidKeyboardEvent(nativeEvent: Object): boolean {
@@ -609,7 +607,7 @@ const PressResponder = {
609607
props: PressProps,
610608
state: PressState,
611609
): void {
612-
const {target, type} = event;
610+
const {type} = event;
613611

614612
if (props.disabled) {
615613
removeRootEventTypes(context, state);
@@ -652,6 +650,7 @@ const PressResponder = {
652650
context.isEventWithinTouchHitTarget(event)
653651
) {
654652
// We need to prevent the native event to block the focus
653+
removeRootEventTypes(context, state);
655654
nativeEvent.preventDefault();
656655
return;
657656
}
@@ -710,29 +709,6 @@ const PressResponder = {
710709
}
711710
break;
712711
}
713-
714-
case 'click': {
715-
if (context.isTargetWithinHostComponent(target, 'a', true)) {
716-
const {
717-
altKey,
718-
ctrlKey,
719-
metaKey,
720-
shiftKey,
721-
} = (nativeEvent: MouseEvent);
722-
// Check "open in new window/tab" and "open context menu" key modifiers
723-
const preventDefault = props.preventDefault;
724-
if (
725-
preventDefault !== false &&
726-
!shiftKey &&
727-
!metaKey &&
728-
!ctrlKey &&
729-
!altKey
730-
) {
731-
nativeEvent.preventDefault();
732-
}
733-
}
734-
break;
735-
}
736712
}
737713
},
738714
onRootEvent(
@@ -807,9 +783,6 @@ const PressResponder = {
807783
dispatchPressStartEvents(event, context, props, state);
808784
}
809785
} else {
810-
if (!state.allowPressReentry) {
811-
removeRootEventTypes(context, state);
812-
}
813786
dispatchPressEndEvents(event, context, props, state);
814787
}
815788
}
@@ -851,7 +824,6 @@ const PressResponder = {
851824
}
852825

853826
const wasLongPressed = state.isLongPressed;
854-
removeRootEventTypes(context, state);
855827
dispatchPressEndEvents(event, context, props, state);
856828

857829
if (state.pressTarget !== null && props.onPress) {
@@ -874,10 +846,35 @@ const PressResponder = {
874846
}
875847
}
876848
}
877-
} else if (type === 'mouseup' && state.ignoreEmulatedMouseEvents) {
849+
} else if (type === 'mouseup') {
878850
state.ignoreEmulatedMouseEvents = false;
879-
} else if (state.allowPressReentry) {
880-
removeRootEventTypes(context, state);
851+
}
852+
break;
853+
}
854+
855+
case 'click': {
856+
removeRootEventTypes(context, state);
857+
if (
858+
context.isTargetWithinEventComponent(target) &&
859+
context.isTargetWithinHostComponent(target, 'a', true)
860+
) {
861+
const {
862+
altKey,
863+
ctrlKey,
864+
metaKey,
865+
shiftKey,
866+
} = (nativeEvent: MouseEvent);
867+
// Check "open in new window/tab" and "open context menu" key modifiers
868+
const preventDefault = props.preventDefault;
869+
if (
870+
preventDefault !== false &&
871+
!shiftKey &&
872+
!metaKey &&
873+
!ctrlKey &&
874+
!altKey
875+
) {
876+
nativeEvent.preventDefault();
877+
}
881878
}
882879
break;
883880
}

0 commit comments

Comments
 (0)