/** * Copyright (c) 2013-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * * 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. */ 'use strict'; var React = require('react'); var ReactNative = require('react-native'); var { Navigator, ScrollView, StyleSheet, Text, TouchableHighlight, TouchableOpacity, } = ReactNative; class NavButton extends React.Component { render() { return ( {this.props.text} ); } } var NavigationBarRouteMapper = { LeftButton: function(route, navigator, index, navState) { if (index === 0) { return null; } var previousRoute = navState.routeStack[index - 1]; return ( navigator.pop()} style={styles.navBarLeftButton}> {previousRoute.title} ); }, RightButton: function(route, navigator, index, navState) { return ( navigator.push(newRandomRoute())} style={styles.navBarRightButton}> Next ); }, Title: function(route, navigator, index, navState) { return ( {route.title} [{index}] ); }, }; function newRandomRoute() { return { title: '#' + Math.ceil(Math.random() * 1000), }; } var NavigationBarSample = React.createClass({ componentWillMount: function() { var navigator = this.props.navigator; var callback = (event) => { console.log( `NavigationBarSample : event ${event.type}`, { route: JSON.stringify(event.data.route), target: event.target, type: event.type, } ); }; // Observe focus change events from this component. this._listeners = [ navigator.navigationContext.addListener('willfocus', callback), navigator.navigationContext.addListener('didfocus', callback), ]; }, componentWillUnmount: function() { this._listeners && this._listeners.forEach(listener => listener.remove()); }, render: function() { return ( ( {route.content} { navigator.immediatelyResetRouteStack([ newRandomRoute(), newRandomRoute(), newRandomRoute(), ]); }} text="Reset w/ 3 scenes" /> { this.props.navigator.pop(); }} text="Exit NavigationBar Example" /> )} navigationBar={ } /> ); }, }); var styles = StyleSheet.create({ messageText: { fontSize: 17, fontWeight: '500', padding: 15, marginTop: 50, marginLeft: 15, }, button: { backgroundColor: 'white', padding: 15, borderBottomWidth: StyleSheet.hairlineWidth, borderBottomColor: '#CDCDCD', }, buttonText: { fontSize: 17, fontWeight: '500', }, navBar: { backgroundColor: 'white', }, navBarText: { fontSize: 16, marginVertical: 10, }, navBarTitleText: { color: '#373E4D', fontWeight: '500', marginVertical: 9, }, navBarLeftButton: { paddingLeft: 10, }, navBarRightButton: { paddingRight: 10, }, navBarButtonText: { color: '#5890FF', }, scene: { flex: 1, paddingTop: 20, backgroundColor: '#EAEAEA', }, }); module.exports = NavigationBarSample;