diff --git a/RNTester/js/examples/JSResponderHandlerExample/JSResponderHandlerExample.js b/RNTester/js/examples/JSResponderHandlerExample/JSResponderHandlerExample.js new file mode 100644 index 00000000000..70c451e1ec1 --- /dev/null +++ b/RNTester/js/examples/JSResponderHandlerExample/JSResponderHandlerExample.js @@ -0,0 +1,75 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow strict-local + */ + +'use strict'; + +const React = require('react'); +const {Text, View, StyleSheet} = require('react-native'); +import {PanResponder, ScrollView} from 'react-native'; + +exports.displayName = 'JSResponderHandlerExample'; +exports.framework = 'React'; +exports.title = ''; +exports.description = 'Simple example to test JSResponderHandler.'; + +const _gesture = PanResponder.create({ + onMoveShouldSetPanResponder: (e, gestureState) => { + return Math.abs(gestureState.moveX) > 150; + }, +}); + +exports.examples = [ + { + title: 'JSResponderHandlerExample', + description: + 'This example tests the native JSResponderHandler: when the user ' + + 'scrolls on the right side of the ScrollView (white area located on the' + + ' right side of the gray area), the touch event is managed by native ' + + 'which blocks the scroll event.', + render: function() { + const views = []; + for (let i = 0; i < 100; i++) { + views[i] = ( + + + I am row {i} + + + ); + } + return ( + + + {views} + + + ); + }, + }, +]; + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, + scrollview: { + flex: 1, + }, + row: { + height: 25, + }, + touchable_area: { + width: 150, + backgroundColor: 'lightgray', + }, +}); diff --git a/RNTester/js/utils/RNTesterList.android.js b/RNTester/js/utils/RNTesterList.android.js index 08614f0bbd3..1307335996d 100644 --- a/RNTester/js/utils/RNTesterList.android.js +++ b/RNTester/js/utils/RNTesterList.android.js @@ -33,6 +33,10 @@ const ComponentExamples: Array = [ key: 'ImageExample', module: require('../examples/Image/ImageExample'), }, + { + key: 'JSResponderHandlerExample', + module: require('../examples/JSResponderHandlerExample/JSResponderHandlerExample'), + }, { key: 'KeyboardAvoidingViewExample', module: require('../examples/KeyboardAvoidingView/KeyboardAvoidingViewExample'), diff --git a/RNTester/js/utils/RNTesterList.ios.js b/RNTester/js/utils/RNTesterList.ios.js index 2dae203030a..f67f2bd2b25 100644 --- a/RNTester/js/utils/RNTesterList.ios.js +++ b/RNTester/js/utils/RNTesterList.ios.js @@ -43,6 +43,10 @@ const ComponentExamples: Array = [ module: require('../examples/Image/ImageExample'), supportsTVOS: true, }, + { + key: 'JSResponderHandlerExample', + module: require('../examples/JSResponderHandlerExample/JSResponderHandlerExample'), + }, { key: 'InputAccessoryViewExample', module: require('../examples/InputAccessoryView/InputAccessoryViewExample'),