'use strict'; var React = require('react'); var ReactNative = require('react-native'); var { AppRegistry, StyleSheet, Text, View, Image, ScrollView, TouchableOpacity, AlertIOS, NativeAppEventEmitter } = ReactNative; var Controllers = require('react-native-controllers'); var FavoritesScreen = React.createClass({ getInitialState: function() { return({ isNavBarHidden : false }); }, render: function() { return ( <ScrollView style={styles.container}> <Image style={{width: undefined, height: 100}} source={require('./img/colors.png')} /> <Text style={{fontSize: 20, textAlign: 'center', margin: 10, fontWeight: '500', marginTop: 30}}> Styling Example </Text> <Text style={{fontSize: 16, textAlign: 'center', marginHorizontal: 30, marginBottom: 20}}> There are a lot of styling options supported, scroll down to see them all in action. The images are here to help visualize colorful content with these styles. </Text> { this.props.hidePop ? false : <TouchableOpacity onPress={ this.onPopClick }> <Text style={styles.button}>Pop</Text> </TouchableOpacity> } <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'plain') }> <Text style={styles.button}>Push Plain Screen</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'navcolors') }> <Text style={styles.button}>NavBar Colors</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'underboth') }> <Text style={styles.button}>Draw Under NavBar & TabBar</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'blurstatus') }> <Text style={styles.button}>Blur StatusBar (& hide NavBar)</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'blurnav') }> <Text style={styles.button}>Blur Entire NavBar (& draw under it)</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'navtransparent') }> <Text style={styles.button}>Transparent Nav Bar</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'sethidden') }> <Text style={styles.button}>Toggle Nav Bar Hidden</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'toolbarnavigation') }> <Text style={styles.button}>Custom Toolbar in Nav Bar</Text> </TouchableOpacity> <Text style={{fontSize: 16, textAlign: 'center', marginHorizontal: 30, marginBottom: 10, marginTop: 20}}> More styles under the image </Text> <Image style={{width: undefined, height: 100}} source={require('./img/colors.png')} /> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'undernav') }> <Text style={styles.button}>Draw Under NavBar Only</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'undertab') }> <Text style={styles.button}>Draw Under TabBar Only</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'navhidden') }> <Text style={styles.button}>NavBar Hidden On Push</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'navnothidden') }> <Text style={styles.button}>NavBar Not Hidden</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'statushidden') }> <Text style={styles.button}>StatusBar Hidden</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'lightstatus') }> <Text style={styles.button}>Light StatusBar</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'darkstatus') }> <Text style={styles.button}>Dark StatusBar</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'navstatushidden') }> <Text style={styles.button}>NavBar & StatusBar Hidden</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'navscrollhidden') }> <Text style={styles.button}>NavBar Hide On Scroll</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'navstatusscrollhidden') }> <Text style={styles.button}>NavBar & StatusBar Hide On Scroll</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'tabhidden') }> <Text style={styles.button}>TabBar Hidden</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'tabnothidden') }> <Text style={styles.button}>TabBar Not Hidden</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'backnotext') }> <Text style={styles.button}>Empty Back Button Text</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'backcustomtext') }> <Text style={styles.button}>Custom Back Button Text</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'backhidden') }> <Text style={styles.button}>Hidden Back Button</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'rightbuttons') }> <Text style={styles.button}>Right NavBar Text Buttons</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'rightbuttonsdisabled') }> <Text style={styles.button}>Right NavBar Text Buttons Disabled</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'righticonbuttons') }> <Text style={styles.button}>Right NavBar Icon Buttons</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'eventbuttons') }> <Text style={styles.button}>Event Based NavBar Buttons</Text> </TouchableOpacity> <TouchableOpacity onPress={ this.onButtonClick.bind(this, 'titleImage') }> <Text style={styles.button}>Title Image</Text> </TouchableOpacity> <Image style={{width: undefined, height: 100}} source={require('./img/colors.png')} /> </ScrollView> ); }, onPopClick: function() { Controllers.NavigationControllerIOS("favorites_nav").pop(); }, onButtonClick: function(cmd) { switch (cmd) { case 'plain': require('./PushedScreen'); // help the react bundler understand we want this file included Controllers.NavigationControllerIOS("favorites_nav").push({ title: "Pushed screen", component: "PushedScreen", animated: true }); break; case 'navtransparent': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { navBarTransparent: true, drawUnderNavBar: true, navBarTranslucent: true } }); break; case 'navcolors': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { navBarBackgroundColor: '#ffc0c0', navBarButtonColor: '#00a000', navBarTextColor: '#ffff00' } }); break; case 'navhidden': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { navBarHidden: true } }); break; case 'sethidden': this.state.isNavBarHidden = !this.state.isNavBarHidden; Controllers.NavigationControllerIOS("favorites_nav").setHidden( { hidden: this.state.isNavBarHidden, animated: true //default is true }); break; case 'statushidden': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { statusBarHidden: true } }); break; case 'toolbarnavigation': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "Extra", component: "ExtraScreen", style: { drawUnderNavBar: true, navBarTranslucent: true, navBarNoBorder: true }, rightButtons: [ { icon: require('./img/star.png'), disableIconTint: true, onPress: function() { AlertIOS.alert('Button', 'You Are My Star'); } } ] }); break; case 'lightstatus': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { statusBarTextColorScheme: 'light' } }); break; case 'darkstatus': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { statusBarTextColorScheme: 'dark' } }); break; case 'navstatushidden': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { navBarHidden: true, statusBarHideWithNavBar: true } }); break; case 'navnothidden': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { navBarHidden: false } }); break; case 'navscrollhidden': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { navBarHideOnScroll: true } }); break; case 'navstatusscrollhidden': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { navBarHideOnScroll: true, statusBarHideWithNavBar: true } }); break; case 'tabhidden': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { tabBarHidden: true } }); break; case 'tabnothidden': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { tabBarHidden: false } }); break; case 'undernav': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { drawUnderNavBar: true, navBarTranslucent: true, drawUnderTabBar: false } }); break; case 'undertab': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { drawUnderNavBar: false, drawUnderTabBar: true } }); break; case 'underboth': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { drawUnderNavBar: true, navBarTranslucent: true, drawUnderTabBar: true } }); break; case 'blurstatus': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { statusBarBlur: true, navBarHidden: true } }); break; case 'blurnav': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", style: { navBarBlur: true, drawUnderNavBar: true, navBarTransparent: false } }); break; case 'backnotext': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", backButtonTitle: "" }); break; case 'backcustomtext': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", backButtonTitle: "Hello" }); break; case 'backhidden': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", backButtonHidden: true }); break; case 'rightbuttons': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", rightButtons: [ { title: "Edit", onPress: function() { AlertIOS.alert('Button', 'Edit pressed'); } }, { title: "Save", onPress: function() { AlertIOS.alert('Button', 'Save pressed'); } } ] }); break; case 'rightbuttonsdisabled': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", rightButtons: [ { title: "Edit", disabled: true }, { title: "Save", onPress: function() { AlertIOS.alert('Button', 'Save pressed'); } } ] }); break; case 'righticonbuttons': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", rightButtons: [ { icon: require('./img/navicon_edit.png'), onPress: function() { AlertIOS.alert('Button', 'Edit pressed'); } }, { icon: require('./img/navicon_add.png'), onPress: function() { AlertIOS.alert('Button', 'Add pressed'); }, testID: "e2erules" } ] }); break; case 'eventbuttons': const eventId = 'MY_UNIQUE_EVENT_ID'; NativeAppEventEmitter.addListener(eventId, function (event) { switch (event.id) { case 'edit': AlertIOS.alert('Button', 'Edit pressed'); break; case 'add': AlertIOS.alert('Button', 'Add pressed'); break; } }); Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", component: "FavoritesScreen", rightButtons: [ { icon: require('./img/navicon_edit.png'), id: 'edit', onPress: eventId }, { icon: require('./img/navicon_add.png'), id: 'add', onPress: eventId } ] }); break; case 'titleImage': Controllers.NavigationControllerIOS("favorites_nav").push({ title: "More", titleImage: require('./img/turtle.png'), component: "FavoritesScreen" }); break; } }, }); var styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#F5FCFF' }, button: { textAlign: 'center', fontSize: 18, marginBottom: 10, marginTop:10, color: 'blue' } }); AppRegistry.registerComponent('FavoritesScreen', () => FavoritesScreen); module.exports = FavoritesScreen;