react-native-datepicker-dialog
This library provides the cross-platform components for to open the date picker dialogs in an effective way. It uses the native DatePickerAndroid & DatePickerIOS components. It will work for both ios & android.
Getting Started
1. Install npm i react-native-datepicker-dialog --save.
2. Import DatePickerDialog component
import { DatePickerDialog } from 'react-native-datepicker-dialog'
3. Place the dialog component at end of your views and assign the references, event handlers to it
<DatePickerDialog ref="dobDialog" onDatePicked={this.onDOBDatePicked.bind(this)} /> <DatePickerDialog ref="journeyDialog" onDatePicked={this.onJourneyDatePicked.bind(this)} />
onDOBDatePicked = (date) => { //Here you will get the selected date this.setState({ dobDate: date, dobText: moment(date).format('DD-MMM-YYYY') }); }
4. Open the date picker dialog
this.refs.dobDialog.open({ date: new Date(), maxDate: new Date() //To restirct future date });
It will work for both ios & android.
Example
/** * Sample React Native App * https://github.com/facebook/react-native * @flow */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View, TouchableOpacity, } from 'react-native'; import { DatePickerDialog } from 'react-native-datepicker-dialog' import moment from 'moment'; export default class DatePickerTimePickerDialog extends Component { constructor(props){ super(props); this.state = { dobText: '', dobDate: null, journeyText: '', journeyDate: null, } } /** * DOB textbox click listener */ onDOBPress = () => { let dobDate = this.state.dobDate; if(!dobDate || dobDate == null){ dobDate = new Date(); this.setState({ dobDate: dobDate }); } //To open the dialog this.refs.dobDialog.open({ date: dobDate, maxDate: new Date() //To restirct future date }); } /** * Call back for dob date picked event * */ onDOBDatePicked = (date) => { this.setState({ dobDate: date, dobText: moment(date).format('DD-MMM-YYYY') }); } /** * Journey date textbox click listener */ onJourneyDatePress = () => { let journeyDate = this.state.journeyDate; if(!journeyDate || journeyDate == null){ journeyDate = new Date(); this.setState({ journeyDate: journeyDate }); } //To open the dialog this.refs.journeyDialog.open({ date: journeyDate, minDate: new Date() //To restirct past date }); } /** * Call back for journey date picked event * */ onJourneyDatePicked = (date) => { this.setState({ journeyDate: date, journeyText: moment(date).format('DD MMM, YYYY') }); } render() { return ( <View style={styles.container}> <Text style={styles.content}> Date Picker Dialog Example </Text> <View style={{flex:1, marginTop:10}}> <Text>DOB</Text> <TouchableOpacity onPress={this.onDOBPress.bind(this)} > <View style={styles.datePickerBox}> <Text style={styles.datePickerText}>{this.state.dobText}</Text> </View> </TouchableOpacity> <Text style={{marginTop: 20}}>Journey Date</Text> <TouchableOpacity onPress={this.onJourneyDatePress.bind(this)} > <View style={styles.datePickerBox}> <Text style={styles.datePickerText}>{this.state.journeyText}</Text> </View> </TouchableOpacity> </View> {/* Place the dialog component at end of your views and assign the references, event handlers to it.*/} <DatePickerDialog ref="dobDialog" onDatePicked={this.onDOBDatePicked.bind(this)} /> <DatePickerDialog ref="journeyDialog" onDatePicked={this.onJourneyDatePicked.bind(this)} /> </View> ); } } const styles = StyleSheet.create({ container: { flex: 1, padding: 10, backgroundColor: '#FFFFFF' }, content: { fontSize: 20, textAlign: 'center', margin: 10, }, datePickerBox:{ marginTop: 9, borderColor: '#ABABAB', borderWidth: 0.5, padding: 0, borderTopLeftRadius: 4, borderTopRightRadius: 4, borderBottomLeftRadius: 4, borderBottomRightRadius: 4, height: 38, justifyContent:'center' }, datePickerText: { fontSize: 14, marginLeft: 5, borderWidth: 0, color: '#121212', }, }); AppRegistry.registerComponent('DatePickerTimePickerDialog', () => DatePickerTimePickerDialog);
Documentation
Instance Methods
1. open(options: Object) - Opens the standard date picker dialog
The available keys for the options
object are:
date
(Date
object or timestamp in milliseconds) - date to show by defaultminDate
(Date
or timestamp in milliseconds) - minimum date that can be selectedmaxDate
(Date
object or timestamp in milliseconds) - minimum date that can be selected
2. getSelectedDate - It will return the selected date (@return date object)
Props
1. onDatePicked: PropTypes.func - Date picked handler. This method will be called when the user selected the date from picker.The first and only argument is a Date object representing the picked date and time.
2. onCancel: PropTypes.func - Date cancelled handler. This method will be called when the user dismissed the picker.
3. okLabel: PropTypes.string - **Ios Only**
(Ok button label) . Default value is 'Ok'
4. cancelLabel: PropTypes.string - **Ios Only**
(Cancel button label) . Default value is 'Cancel'
References
- https://facebook.github.io/react-native/docs/datepickerandroid.html
- http://facebook.github.io/react-native/releases/0.38/docs/datepickerios.html#datepickerios
- https://github.com/facebook/react-native/commit/eaccd7e82e228d744e6aef34b332d99c1ff616a5