/** * The examples provided by Facebook are for non-commercial testing and * evaluation purposes only. * * Facebook reserves all rights not expressly granted. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * @flow */ 'use strict'; var React = require('react-native'); var { PixelRatio, Image, StyleSheet, Text, TouchableHighlight, TouchableOpacity, View, } = React; exports.displayName = (undefined: ?string); exports.title = ' and onPress'; exports.examples = [ { title: '', description: 'TouchableHighlight works by adding an extra view with a ' + 'black background under the single child view. This works best when the ' + 'child view is fully opaque, although it can be made to work as a simple ' + 'background color change as well with the activeOpacity and ' + 'underlayColor props.', render: function() { return ( console.log('stock THW image - highlight')}> console.log('custom THW text - hightlight')}> Tap Here For Custom Highlight! ); }, }, { title: ' with highlight', render: function(): ReactElement { return ; }, }, { title: 'Touchable feedback events', description: ' components accept onPress, onPressIn, ' + 'onPressOut, and onLongPress as props.', render: function(): ReactElement { return ; }, }, { title: 'Touchable delay for events', description: ' components also accept delayPressIn, ' + 'delayPressOut, and delayLongPress as props. These props impact the ' + 'timing of feedback events.', render: function(): ReactElement { return ; }, }]; var TextOnPressBox = React.createClass({ getInitialState: function() { return { timesPressed: 0, }; }, textOnPress: function() { this.setState({ timesPressed: this.state.timesPressed + 1, }); }, render: function() { var textLog = ''; if (this.state.timesPressed > 1) { textLog = this.state.timesPressed + 'x text onPress'; } else if (this.state.timesPressed > 0) { textLog = 'text onPress'; } return ( Text has built-in onPress handling {textLog} ); } }); var TouchableFeedbackEvents = React.createClass({ getInitialState: function() { return { eventLog: [], }; }, render: function() { return ( this._appendEvent('press')} onPressIn={() => this._appendEvent('pressIn')} onPressOut={() => this._appendEvent('pressOut')} onLongPress={() => this._appendEvent('longPress')}> Press Me {this.state.eventLog.map((e, ii) => {e})} ); }, _appendEvent: function(eventName) { var limit = 6; var eventLog = this.state.eventLog.slice(0, limit - 1); eventLog.unshift(eventName); this.setState({eventLog}); }, }); var TouchableDelayEvents = React.createClass({ getInitialState: function() { return { eventLog: [], }; }, render: function() { return ( this._appendEvent('press')} delayPressIn={400} onPressIn={() => this._appendEvent('pressIn - 400ms delay')} delayPressOut={1000} onPressOut={() => this._appendEvent('pressOut - 1000ms delay')} delayLongPress={800} onLongPress={() => this._appendEvent('longPress - 800ms delay')}> Press Me {this.state.eventLog.map((e, ii) => {e})} ); }, _appendEvent: function(eventName) { var limit = 6; var eventLog = this.state.eventLog.slice(0, limit - 1); eventLog.unshift(eventName); this.setState({eventLog}); }, }); var heartImage = {uri: 'https://pbs.twimg.com/media/BlXBfT3CQAA6cVZ.png:small'}; var styles = StyleSheet.create({ row: { justifyContent: 'center', flexDirection: 'row', }, icon: { width: 24, height: 24, }, image: { width: 50, height: 50, }, text: { fontSize: 16, }, button: { color: '#007AFF', }, wrapper: { borderRadius: 8, }, wrapperCustom: { borderRadius: 8, padding: 6, }, logBox: { padding: 20, margin: 10, borderWidth: 1 / PixelRatio.get(), borderColor: '#f0f0f0', backgroundColor: '#f9f9f9', }, eventLogBox: { padding: 10, margin: 10, height: 120, borderWidth: 1 / PixelRatio.get(), borderColor: '#f0f0f0', backgroundColor: '#f9f9f9', }, textBlock: { fontWeight: '500', color: 'blue', }, });