@@ -21,6 +21,7 @@ import {
21
21
getMonth ,
22
22
getSeconds ,
23
23
getYear ,
24
+ getHoursMinutesSeconds ,
24
25
convert12to24 ,
25
26
convert24to12 ,
26
27
} from './shared/dates' ;
@@ -179,7 +180,48 @@ export default class DateTimeInput extends PureComponent {
179
180
) ;
180
181
}
181
182
183
+ get maxTime ( ) {
184
+ const { maxDate } = this . props ;
185
+
186
+ if ( ! maxDate ) {
187
+ return null ;
188
+ }
189
+
190
+ const { year, month, day } = this . state ;
191
+
192
+ if (
193
+ getYear ( maxDate ) !== year
194
+ || getMonth ( maxDate ) !== month
195
+ || getDay ( maxDate ) !== day
196
+ ) {
197
+ return null ;
198
+ }
199
+
200
+ return getHoursMinutesSeconds ( maxDate ) ;
201
+ }
202
+
203
+ get minTime ( ) {
204
+ const { minDate } = this . props ;
205
+
206
+ if ( ! minDate ) {
207
+ return null ;
208
+ }
209
+
210
+ const { year, month, day } = this . state ;
211
+
212
+ if (
213
+ getYear ( minDate ) !== year
214
+ || getMonth ( minDate ) !== month
215
+ || getDay ( minDate ) !== day
216
+ ) {
217
+ return null ;
218
+ }
219
+
220
+ return getHoursMinutesSeconds ( minDate ) ;
221
+ }
222
+
182
223
get commonInputProps ( ) {
224
+ const { maxTime, minTime } = this ;
183
225
const {
184
226
disabled,
185
227
isWidgetOpen,
@@ -192,7 +234,9 @@ export default class DateTimeInput extends PureComponent {
192
234
className,
193
235
disabled,
194
236
maxDate : maxDate || defaultMaxDate ,
237
+ maxTime,
195
238
minDate : minDate || defaultMinDate ,
239
+ minTime,
196
240
onChange : this . onChange ,
197
241
onKeyDown : this . onKeyDown ,
198
242
placeholder : '--' ,
@@ -438,12 +482,13 @@ export default class DateTimeInput extends PureComponent {
438
482
return null ;
439
483
}
440
484
441
- const { minute } = this . state ;
485
+ const { hour , minute } = this . state ;
442
486
443
487
return (
444
488
< MinuteInput
445
489
key = "minute"
446
490
{ ...this . commonInputProps }
491
+ hour = { hour }
447
492
maxDetail = { maxDetail }
448
493
value = { minute }
449
494
/>
@@ -458,13 +503,15 @@ export default class DateTimeInput extends PureComponent {
458
503
return null ;
459
504
}
460
505
461
- const { second } = this . state ;
506
+ const { hour , minute , second } = this . state ;
462
507
463
508
return (
464
509
< SecondInput
465
510
key = "second"
466
511
{ ...this . commonInputProps }
512
+ hour = { hour }
467
513
maxDetail = { maxDetail }
514
+ minute = { minute }
468
515
value = { second }
469
516
/>
470
517
) ;
0 commit comments