@@ -5,7 +5,7 @@ import moment from 'moment'
55export default class CustomDatePickerAndroid extends Component {
66 static propTypes = {
77 date : PropTypes . instanceOf ( Date ) ,
8- mode : PropTypes . oneOf ( [ 'date' , 'time' ] ) ,
8+ mode : PropTypes . oneOf ( [ 'date' , 'time' , 'datetime' ] ) ,
99 onCancel : PropTypes . func . isRequired ,
1010 onConfirm : PropTypes . func . isRequired ,
1111 visible : PropTypes . bool
@@ -19,7 +19,7 @@ export default class CustomDatePickerAndroid extends Component {
1919
2020 componentDidUpdate = ( prevProps ) => {
2121 if ( ! prevProps . visible && this . props . visible ) {
22- if ( this . props . mode === 'date' ) {
22+ if ( this . props . mode === 'date' || this . props . mode === 'datetime' ) {
2323 this . _showDatePickerAndroid ( )
2424 } else {
2525 this . _showTimePickerAndroid ( )
@@ -34,7 +34,23 @@ export default class CustomDatePickerAndroid extends Component {
3434 } )
3535 if ( action !== DatePickerAndroid . dismissedAction ) {
3636 const date = moment ( { year, month, day } ) . toDate ( )
37- this . props . onConfirm ( date )
37+
38+ if ( this . props . mode === 'datetime' ) {
39+ // Prepopulate and show time picker
40+ const timeOptions = ! this . props . date ? { } : {
41+ hour : this . props . date . getHours ( ) ,
42+ minute : this . props . date . getMinutes ( )
43+ } ;
44+
45+ TimePickerAndroid . open ( timeOptions ) . then ( ( { action, minute, hour} ) => {
46+ if ( action === TimePickerAndroid . timeSetAction ) {
47+ let selectedDate = new Date ( year , month , day , hour , minute ) ;
48+ this . props . onConfirm ( selectedDate ) ;
49+ }
50+ } ) ;
51+ } else {
52+ this . props . onConfirm ( date )
53+ }
3854 } else {
3955 this . props . onCancel ( )
4056 }
0 commit comments