@@ -10,6 +10,7 @@ import {
10
10
} from '../../utils/dateUtil' ;
11
11
import { Locale } from '../../interface' ;
12
12
import RangeContext from '../../RangeContext' ;
13
+ import PanelContext from '../../PanelContext' ;
13
14
14
15
export type DateRender < DateType > = (
15
16
currentDate : DateType ,
@@ -48,7 +49,8 @@ function DateBody<DateType>({
48
49
dateRender,
49
50
onSelect,
50
51
} : DateBodyProps < DateType > ) {
51
- const { rangedValue } = React . useContext ( RangeContext ) ;
52
+ const { rangedValue, hoverRangedValue } = React . useContext ( RangeContext ) ;
53
+ const { onDateMouseEnter, onDateMouseLeave } = React . useContext ( PanelContext ) ;
52
54
53
55
const datePrefixCls = `${ prefixCls } -cell` ;
54
56
const weekFirstDay = generateConfig . locale . getWeekFirstDay ( locale . locale ) ;
@@ -95,10 +97,19 @@ function DateBody<DateType>({
95
97
'YYYY-MM-DD' ,
96
98
) }
97
99
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 ) ;
100
112
}
101
- onSelect ( currentDate ) ;
102
113
} }
103
114
className = { classNames ( datePrefixCls , {
104
115
[ `${ datePrefixCls } -disabled` ] : disabled ,
@@ -123,6 +134,22 @@ function DateBody<DateType>({
123
134
rangedValue && rangedValue [ 1 ] ,
124
135
currentDate ,
125
136
) ,
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
+ ) ,
126
153
[ `${ datePrefixCls } -today` ] : isSameDate (
127
154
generateConfig ,
128
155
today ,
0 commit comments