/**
* 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 ;
},
},
];