@@ -10,6 +10,7 @@ import {
1010} from '../../utils/dateUtil' ;
1111import { Locale } from '../../interface' ;
1212import RangeContext from '../../RangeContext' ;
13+ import PanelContext from '../../PanelContext' ;
1314
1415export type DateRender < DateType > = (
1516 currentDate : DateType ,
@@ -48,7 +49,8 @@ function DateBody<DateType>({
4849 dateRender,
4950 onSelect,
5051} : DateBodyProps < DateType > ) {
51- const { rangedValue } = React . useContext ( RangeContext ) ;
52+ const { rangedValue, hoverRangedValue } = React . useContext ( RangeContext ) ;
53+ const { onDateMouseEnter, onDateMouseLeave } = React . useContext ( PanelContext ) ;
5254
5355 const datePrefixCls = `${ prefixCls } -cell` ;
5456 const weekFirstDay = generateConfig . locale . getWeekFirstDay ( locale . locale ) ;
@@ -95,10 +97,19 @@ function DateBody<DateType>({
9597 'YYYY-MM-DD' ,
9698 ) }
9799 onClick = { ( ) => {
98- if ( disabled ) {
99- return ;
100+ if ( ! disabled ) {
101+ onSelect ( currentDate ) ;
102+ }
103+ } }
104+ onMouseEnter = { ( ) => {
105+ if ( ! disabled && onDateMouseEnter ) {
106+ onDateMouseEnter ( currentDate ) ;
107+ }
108+ } }
109+ onMouseLeave = { ( ) => {
110+ if ( ! disabled && onDateMouseLeave ) {
111+ onDateMouseLeave ( currentDate ) ;
100112 }
101- onSelect ( currentDate ) ;
102113 } }
103114 className = { classNames ( datePrefixCls , {
104115 [ `${ datePrefixCls } -disabled` ] : disabled ,
@@ -123,6 +134,22 @@ function DateBody<DateType>({
123134 rangedValue && rangedValue [ 1 ] ,
124135 currentDate ,
125136 ) ,
137+ [ `${ datePrefixCls } -range-hover` ] : isInRange (
138+ generateConfig ,
139+ hoverRangedValue && hoverRangedValue [ 0 ] ,
140+ hoverRangedValue && hoverRangedValue [ 1 ] ,
141+ currentDate ,
142+ ) ,
143+ [ `${ datePrefixCls } -range-hover-start` ] : isSameDate (
144+ generateConfig ,
145+ hoverRangedValue && hoverRangedValue [ 0 ] ,
146+ currentDate ,
147+ ) ,
148+ [ `${ datePrefixCls } -range-hover-end` ] : isSameDate (
149+ generateConfig ,
150+ hoverRangedValue && hoverRangedValue [ 1 ] ,
151+ currentDate ,
152+ ) ,
126153 [ `${ datePrefixCls } -today` ] : isSameDate (
127154 generateConfig ,
128155 today ,
0 commit comments