/** * 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. * * @flow */ 'use strict'; const React = require('react'); const ReactNative = require('react-native'); const { StatusBar, StyleSheet, Text, TouchableHighlight, View, } = ReactNative; exports.framework = 'React'; exports.title = ''; exports.description = 'Component for controlling the status bar'; const colors = [ '#ff0000', '#00ff00', '#0000ff', ]; const barStyles = [ 'default', 'light-content', ]; const showHideTransitions = [ 'fade', 'slide', ]; function getValue(values: Array, index: number): T { return values[index % values.length]; } class StatusBarHiddenExample extends React.Component { state = { animated: true, hidden: false, showHideTransition: getValue(showHideTransitions, 0), }; _showHideTransitionIndex = 0; _onChangeAnimated = () => { this.setState({animated: !this.state.animated}); }; _onChangeHidden = () => { this.setState({hidden: !this.state.hidden}); }; _onChangeTransition = () => { this._showHideTransitionIndex++; this.setState({ showHideTransition: getValue(showHideTransitions, this._showHideTransitionIndex), }); }; render() { return ( ); } } class StatusBarStyleExample extends React.Component { _barStyleIndex = 0; _onChangeBarStyle = () => { this._barStyleIndex++; this.setState({barStyle: getValue(barStyles, this._barStyleIndex)}); }; _onChangeAnimated = () => { this.setState({animated: !this.state.animated}); }; state = { animated: true, barStyle: getValue(barStyles, this._barStyleIndex), }; render() { return ( style: '{getValue(barStyles, this._barStyleIndex)}' animated: {this.state.animated ? 'true' : 'false'} ); } } class StatusBarNetworkActivityExample extends React.Component { state = { networkActivityIndicatorVisible: false, }; _onChangeNetworkIndicatorVisible = () => { this.setState({ networkActivityIndicatorVisible: !this.state.networkActivityIndicatorVisible, }); }; render() { return ( networkActivityIndicatorVisible: {this.state.networkActivityIndicatorVisible ? 'true' : 'false'} ); } } class StatusBarBackgroundColorExample extends React.Component { state = { animated: true, backgroundColor: getValue(colors, 0), }; _colorIndex = 0; _onChangeBackgroundColor = () => { this._colorIndex++; this.setState({backgroundColor: getValue(colors, this._colorIndex)}); }; _onChangeAnimated = () => { this.setState({animated: !this.state.animated}); }; render() { return ( backgroundColor: '{getValue(colors, this._colorIndex)}' animated: {this.state.animated ? 'true' : 'false'} ); } } class StatusBarTranslucentExample extends React.Component { state = { translucent: false, }; _onChangeTranslucent = () => { this.setState({ translucent: !this.state.translucent, }); }; render() { return ( translucent: {this.state.translucent ? 'true' : 'false'} ); } } class StatusBarStaticIOSExample extends React.Component { render() { return ( { StatusBar.setHidden(true, 'slide'); }}> setHidden(true, 'slide') { StatusBar.setHidden(false, 'fade'); }}> setHidden(false, 'fade') { StatusBar.setBarStyle('default', true); }}> setBarStyle('default', true) { StatusBar.setBarStyle('light-content', true); }}> setBarStyle('light-content', true) { StatusBar.setNetworkActivityIndicatorVisible(true); }}> setNetworkActivityIndicatorVisible(true) { StatusBar.setNetworkActivityIndicatorVisible(false); }}> setNetworkActivityIndicatorVisible(false) ); } } class StatusBarStaticAndroidExample extends React.Component { render() { return ( { StatusBar.setHidden(true); }}> setHidden(true) { StatusBar.setHidden(false); }}> setHidden(false) { StatusBar.setBackgroundColor('#ff00ff', true); }}> setBackgroundColor('#ff00ff', true) { StatusBar.setBackgroundColor('#00ff00', true); }}> setBackgroundColor('#00ff00', true) { StatusBar.setTranslucent(true); StatusBar.setBackgroundColor('rgba(0, 0, 0, 0.4)', true); }}> setTranslucent(true) and setBackgroundColor('rgba(0, 0, 0, 0.4)', true) { StatusBar.setTranslucent(false); StatusBar.setBackgroundColor('black', true); }}> setTranslucent(false) and setBackgroundColor('black', true) ); } } const examples = [{ title: 'StatusBar hidden', render() { return ; }, }, { title: 'StatusBar style', render() { return ; }, platform: 'ios', }, { title: 'StatusBar network activity indicator', render() { return ; }, platform: 'ios', }, { title: 'StatusBar background color', render() { return ; }, platform: 'android', }, { title: 'StatusBar background color', render() { return ; }, platform: 'android', }, { title: 'StatusBar static API', render() { return ; }, platform: 'ios', }, { title: 'StatusBar static API', render() { return ; }, platform: 'android', }, { title: 'StatusBar dimensions', render() { return ( Height: {StatusBar.currentHeight} pts ); }, platform: 'android', }]; exports.examples = examples; var styles = StyleSheet.create({ wrapper: { borderRadius: 5, marginBottom: 5, }, button: { borderRadius: 5, backgroundColor: '#eeeeee', padding: 10, }, title: { marginTop: 16, marginBottom: 8, fontWeight: 'bold', } });