@@ -59,7 +59,6 @@ function reorderValues<DateType>(
59
59
function canValueTrigger < DateType > (
60
60
value : EventValue < DateType > ,
61
61
index : number ,
62
- disabledList : [ boolean , boolean ] ,
63
62
allowEmpty ?: [ boolean , boolean ] | null ,
64
63
) : boolean {
65
64
if ( value ) {
@@ -105,6 +104,11 @@ export interface RangePickerSharedProps<DateType> {
105
104
) => void ;
106
105
onFocus ?: React . FocusEventHandler < HTMLInputElement > ;
107
106
onBlur ?: React . FocusEventHandler < HTMLInputElement > ;
107
+
108
+ /** @private Internal usage. Do not use in your production env */
109
+ components ?: {
110
+ button : React . ComponentType ;
111
+ } ;
108
112
}
109
113
110
114
type OmitPickerProps < Props > = Omit <
@@ -202,6 +206,7 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
202
206
onCalendarChange,
203
207
onFocus,
204
208
onBlur,
209
+ components,
205
210
} = props as MergedRangePickerProps < DateType > ;
206
211
207
212
const containerRef = React . useRef < HTMLDivElement > ( null ) ;
@@ -415,18 +420,8 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
415
420
onCalendarChange ( values , [ startStr , endStr ] ) ;
416
421
}
417
422
418
- const canStartValueTrigger = canValueTrigger (
419
- startValue ,
420
- 0 ,
421
- mergedDisabled ,
422
- allowEmpty ,
423
- ) ;
424
- const canEndValueTrigger = canValueTrigger (
425
- endValue ,
426
- 1 ,
427
- mergedDisabled ,
428
- allowEmpty ,
429
- ) ;
423
+ const canStartValueTrigger = canValueTrigger ( startValue , 0 , allowEmpty ) ;
424
+ const canEndValueTrigger = canValueTrigger ( endValue , 1 , allowEmpty ) ;
430
425
431
426
const canTrigger =
432
427
values === null || ( canStartValueTrigger && canEndValueTrigger ) ;
@@ -485,7 +480,16 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
485
480
// Let popup panel handle keyboard
486
481
return operationRef . current . onKeyDown ( e ) ;
487
482
}
488
- return false ;
483
+
484
+ /* istanbul ignore next */
485
+ /* eslint-disable no-lone-blocks */
486
+ {
487
+ warning (
488
+ false ,
489
+ 'Picker not correct forward KeyDown operation. Please help to fire issue about this.' ,
490
+ ) ;
491
+ return false ;
492
+ }
489
493
} ;
490
494
491
495
// ============================= Text ==============================
@@ -803,13 +807,15 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
803
807
}
804
808
805
809
let rangesNode : React . ReactNode ;
806
- if ( ranges ) {
807
- const rangeList = Object . keys ( ranges ) ;
810
+ if ( ranges || showTime ) {
811
+ const mergedRanges = ranges || { } ;
812
+ const rangeList = Object . keys ( mergedRanges ) ;
813
+ const Button = ( components && components . button ) || 'button' ;
808
814
809
815
rangesNode = (
810
816
< ul className = { `${ prefixCls } -ranges` } >
811
817
{ rangeList . map ( label => {
812
- const range = ranges [ label ] ;
818
+ const range = mergedRanges [ label ] ;
813
819
814
820
return (
815
821
< li
@@ -823,6 +829,19 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
823
829
</ li >
824
830
) ;
825
831
} ) }
832
+
833
+ { showTime && (
834
+ < li
835
+ className = { `${ prefixCls } -ok` }
836
+ onClick = { ( ) => {
837
+ triggerChange ( selectedValue ) ;
838
+ } }
839
+ >
840
+ < Button disabled = { ! getValue ( selectedValue , activePickerIndex ) } >
841
+ { locale . ok }
842
+ </ Button >
843
+ </ li >
844
+ ) }
826
845
</ ul >
827
846
) ;
828
847
}
@@ -854,6 +873,7 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
854
873
</ div >
855
874
) ;
856
875
876
+ // ============================= Icons =============================
857
877
let suffixNode : React . ReactNode ;
858
878
if ( suffixIcon ) {
859
879
suffixNode = < span className = { `${ prefixCls } -suffix` } > { suffixIcon } </ span > ;
0 commit comments