/** * Copyright 2004-present Facebook. All Rights Reserved. * * @providesModule PointerEventsExample */ 'use strict'; var React = require('react-native'); var { StyleSheet, Text, View, } = React; var ExampleBox = React.createClass({ getInitialState: function() { return { log: [], }; }, handleLog: function(msg) { this.state.log = this.state.log.concat([msg]); }, flushReactChanges: function() { this.forceUpdate(); }, /** * Capture phase of bubbling to append separator before any of the bubbling * happens. */ handleTouchCapture: function() { this.state.log = this.state.log.concat(['---']); }, render: function() { return ( {this.state.log.join('\n')} ); } }); var NoneExample = React.createClass({ render: function() { return ( this.props.onLog('A unspecified touched')} style={styles.box}> A: unspecified this.props.onLog('B none touched')} style={[styles.box, styles.boxPassedThrough]}> B: none this.props.onLog('C unspecified touched')} style={[styles.box, styles.boxPassedThrough]}> C: unspecified ); } }); /** * Special demo text that makes itself untouchable so that it doesn't destroy * the experiment and confuse the output. */ var DemoText = React.createClass({ render: function() { return ( {this.props.children} ); } }); var BoxNoneExample = React.createClass({ render: function() { return ( this.props.onLog('A unspecified touched')} style={styles.box}> A: unspecified this.props.onLog('B boxNone touched')} style={[styles.box, styles.boxPassedThrough]}> B: boxNone this.props.onLog('C unspecified touched')} style={styles.box}> C: unspecified this.props.onLog('C explicitly unspecified touched')} style={[styles.box]}> C: explicitly unspecified ); } }); var BoxOnlyExample = React.createClass({ render: function() { return ( this.props.onLog('A unspecified touched')} style={styles.box}> A: unspecified this.props.onLog('B boxOnly touched')} style={styles.box}> B: boxOnly this.props.onLog('C unspecified touched')} style={[styles.box, styles.boxPassedThrough]}> C: unspecified this.props.onLog('C explicitly unspecified touched')} style={[styles.box, styles.boxPassedThrough]}> C: explicitly unspecified ); } }); var exampleClasses = [ { Component: NoneExample, title: '`none`', description: '`none` causes touch events on the container and its child components to pass through to the parent container.', }, { Component: BoxNoneExample, title: '`boxNone`', description: '`boxNone` causes touch events on the container to pass through and will only detect touch events on its child components.', }, { Component: BoxOnlyExample, title: '`boxOnly`', description: '`boxOnly` causes touch events on the container\'s child components to pass through and will only detect touch events on the container itself.', } ]; var infoToExample = (info) => { return { title: info.title, description: info.description, render: function() { return ; }, }; }; var styles = StyleSheet.create({ text: { fontSize: 10, color: '#5577cc', }, textPassedThrough: { color: '#88aadd', }, box: { backgroundColor: '#aaccff', borderWidth: 1, borderColor: '#7799cc', padding: 10, margin: 5, }, boxPassedThrough: { borderColor: '#99bbee', }, logText: { fontSize: 9, }, logBox: { padding: 20, margin: 10, borderWidth: 0.5, borderColor: '#f0f0f0', backgroundColor: '#f9f9f9', }, bottomSpacer: { marginBottom: 100, }, }); exports.framework = 'React'; exports.title = 'Pointer Events'; exports.description = '`pointerEvents` is a prop of View that gives control ' + 'of how touches should be handled.'; exports.examples = exampleClasses.map(infoToExample);