react-native-settings-builder
Settings components for React Native in style of native iOS or Android components. Uses react-native-dialogs for dialogs on Android.
npm install react-native-settings-components --save
or
yarn add react-native-settings-components
import { SettingsDividerShort , SettingsDividerLong , SettingsEditText , SettingsCategoryHeader , SettingsSwitch , SettingsPicker } from 'react-native-settings-components' ;
export default class App extends Component {
constructor ( ) {
super ( ) ;
this . state = {
username : '' ,
allowPushNotifications : false ,
gender : '' ,
} ;
}
render ( ) {
< ScrollView style = { { flex : 1 , backgroundColor : ( Platform . OS === 'ios' ) ? colors . iosSettingsBackground : colors . white } } >
< SettingsCategoryHeader title = { 'My Account' } textStyle = { ( Platform . OS === 'android' ) ? { color : colors . monza } : null } />
< SettingsDividerLong android = { false } />
< SettingsEditText
title = "Username"
dialogDescription = { 'Enter your username.' }
valuePlaceholder = "..."
negativeButtonTitle = { 'Cancel' }
buttonRightTitle = { 'Save' }
onSaveValue = { ( value ) => {
console . log ( 'username:' , value ) ;
this . setState ( {
username : value
} ) ;
} }
value = { this . state . username }
dialogAndroidProps = { {
widgetColor : colors . monza ,
positiveColor : colors . monza ,
negativeColor : colors . monza ,
} }
/>
< SettingsDividerShort />
< SettingsPicker
title = "Gender"
dialogDescription = { 'Choose your gender.' }
possibleValues = { [
{ label : '...' , value : '' } ,
{ label : 'male' , value : 'male' } ,
{ label : 'female' , value : 'female' } ,
{ label : 'other' , value : 'other' }
] }
negativeButtonTitle = { 'Cancel' }
buttonRightTitle = { 'Save' }
onSaveValue = { value => {
console . log ( 'gender:' , value ) ;
this . setState ( {
gender : value
} ) ;
} }
value = { this . state . gender }
styleModalButtonsText = { { color : colors . monza } }
/>
...
< SettingsSwitch
title = { 'Allow Push Notifications' }
onSaveValue = { ( value ) => {
console . log ( 'allow push notifications:' , value ) ;
this . setState ( {
allowPushNotifications : value
} ) ;
} }
value = { this . state . allowPushNotifications }
thumbTintColor = { ( this . state . allowPushNotifications ) ? colors . switchEnabled : colors . switchDisabled }
/>
...
</ ScrollView >
}
}
const colors = {
iosSettingsBackground : 'rgb(235,235,241)' ,
white : '#FFFFFF' ,
monza : '#C70039' ,
switchEnabled : ( Platform . OS === 'android' ) ? '#C70039' : null ,
switchDisabled : ( Platform . OS === 'android' ) ? '#efeff3' : null ,
switchOnTintColor : ( Platform . OS === 'android' ) ? 'rgba(199, 0, 57, 0.6)' : null ,
blueGem : '#27139A' ,
} ;
SettingsCategoryHeader
Prop
Description
Type
Default
title
category title
String
Required
container
container props except style
Object
{}
containerStyle
container style prop
ViewPropTypes
{}
titleProps
title props except style
Text Component Props / Object
{}
titleStyle
title style prop
Text PropTypes
{}
Prop
Description
Type
Default
ios
display on iOS
Boolean
true
android
display on Android
Boolean
true
dividerStyle
divider style prop
ViewPropTypes
{}
Prop
Description
Type
Default
ios
display on iOS
Boolean
true
android
display on Android
Boolean
true
containerStyle
container style prop
ViewPropTypes
{}
dividerStyle
divider style prop
ViewPropTypes
{}
Prop
Description
Type
Default
containerProps
container props except style
View Component Props
{}
containerStyle
container style prop
ViewPropTypes
{}
disabledOverlayStyle
component overlay style if setting is disabled
ViewPropTypes
{}
titleProps
title props except style
Text Component Props
{}
titleStyle
title style prop
Text PropTypes
{}
title
title of setting
String
Required
valueProps
value props except style
Text Component Props
{}
valueStyle
value style prop
Text PropTypes
{}
value
value of setting
String
Required
valuePlaceholder
placeholder if value is empty
String
...
negativeButtonTitle
negative dialog buttons title
String
Required
positiveButtonTitle
positive dialog buttons title
String
Required
dialogDescription
text explaining what the user should do e.g.
String
`''``
onSaveValue
callback to be invoked when the positive dialog button is pressed
String
Required
disabled
whether the settings value should be editable or not
Boolean
false
iosDialogInputType
input type of the dialog alert on ios
String
plain-text
androidDialogProps
input dialog props on android (see react-native-dialogs )
String
{}
touchableProps
props of touchable opening input dialog
String
{}
Prop
Description
Type
Default
containerProps
container props except style
View Component Props
{}
containerStyle
container style prop
ViewPropTypes
{}
disabledOverlayStyle
component overlay style if setting is disabled
ViewPropTypes
{}
titleProps
title props except style
Text Component Props
{}
titleStyle
title style prop
Text PropTypes
{}
title
title of setting
String
Required
valueProps
value props except style
Text Component Props
{}
valueStyle
value style prop
Text PropTypes
{}
value
value of setting
String
Required
possibleValues
picker values
Array of objects in format {label: string, value: string}
Required
valuePlaceholder
placeholder if value is empty
String
...
negativeButtonTitle
negative dialog buttons title
String
Required
positiveButtonTitle
positive dialog buttons title
String
Required
dialogDescription
text explaining what the user should do e.g.
String
''
modalDescriptionStyle
modal description style prop
Text PropTypes
{}
onSaveValue
callback to be invoked when the positive dialog button is pressed
String
Required
disabled
whether the settings value should be editable or not
Boolean
false
modalStyle
modal ScrollView style prop
ViewPropTypes
{}
modalInnerStyle
modal ScrollView inner View style prop
ViewPropTypes
{}
modalButtonsTitleStyle
modal buttons style prop (positive and negative button)
Text PropTypes
{}
modalButtonsTitleNegativeStyle
value style prop
Text PropTypes
{}
modalButtonsTitlePositiveStyle
value style prop
Text PropTypes
{}
Prop
Description
Type
Default
containerProps
container props except style
View Component Props
{}
containerStyle
container style prop
ViewPropTypes
{}
disabledOverlayStyle
component overlay style if setting is disabled
ViewPropTypes
{}
titleProps
title props except style
Text Component Props
{}
titleStyle
title style prop
Text PropTypes
{}
title
title of setting
String
Required
switchWrapperProps
switch wrapper props except style
View Component Props
{}
switchWrapperStyle
switch wrapper style prop
View PropTypes
{}
value
value of setting
Boolean
Required
disabled
whether the settings value should be editable or not
Boolean
false
onSaveValue
callback to be invoked when the positive dialog button is pressed
String
Required
thumbTintColor
switch thumb tint color
Color
null
onTintColor
switch background color when the switch is turned on
Color
null
switchProps
Switch component props except the ones mentioned before
Switch Component Props
{}
There is an example app in the example directory.
Run iOS version by
git clone https://github.com/florianstahr/react-native-settings-components.git
npm install
react-native link
react-native run-ios