A React Native component that provides a filterable select dropdown/picker.
yarn add react-native-actions-sheet-pickeror
npm install react-native-actions-sheet-pickerimport React, { useState, useMemo, useEffect } from 'react';
import { StyleSheet, Text, TouchableOpacity, SafeAreaView } from 'react-native';
import { Picker, onOpen } from 'react-native-actions-sheet-picker';
/*
**Example data:
*/
import countries from './countries.json';
export default function App() {
const [data, setData] = useState([]);
const [selected, setSelected] = useState(undefined);
const [query, setQuery] = useState('');
useEffect(() => {
setData(countries);
}, []);
/*
**Example filter function
* @param {string} filter
*/
const filteredData = useMemo(() => {
if (data && data.length > 0) {
return data.filter((item) =>
item.name
.toLocaleLowerCase('en')
.includes(query.toLocaleLowerCase('en'))
);
}
}, [data, query]);
/*
**Input search
*@param {string} text
*/
const onSearch = (text) => {
setQuery(text);
};
return (
<SafeAreaView style={styles.container}>
<TouchableOpacity
style={styles.button}
onPress={() => {
onOpen('country');
}}
>
<Text>Open ActionSheet</Text>
</TouchableOpacity>
<Text style={{ padding: 10 }}>Chosen : {JSON.stringify(selected)}</Text>
<Picker
id="country"
data={filteredData}
inputValue={query}
searchable={true}
label="Select Country"
setSelected={setSelected}
onSearch={onSearch}
/>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
},
button: {
backgroundColor: '#8B93A5',
padding: 10,
borderRadius: 6,
marginTop: 50,
},
});| Properties | Type | Description | Default |
|---|---|---|---|
| id *required |
string |
A unique id for the ActionSheet | |
| data | array |
Array of list items | [] |
| inputValue | string |
The value to show for the text input. | |
| searchable | boolean |
Searchable state | false |
| loading | boolean |
Loading state | false |
| label | string |
Flatlist label | |
| height | string |
ActionSheet height | Dimensions.get('window').height * 0.5 |
| closeText | string |
Close text | "Close" |
| placeholderText | string |
Placeholder text | "Search" |
| noDataFoundText | string |
No data found text | "No Data Found." |
| placeholderTextColor | string |
Placeholder text color | #8B93A5 |
| setSelected | function |
Selected function | |
| onSearch | function |
Textinput search function | |
| renderListItem | function |
Render List item |
| Properties | Type | Description |
|---|---|---|
| onOpen | function |
SheetManager show |
| onClose | function |
SheetManager hide |
| Properties | Type | Description |
|---|---|---|
| actionsSheetProps | object |
react-native-actions-sheet |
| flatListProps | object |
FlatListProps |
| searchInputProps | object |
TextInputProps |
See the contributing guide to learn how to contribute to the repository and the development workflow.
MIT

