Installations
npm install react-native-select-dropdown
Score
99.6
Supply Chain
99.1
Quality
77.8
Maintenance
100
Vulnerability
100
License
Releases
Unable to fetch releases
Developer
AdelRedaa97
Developer Guide
Module System
CommonJS
Min. Node Version
Typescript Support
No
Node Version
20.3.0
NPM Version
9.6.7
Statistics
329 Stars
124 Commits
143 Forks
8 Watching
2 Branches
18 Contributors
Updated on 27 Nov 2024
Languages
JavaScript (100%)
Total Downloads
Cumulative downloads
Total Downloads
3,152,976
Last day
-5.8%
8,042
Compared to previous day
Last week
8.2%
45,205
Compared to previous week
Last month
0.6%
179,702
Compared to previous month
Last year
82.7%
1,720,271
Compared to previous year
Daily Downloads
Weekly Downloads
Monthly Downloads
Yearly Downloads
No dependencies detected.
react-native-select-dropdown
react-native-select-dropdown is a highly customized dropdown | select | picker | menu for react native that works for android and iOS platforms.
Installation
# Using npm
1npm install react-native-select-dropdown
# Using yarn
1yarn add react-native-select-dropdown
Demo
Code provided in Examples folder.
Search Functionality (Code provided in Examples folder).
🚀 Major Changes
Version 4.0
- (defaultButtonText, buttonTextAfterSelection, buttonStyle, buttonTextStyle, renderCustomizedButtonChild, renderDropdownIcon, dropdownIconPosition) have been removed and (renderButton) has been added to customize dropdown button
- (rowTextForSelection, rowStyle, rowTextStyle, selectedRowStyle, selectedRowTextStyle, renderCustomizedRowChild) have been removed and (renderItem) has been added to customize each dropdown item
- testID added to scroll the dropdown menu in e2e tests.
- Most of issues have been fixed.
- Updated readme.md file
- More examples in examples folder.
Usage
import SelectDropdown from 'react-native-select-dropdown'
import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
...
const emojisWithIcons = [
{title: 'happy', icon: 'emoticon-happy-outline'},
{title: 'cool', icon: 'emoticon-cool-outline'},
{title: 'lol', icon: 'emoticon-lol-outline'},
{title: 'sad', icon: 'emoticon-sad-outline'},
{title: 'cry', icon: 'emoticon-cry-outline'},
{title: 'angry', icon: 'emoticon-angry-outline'},
{title: 'confused', icon: 'emoticon-confused-outline'},
{title: 'excited', icon: 'emoticon-excited-outline'},
{title: 'kiss', icon: 'emoticon-kiss-outline'},
{title: 'devil', icon: 'emoticon-devil-outline'},
{title: 'dead', icon: 'emoticon-dead-outline'},
{title: 'wink', icon: 'emoticon-wink-outline'},
{title: 'sick', icon: 'emoticon-sick-outline'},
{title: 'frown', icon: 'emoticon-frown-outline'},
];
...
<SelectDropdown
data={emojisWithIcons}
onSelect={(selectedItem, index) => {
console.log(selectedItem, index);
}}
renderButton={(selectedItem, isOpened) => {
return (
<View style={styles.dropdownButtonStyle}>
{selectedItem && (
<Icon name={selectedItem.icon} style={styles.dropdownButtonIconStyle} />
)}
<Text style={styles.dropdownButtonTxtStyle}>
{(selectedItem && selectedItem.title) || 'Select your mood'}
</Text>
<Icon name={isOpened ? 'chevron-up' : 'chevron-down'} style={styles.dropdownButtonArrowStyle} />
</View>
);
}}
renderItem={(item, index, isSelected) => {
return (
<View style={{...styles.dropdownItemStyle, ...(isSelected && {backgroundColor: '#D2D9DF'})}}>
<Icon name={item.icon} style={styles.dropdownItemIconStyle} />
<Text style={styles.dropdownItemTxtStyle}>{item.title}</Text>
</View>
);
}}
showsVerticalScrollIndicator={false}
dropdownStyle={styles.dropdownMenuStyle}
/>
...
const styles = StyleSheet.create({
dropdownButtonStyle: {
width: 200,
height: 50,
backgroundColor: '#E9ECEF',
borderRadius: 12,
flexDirection: 'row',
justifyContent: 'center',
alignItems: 'center',
paddingHorizontal: 12,
},
dropdownButtonTxtStyle: {
flex: 1,
fontSize: 18,
fontWeight: '500',
color: '#151E26',
},
dropdownButtonArrowStyle: {
fontSize: 28,
},
dropdownButtonIconStyle: {
fontSize: 28,
marginRight: 8,
},
dropdownMenuStyle: {
backgroundColor: '#E9ECEF',
borderRadius: 8,
},
dropdownItemStyle: {
width: '100%',
flexDirection: 'row',
paddingHorizontal: 12,
justifyContent: 'center',
alignItems: 'center',
paddingVertical: 8,
},
dropdownItemTxtStyle: {
flex: 1,
fontSize: 18,
fontWeight: '500',
color: '#151E26',
},
dropdownItemIconStyle: {
fontSize: 28,
marginRight: 8,
},
});
Props
Methods
data
array of data that will be represented in dropdown 'can be array of objects
Type | Required |
---|---|
array | Yes |
onSelect
function recieves selected item and its index in data array
Type | Required |
---|---|
function | Yes |
renderButton
function returns React component for the dropdown button
Type | Required |
---|---|
function | Yes |
renderItem
function returns React component for each dropdown item
Type | Required |
---|---|
function | Yes |
defaultValue
default selected item in dropdown ( check examples in Demo1)
Type | Required |
---|---|
any | No |
defaultValueByIndex
default selected item index
Type | Required |
---|---|
integer | No |
disabled
disable dropdown
Type | Required |
---|---|
boolean | No |
disabledIndexes
array of disabled items index
Type | Required |
---|---|
array | No |
disableAutoScroll
disable auto scroll to selected value
Type | Required |
---|---|
boolean | No |
testID
dropdown menu testID
Type | Required |
---|---|
string | No |
onFocus
function fires when dropdown is opened
Type | Required |
---|---|
function | No |
onBlur
function fires when dropdown is closed
Type | Required |
---|---|
function | No |
onScrollEndReached
function fires when dropdown scrolls to the end (for paginations)
Type | Required |
---|---|
function | No |
statusBarTranslucent
required to set true when statusbar is translucent (android only)
Type | Required |
---|---|
boolean | No |
dropdownStyle
style object for dropdown view
Type | Required |
---|---|
object | No |
dropdownOverlayColor
backdrop color when dropdown is opened
Type | Required |
---|---|
string | No |
showsVerticalScrollIndicator
When true, shows a vertical scroll indicator.
Type | Required |
---|---|
boolean | No |
search
enable search functionality
Type | Required |
---|---|
boolean | No |
searchInputStyle
style object for search input
Type | Required |
---|---|
object | No |
searchInputTxtColor
text color for search input
Type | Required |
---|---|
string | No |
searchInputTxtStyle
style object for search input text
Type | Required |
---|---|
object | No |
searchPlaceHolder
placeholder text for search input
Type | Required |
---|---|
string | No |
searchPlaceHolderColor
text color for search input placeholder
Type | Required |
---|---|
string | No |
renderSearchInputLeftIcon
function returns React component for search input icon
Type | Required |
---|---|
function | No |
renderSearchInputRightIcon
function returns React component for search input icon
Type | Required |
---|---|
function | No |
onChangeSearchInputText
function callback when the search input text changes, this will automatically disable the dropdown's internal search to be implemented manually outside the component
Type | Required |
---|---|
function | No |
Method | Description |
---|---|
reset() | Remove selection & reset it |
openDropdown() | Open the dropdown. |
closeDropdown() | Close the dropdown. |
selectIndex(index) | Select a specific item by index. |
License
No vulnerabilities found.
Reason
no binaries found in the repo
Reason
0 existing vulnerabilities detected
Reason
license file detected
Details
- Info: project has a license file: LICENSE:0
- Info: FSF or OSI recognized license: MIT License: LICENSE:0
Reason
Found 8/21 approved changesets -- score normalized to 3
Reason
0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
security policy file not detected
Details
- Warn: no security policy file detected
- Warn: no security file to analyze
- Warn: no security file to analyze
- Warn: no security file to analyze
Reason
project is not fuzzed
Details
- Warn: no fuzzer integrations found
Reason
branch protection not enabled on development/release branches
Details
- Warn: branch protection not enabled for branch 'master'
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
- Warn: 0 commits out of 17 are checked with a SAST tool
Score
3.4
/10
Last Scanned on 2024-11-25
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn MoreOther packages similar to react-native-select-dropdown
expo-select-dropdown
Expo / React Native Select Dropdown with search and other customizations
react-native-select-dropdown-customized
react-native-select-dropdown customized project.
@teambuildr/react-native-select-dropdown
react-native-select-dropdown is a highly customized dropdown | select | picker | menu for react native that works for andriod and iOS platforms.
react-native-select-dropdown-huge-list
react-native-select-dropdown is a highly customized dropdown | select | picker | menu for react native that works for andriod and iOS platforms.