React Native Picker Modal View
React Native Module to select item picker modal.
An alternative to Picker and PickerIOS components with an unified API and consistent look & feel on both plaforms. It's fully configurable and includes built-in support for text search and alphabetical index. Ideal for longer lists not suitable for "wheel-pickers".
Stores Supported:
Apple App Store | Google Play |
---|
✓ | ✓ |
| |
Getting started
$ npm install react-native-picker-modal-view --save
or
$ yarn add react-native-picker-modal-view
Example
import React, { Component } from 'react';
import PickerModal from 'react-native-picker-modal-view';
const items = [ { "Name": "United States", "Value": "United States", "Code": "US", "Id": 1 }, { "Name": "China", "Value": "China", "Code": "CN", "Id": 2 }, { "Name": "Japan", "Value": "Japan", "Code": "JP", "Id": 3 }, { "Name": "Germany", "Value": "Germany", "Code": "DE", "Id": 4 }, { "Name": "Turkey", "Value": "Turkey", "Code": "TR", "Id": 5 } ];
export default class example extends Component {
constructor(props) {
super(props);
this.state = {
selectedItem: {},
};
}
render() {
return (
<PickerModal
renderSelectView={(disabled, selected, showModal) =>
<Button disabled={disabled} title={"Show me!"} onPress={showModal} />
}
onSelected={(selected) => this.selected(selected)}
onClosed={this.close.bind(this)}
onBackButtonPressed={this.onBackRequest.bind(this)}
items={items}
sortingLanguage={'tr'}
showToTopButton={true}
selected={this.state.selectedItem}
autoGenerateAlphabeticalIndex={true}
selectPlaceholderText={'Choose one...'}
onEndReached={() => console.log('list ended...')}
searchPlaceholderText={'Search...'}
requireSelection={false}
autoSort={false}
/>
)
}
close() {
console.log("close key pressed");
}
selected(selected) {
this.setState({
selectedItem: selected
})
}
onBackRequest() {
console.log("back key pressed");
}
}
Options
Properties | Type | Description | Default |
---|
modalAnimationType | string | The RN Modal show/hide animation type | "slide" |
showAlphabeticalIndex | string | Hides alphabetical index | "true" |
onClosed | Function | Fired when the modal is closed | |
onBackButtonPressed | Function | Fired when the back key is pressed | |
onSelected *required | Function | Returns selected item object | "{Id, Name, Value, [key: string]: any}" |
items *required | array | Array of list items | "[{Id, Name, Value, [key: string]: any}]" |
renderSelectView | Element | Render Select Component | <SelectBoxComponent (built-in)> |
renderListItem | Element | Render List item | <ListItemComponent (built-in)/> |
alphabeticalIndexChars | array | Chracters array for the alphabetical index | <Turkish alphabet chracters> |
searchInputTextColor | string | Search input placeholder text color | "#252525" |
keyExtractor | Function | Flatlist defined {key} function | <Predefined return map index> |
autoGenerateAlphabeticalIndex | boolean | Auto-generates alphabetical index from list items data | "false" |
sortingLanguage | string | Country ISO (Alpha 2) Code for localeCompare | "tr" |
showToTopButton | boolean | Button for scroll to offset 0 | "true" |
onEndReached | Function | Fired when the list reaches the end | |
selectPlaceholderText | string | Select box placeholder text | "Choose one..." |
searchPlaceholderText | string | Search input placeholder text | "Search..." |
selected | object | Default selected item | |
autoSort | boolean | Auto-sort data list | "false" |
disabled | boolean | Disable Select box | |
requireSelection | boolean | Require at least one list item is selected | "false" |
Core Props of React Native
Properties | Type | Description | Default |
---|
ModalProps | object | React Native Modal Props | |
FlatListProps | object | React Native Flatlist Props | |
SearchInputProps | object | React Native TextInput Props | |
Running example project
You should have React Native CLI to be installed in order to run example.
Follow this instructions if you need to install React Native CLI
To run the demo app, go to ExampleApp directory then run the following commands:
npm install
Once the installation is done, you can run the following command:
react-native run-ios
react-native run-android
Notes
- Auto-alphabetical index supported for Turkish and English languages.
Releases