@@ -16,8 +16,8 @@ export default class DateTimePicker extends Component {
1616 constructor ( props ) {
1717 super ( props ) ;
1818 const { time, date} = this . parseDateTime ( props . value ) ;
19- const isValidTime = isDateTime ( testDate + ' ' + time ) ;
20- const isValidDate = isDateTime ( date + ' ' + testTime ) ;
19+ const isValidTime = isDateTime ( testDate + ' ' + time ) || time === timePlaceholder ;
20+ const isValidDate = isDateTime ( date + ' ' + testTime ) || date === datePlaceholder ;
2121
2222 this . state = {
2323 calendarOpen : false ,
@@ -113,11 +113,12 @@ export default class DateTimePicker extends Component {
113113
114114 parseDateTime ( value ) {
115115 const parsed = value . split ( ' ' ) ;
116- return { date : parsed [ 0 ] , time : parsed [ 1 ] } ;
116+ return { date : parsed [ 0 ] , time : parsed [ 1 ] ? parsed [ 1 ] : '' } ;
117117 }
118118
119119 updateTime ( value ) {
120- const update = this . state . dateValue + ' ' + value ;
120+ const { date : currentDate } = this . parseDateTime ( this . props . value ) ;
121+ const update = currentDate + ' ' + value ;
121122 const isValidTime = isDateTime ( testDate + ' ' + value ) ;
122123
123124 if ( value === '' ) {
@@ -137,6 +138,10 @@ export default class DateTimePicker extends Component {
137138 return ;
138139 }
139140
141+ if ( value === timePlaceholder ) {
142+ return ;
143+ }
144+
140145 if ( ! isValidTime ) {
141146 this . setState ( {
142147 timeInputClassName : 'datetimepicker-container-time-input--error' ,
@@ -146,7 +151,8 @@ export default class DateTimePicker extends Component {
146151 }
147152
148153 updateDate ( value ) {
149- const update = value + ' ' + this . state . timeValue ;
154+ const { time : currentTime } = this . parseDateTime ( this . props . value ) ;
155+ const update = value + ' ' + currentTime ;
150156 const isValidDate = isDateTime ( value + ' ' + testTime ) ;
151157
152158 if ( isValidDate ) {
@@ -166,6 +172,10 @@ export default class DateTimePicker extends Component {
166172 return ;
167173 }
168174
175+ if ( value === datePlaceholder ) {
176+ return ;
177+ }
178+
169179 if ( ! isValidDate ) {
170180 this . setState ( {
171181 dateValue : value ,
@@ -184,6 +194,7 @@ export default class DateTimePicker extends Component {
184194 value = { this . state . dateValue }
185195 editableClassName = { this . state . dateInputClassName }
186196 onUpdate = { this . updateDate }
197+ placeHolder = { datePlaceholder }
187198 />
188199 < div className = "datetimepicker-container-icons" >
189200 < CalendarMultiselectIcon
@@ -232,7 +243,7 @@ export default class DateTimePicker extends Component {
232243 < TextInput
233244 value = { this . state . timeValue }
234245 onUpdate = { this . updateTime }
235- placeHolder = "hh:mm:ss.xxx"
246+ placeHolder = { timePlaceholder }
236247 editableClassName = { this . state . timeInputClassName }
237248 />
238249 < span className = "datetimepicker-date-units" >
@@ -247,7 +258,6 @@ export default class DateTimePicker extends Component {
247258DateTimePicker . propTypes = {
248259 value : PropTypes . string . isRequired ,
249260 onChange : PropTypes . func . isRequired ,
250- placeholder : PropTypes . string . isRequired ,
251261} ;
252262
253263DateTimePicker . contextTypes = {
0 commit comments