/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @format * @flow */ 'use strict'; const React = require('react'); const {SimpleAlertExampleBlock} = require('./AlertExample'); const { StyleSheet, View, Text, TouchableHighlight, Alert, } = require('react-native'); type Props = $ReadOnly<{||}>; type State = {|promptValue: ?string|}; class PromptOptions extends React.Component { customButtons: Array; constructor(props) { super(props); // $FlowFixMe this seems to be a Flow bug, `saveResponse` is defined below this.saveResponse = this.saveResponse.bind(this); this.customButtons = [ { text: 'Custom OK', onPress: this.saveResponse, }, { text: 'Custom Cancel', style: 'cancel', }, ]; this.state = { promptValue: undefined, }; } render() { return ( Prompt value:{' '} {this.state.promptValue} Alert.prompt('Type a value', null, this.saveResponse)}> prompt with title & callback Alert.prompt('Type a value', null, this.customButtons) }> prompt with title & custom buttons Alert.prompt( 'Type a phone number', null, null, 'plain-text', undefined, 'phone-pad', ) }> prompt with title & custom keyboard Alert.prompt( 'Type a value', null, this.saveResponse, undefined, 'Default value', ) }> prompt with title, callback & default value Alert.prompt( 'Type a value', null, this.customButtons, 'login-password', 'admin@site.com', ) }> prompt with title, custom buttons, login/password & default value ); } saveResponse(promptValue) { this.setState({promptValue: JSON.stringify(promptValue)}); } } const styles = StyleSheet.create({ wrapper: { borderRadius: 5, marginBottom: 5, }, button: { backgroundColor: '#eeeeee', padding: 10, }, promptValue: { marginBottom: 10, }, promptValueLabel: { fontWeight: 'bold', }, }); exports.framework = 'React'; exports.title = 'Alert'; exports.description = 'iOS alerts and action sheets'; exports.examples = [ { title: 'Alerts', render(): React.Node { return ; }, }, { title: 'Prompt Options', render(): React.Element { return ; }, }, { title: 'Prompt Types', render(): React.Node { return ( Alert.prompt('Plain Text Entry')}> plain-text Alert.prompt('Secure Text', null, null, 'secure-text') }> secure-text Alert.prompt('Login & Password', null, null, 'login-password') }> login-password ); }, }, ];