/** * 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 strict-local */ 'use strict'; const React = require('react'); const {Picker, StyleSheet, Text} = require('react-native'); const Item = Picker.Item; type State = {value: string | number, ...}; class BasicPickerExample extends React.Component<{...}, State> { state: State = { value: 'key1', }; render(): React.Node { return ( this.setState({value: v})}> ); } } class DisabledPickerExample extends React.Component<{...}, State> { state: State = { value: 'key1', }; render(): React.Node { return ( ); } } class DropdownPickerExample extends React.Component<{...}, State> { state: State = { value: 'key1', }; render(): React.Node { return ( this.setState({value: v})} mode="dropdown"> ); } } class PromptPickerExample extends React.Component<{...}, State> { state: State = { value: 'key1', }; render(): React.Node { return ( this.setState({value: v})} prompt="Pick one, just one"> ); } } type ColorState = {color: string | number, ...}; class ColorPickerExample extends React.Component<{...}, ColorState> { state: ColorState = { color: 'red', }; render(): React.Node { return ( <> this.setState({color: v})} mode="dropdown"> this.setState({color: v})} mode="dialog"> ); } } class AccessibilityLabelPickerExample extends React.Component<{||}, State> { state: State = { value: '3', }; render(): React.Node { return ( this.setState({value: v})}> ); } } const styles = StyleSheet.create({ picker: { width: 100, }, }); exports.title = ''; exports.description = 'Provides multiple options to choose from, using either a dropdown menu or a dialog.'; exports.examples = [ { title: 'Basic Picker', render: function(): React.Element { return ; }, }, { title: 'Disabled Picker', render: function(): React.Element { return ; }, }, { title: 'Dropdown Picker', render: function(): React.Element { return ; }, }, { title: 'Picker with prompt message', render: function(): React.Element { return ; }, }, { title: 'Accessibility Label pickers', render: function(): React.Element { return ; }, }, { title: 'Picker with no listener', render: function(): React.Element { return ( /* $FlowFixMe(>=0.99.0 site=react_native_fb) This comment suppresses an * error found when Flow v0.99 was deployed. To see the error, delete * this comment and run Flow. */ <> Cannot change the value of this picker because it doesn't update selectedValue. ); }, }, { title: 'Colorful pickers', render: function(): React.Element { return ; }, }, { title: 'AccessibilityLabel pickers', render: function(): React.Element { return ; }, }, ];