@@ -29,6 +29,7 @@ import getExtraFooter from './utils/getExtraFooter';
2929import getRanges from './utils/getRanges' ;
3030import useRangeViewDates from './hooks/useRangeViewDates' ;
3131import { DateRender } from './panels/DatePanel/DateBody' ;
32+ import useHoverPlaceholder from './hooks/useHoverPlaceholder' ;
3233
3334function reorderValues < DateType > (
3435 values : RangeValue < DateType > ,
@@ -284,18 +285,6 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
284285 } ,
285286 } ) ;
286287
287- const [ rangeHoverValue , setRangeHoverValue ] = useState < RangeValue < DateType > > ( null ) ;
288-
289- // ========================== Hover Range ==========================
290- const [ hoverRangedValue , setHoverRangedValue ] = useState < RangeValue < DateType > > ( null ) ;
291-
292- const onDateMouseEnter = ( date : DateType ) => {
293- setHoverRangedValue ( updateValues ( selectedValue , date , mergedActivePickerIndex ) ) ;
294- } ;
295- const onDateMouseLeave = ( ) => {
296- setHoverRangedValue ( updateValues ( selectedValue , null , mergedActivePickerIndex ) ) ;
297- } ;
298-
299288 // ============================= Modes =============================
300289 const [ mergedModes , setInnerModes ] = useMergedState < [ PanelMode , PanelMode ] > ( [ picker , picker ] , {
301290 value : mode ,
@@ -546,6 +535,49 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
546535 onTextChange : newText => onTextChange ( newText , 1 ) ,
547536 } ) ;
548537
538+ const [ rangeHoverValue , setRangeHoverValue ] = useState < RangeValue < DateType > > ( null ) ;
539+
540+ // ========================== Hover Range ==========================
541+ const [ hoverRangedValue , setHoverRangedValue ] = useState < RangeValue < DateType > > ( null ) ;
542+
543+ const [ startPlaceholder , onStartEnter , onStartLeave ] = useHoverPlaceholder (
544+ getValue ( placeholder , 0 ) || '' ,
545+ startText ,
546+ {
547+ formatList,
548+ generateConfig,
549+ locale,
550+ } ,
551+ ) ;
552+
553+ const [ endPlaceholder , onEndEnter , onEndLeave ] = useHoverPlaceholder (
554+ getValue ( placeholder , 1 ) || '' ,
555+ endText ,
556+ {
557+ formatList,
558+ generateConfig,
559+ locale,
560+ } ,
561+ ) ;
562+
563+ const onDateMouseEnter = ( date : DateType ) => {
564+ setHoverRangedValue ( updateValues ( selectedValue , date , mergedActivePickerIndex ) ) ;
565+ if ( mergedActivePickerIndex === 0 ) {
566+ onStartEnter ( date ) ;
567+ } else {
568+ onEndEnter ( date ) ;
569+ }
570+ } ;
571+
572+ const onDateMouseLeave = ( ) => {
573+ setHoverRangedValue ( updateValues ( selectedValue , null , mergedActivePickerIndex ) ) ;
574+ if ( mergedActivePickerIndex === 0 ) {
575+ onStartLeave ( null ) ;
576+ } else {
577+ onEndLeave ( null ) ;
578+ }
579+ } ;
580+
549581 // ============================= Input =============================
550582 const getSharedInputHookProps = ( index : 0 | 1 , resetText : ( ) => void ) => ( {
551583 blurToCancel : needConfirmButton ,
@@ -1040,7 +1072,7 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
10401072 triggerStartTextChange ( e . target . value ) ;
10411073 } }
10421074 autoFocus = { autoFocus }
1043- placeholder = { getValue ( placeholder , 0 ) || '' }
1075+ placeholder = { startPlaceholder }
10441076 ref = { startInputRef }
10451077 { ...startInputProps }
10461078 { ...inputSharedProps }
@@ -1063,7 +1095,7 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
10631095 onChange = { e => {
10641096 triggerEndTextChange ( e . target . value ) ;
10651097 } }
1066- placeholder = { getValue ( placeholder , 1 ) || '' }
1098+ placeholder = { endPlaceholder }
10671099 ref = { endInputRef }
10681100 { ...endInputProps }
10691101 { ...inputSharedProps }
0 commit comments