@@ -561,7 +561,6 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
561561 triggerOpen : ( newOpen : boolean ) => triggerOpen ( newOpen , index ) ,
562562 onSubmit : ( ) => {
563563 triggerChange ( selectedValue ) ;
564- triggerOpen ( false , index , true ) ;
565564 resetText ( ) ;
566565 } ,
567566 onCancel : ( ) => {
@@ -589,6 +588,23 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
589588
590589 // ============================= Sync ==============================
591590 // Close should sync back with text value
591+ const startStr =
592+ mergedValue && mergedValue [ 0 ]
593+ ? generateConfig . locale . format (
594+ locale . locale ,
595+ mergedValue [ 0 ] ,
596+ 'YYYYMMDDHHmmss' ,
597+ )
598+ : '' ;
599+ const endStr =
600+ mergedValue && mergedValue [ 1 ]
601+ ? generateConfig . locale . format (
602+ locale . locale ,
603+ mergedValue [ 1 ] ,
604+ 'YYYYMMDDHHmmss' ,
605+ )
606+ : '' ;
607+
592608 React . useEffect ( ( ) => {
593609 if ( ! mergedOpen ) {
594610 setSelectedValue ( mergedValue ) ;
@@ -597,24 +613,8 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
597613
598614 // Sync innerValue with control mode
599615 React . useEffect ( ( ) => {
600- if (
601- isEqual (
602- generateConfig ,
603- getValue ( mergedValue , 0 ) ,
604- getValue ( selectedValue , 0 ) ,
605- ) &&
606- isEqual (
607- generateConfig ,
608- getValue ( mergedValue , 1 ) ,
609- getValue ( selectedValue , 1 ) ,
610- )
611- ) {
612- return ;
613- }
614-
615- // Sync select value
616616 setSelectedValue ( mergedValue ) ;
617- } , [ mergedValue ] ) ;
617+ } , [ startStr , endStr ] ) ;
618618
619619 // ============================ Warning ============================
620620 if ( process . env . NODE_ENV !== 'production' ) {
@@ -679,23 +679,25 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
679679 } ;
680680 }
681681
682+ const onContextSelect = ( date : DateType , type : 'key' | 'mouse' ) => {
683+ const values = updateValues ( selectedValue , date , activePickerIndex ) ;
684+
685+ if ( type === 'key' || ( picker === 'date' && showTime ) ) {
686+ setSelectedValue ( values ) ;
687+ } else {
688+ // triggerChange will also update selected values
689+ triggerChange ( values ) ;
690+ }
691+ } ;
692+
682693 return (
683694 < RangeContext . Provider
684695 value = { {
685696 inRange : true ,
686697 panelPosition,
687698 rangedValue : selectedValue ,
688699 hoverRangedValue : panelHoverRangedValue ,
689- onSelect : date => {
690- const values = updateValues ( selectedValue , date , activePickerIndex ) ;
691-
692- if ( picker === 'date' && showTime ) {
693- setSelectedValue ( values ) ;
694- } else {
695- // triggerChange will also update selected values
696- triggerChange ( values ) ;
697- }
698- } ,
700+ onSelect : onContextSelect ,
699701 } }
700702 >
701703 < PickerPanel < DateType >
@@ -718,7 +720,8 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
718720 return false ;
719721 } }
720722 className = { classNames ( {
721- [ `${ prefixCls } -panel-focused` ] : ! startTyping && ! endTyping ,
723+ [ `${ prefixCls } -panel-focused` ] :
724+ activePickerIndex === 0 ? ! startTyping : ! endTyping ,
722725 } ) }
723726 value = { getValue ( selectedValue , activePickerIndex ) }
724727 locale = { locale }
0 commit comments