import React, { Component } from "react"; import { StyleSheet, Text, View, StatusBar, TouchableOpacity, ScrollView, Platform, Image } from "react-native"; import { MaterialDialog, MultiPickerMaterialDialog, SinglePickerMaterialDialog } from "react-native-material-dialog"; import { getStatusBarHeight } from "react-native-status-bar-height"; import { material } from "react-native-typography"; const map = require("./map.jpg"); export default class App extends Component { state = { basicNoActionsVisible: false, basicNoTitleVisible: false, basicOkCancelVisible: false, basicCustomLabelsVisible: false, basicCustomColorsVisible: false, basicScrolledListVisible: false, basicMapVisible: false, multiPickerVisible: false, multiPickerSelectedItems: [], scrolledMultiPickerVisible: false, scrolledMultiPickerSelectedItems: [], singlePickerVisible: false, singlePickerSelectedItem: undefined, scrolledSinglePickerVisible: false, scrolledSinglePickerSelectedItem: undefined }; // TODO Add examples with more complex views render() { return ( react-native-material-dialog MaterialDialog this.setState({ basicNoActionsVisible: true })} > TITLE & NO ACTIONS this.setState({ basicNoTitleVisible: true })} > NO TITLE & OK/CANCEL this.setState({ basicOkCancelVisible: true })} > TITLE & OK/CANCEL this.setState({ basicCustomLabelsVisible: true }) } > NO TITLE & CUSTOM LABELS this.setState({ basicCustomColorsVisible: true }) } > CUSTOM COLORS this.setState({ basicScrolledListVisible: true }) } > SCROLLED WITH A CUSTOM LIST this.setState({ basicMapVisible: true })} > CUSTOM CONTENT MultiPickerMaterialDialog this.setState({ multiPickerVisible: true })} > MULTI PICKER {this.state.multiPickerSelectedItems.length === 0 ? "No items selected." : `Selected: ${this.state.multiPickerSelectedItems .map(item => item.label) .join(", ")}`} this.setState({ scrolledMultiPickerVisible: true }) } > SCROLLED MULTI PICKER {this.state.scrolledMultiPickerSelectedItems.length === 0 ? "No items selected." : `Selected: ${this.state.scrolledMultiPickerSelectedItems .map(item => item.label) .join(", ")}`} SinglePickerMaterialDialog this.setState({ singlePickerVisible: true })} > SINGLE PICKER {this.state.singlePickerSelectedItem === undefined ? "No item selected." : `Selected: ${this.state.singlePickerSelectedItem.label}`} this.setState({ scrolledSinglePickerVisible: true }) } > SCROLLED SINGLE PICKER {this.state.scrolledSinglePickerSelectedItem === undefined ? "No item selected." : `Selected: ${this.state.scrolledSinglePickerSelectedItem.label}`} { this.setState({ basicNoActionsVisible: false }); }} > You logged out of the application. { this.setState({ basicNoTitleVisible: false }); }} onCancel={() => { this.setState({ basicNoTitleVisible: false }); }} > Set alarm? { this.setState({ basicOkCancelVisible: false }); }} onCancel={() => { this.setState({ basicOkCancelVisible: false }); }} > Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running. { this.setState({ basicCustomLabelsVisible: false }); }} cancelLabel="DISCARD" onCancel={() => { this.setState({ basicCustomLabelsVisible: false }); }} > Discard draft? { this.setState({ basicCustomColorsVisible: false }); }} cancelLabel="DISCARD" onCancel={() => { this.setState({ basicCustomColorsVisible: false }); }} > Store the conversation log in Google Drive. { this.setState({ basicScrolledListVisible: false }); }} onCancel={() => { this.setState({ basicScrolledListVisible: false }); }} > {LONG_LIST.map(row => ( {row} ))} { this.setState({ basicMapVisible: false }); }} onCancel={() => { this.setState({ basicMapVisible: false }); }} > ({ value: index, label: row }))} visible={this.state.multiPickerVisible} selectedItems={this.state.multiPickerSelectedItems} onCancel={() => this.setState({ multiPickerVisible: false })} onOk={result => { this.setState({ multiPickerVisible: false }); this.setState({ multiPickerSelectedItems: result.selectedItems }); }} /> ({ value: index, label: row }))} visible={this.state.scrolledMultiPickerVisible} selectedItems={this.state.scrolledMultiPickerSelectedItems} onCancel={() => this.setState({ scrolledMultiPickerVisible: false })} onOk={result => { this.setState({ scrolledMultiPickerVisible: false }); this.setState({ scrolledMultiPickerSelectedItems: result.selectedItems }); }} /> ({ value: index, label: row }))} visible={this.state.singlePickerVisible} selectedItem={this.state.singlePickerSelectedItem} onCancel={() => this.setState({ singlePickerVisible: false })} onOk={result => { this.setState({ singlePickerVisible: false }); this.setState({ singlePickerSelectedItem: result.selectedItem }); }} /> ({ value: index, label: row }))} visible={this.state.scrolledSinglePickerVisible} selectedItem={this.state.scrolledSinglePickerSelectedItem} onCancel={() => this.setState({ scrolledSinglePickerVisible: false })} onOk={result => { this.setState({ scrolledSinglePickerVisible: false }); this.setState({ scrolledSinglePickerSelectedItem: result.selectedItem }); }} /> ); } } const LONG_LIST = [ "List element 1", "List element 2", "List element 3", "List element 4", "List element 5", "List element 6", "List element 7", "List element 8", "List element 9", "List element 10", "List element 12", "List element 13", "List element 14", "List element 15", "List element 16", "List element 17", "List element 18", "List element 19" ]; const SHORT_LIST = ["List element 1", "List element 2", "List element 3"]; const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: "white" }, contentContainer: { flex: 1, paddingTop: getStatusBarHeight() + 56, justifyContent: "flex-start", alignItems: "stretch", padding: 20 }, sectionContainer: { paddingVertical: 16 }, navigationBar: { paddingTop: getStatusBarHeight() + 12, paddingBottom: 16, flexDirection: "row", justifyContent: "center", alignItems: "center", position: "absolute", left: 0, right: 0, top: 0, backgroundColor: "#3F51B5", ...Platform.select({ android: { elevation: 4 }, ios: { zIndex: 10 } }) }, button: { flexDirection: "row", justifyContent: "center", alignItems: "center", minWidth: 88, height: 36, borderRadius: 2, backgroundColor: "#E8EAF6", elevation: 2, paddingHorizontal: 16, marginTop: 16 }, scrollViewContainer: { paddingTop: 8 }, row: { height: 48, flex: 1, flexDirection: "row", justifyContent: "flex-start", alignItems: "center" }, mapView: { height: 200, width: 280 } });