diff --git a/packages/react-native-web/src/hooks/usePressEvents/PressResponder.js b/packages/react-native-web/src/hooks/usePressEvents/PressResponder.js index 327cdc20..915adbe1 100644 --- a/packages/react-native-web/src/hooks/usePressEvents/PressResponder.js +++ b/packages/react-native-web/src/hooks/usePressEvents/PressResponder.js @@ -388,8 +388,8 @@ export default class PressResponder { } else if (onPress != null && event.ctrlKey === false && event.altKey === false) { onPress(event); } - event.stopPropagation(); } + event.stopPropagation(); }, // If `onLongPress` is provided and a touch pointer is being used, prevent the @@ -399,6 +399,7 @@ export default class PressResponder { if (!disabled && onLongPress != null && this._isPointerTouch && !event.defaultPrevented) { event.preventDefault(); } + event.stopPropagation(); } }; } diff --git a/packages/react-native-web/src/modules/createDOMProps/index.js b/packages/react-native-web/src/modules/createDOMProps/index.js index 1c5e65f5..fbd1ecdf 100644 --- a/packages/react-native-web/src/modules/createDOMProps/index.js +++ b/packages/react-native-web/src/modules/createDOMProps/index.js @@ -229,7 +229,10 @@ const createDOMProps = (component, props) => { const onClick = domProps.onClick; if (onClick != null) { if (disabled) { - domProps.onClick = undefined; + // Prevent click propagating if the element is disabled. See #1757 + domProps.onClick = function(e) { + e.stopPropagation(); + }; } else if (!isNativeInteractiveElement) { // For native elements that are focusable but don't dispatch 'click' events // for keyboards.