@@ -30,21 +30,35 @@ export default function useCellClassName<DateType>({
30
30
function getClassName ( currentDate : DateType ) {
31
31
const prevDate = offsetCell ( currentDate , - 1 ) ;
32
32
const nextDate = offsetCell ( currentDate , 1 ) ;
33
+
34
+ const rangeStart = getValue ( rangedValue , 0 ) ;
35
+ const rangeEnd = getValue ( rangedValue , 1 ) ;
36
+
37
+ const hoverStart = getValue ( hoverRangedValue , 0 ) ;
38
+ const hoverEnd = getValue ( hoverRangedValue , 1 ) ;
39
+
33
40
const isRangeHovered = isInRange (
34
41
generateConfig ,
35
- getValue ( hoverRangedValue , 0 ) ,
36
- getValue ( hoverRangedValue , 1 ) ,
42
+ hoverStart ,
43
+ hoverEnd ,
37
44
currentDate ,
38
45
) ;
39
46
40
47
function isRangeStart ( date : DateType ) {
41
- return isSameCell ( getValue ( rangedValue , 0 ) , date ) ;
48
+ return isSameCell ( rangeStart , date ) ;
42
49
}
43
50
function isRangeEnd ( date : DateType ) {
44
- return isSameCell ( getValue ( rangedValue , 1 ) , date ) ;
51
+ return isSameCell ( rangeEnd , date ) ;
45
52
}
46
- const isHoverStart = isSameCell ( getValue ( hoverRangedValue , 0 ) , currentDate ) ;
47
- const isHoverEnd = isSameCell ( getValue ( hoverRangedValue , 1 ) , currentDate ) ;
53
+ const isHoverStart = isSameCell ( hoverStart , currentDate ) ;
54
+ const isHoverEnd = isSameCell ( hoverEnd , currentDate ) ;
55
+
56
+ const isHoverEdgeStart =
57
+ ( isRangeHovered || isHoverEnd ) &&
58
+ ( ! isInView ( prevDate ) || isRangeEnd ( prevDate ) ) ;
59
+ const isHoverEdgeEnd =
60
+ ( isRangeHovered || isHoverStart ) &&
61
+ ( ! isInView ( nextDate ) || isRangeStart ( nextDate ) ) ;
48
62
49
63
return {
50
64
// In view
@@ -53,25 +67,37 @@ export default function useCellClassName<DateType>({
53
67
// Range
54
68
[ `${ cellPrefixCls } -in-range` ] : isInRange < DateType > (
55
69
generateConfig ,
56
- getValue ( rangedValue , 0 ) ,
57
- getValue ( rangedValue , 1 ) ,
70
+ rangeStart ,
71
+ rangeEnd ,
58
72
currentDate ,
59
73
) ,
60
74
[ `${ cellPrefixCls } -range-start` ] : isRangeStart ( currentDate ) ,
61
75
[ `${ cellPrefixCls } -range-end` ] : isRangeEnd ( currentDate ) ,
76
+ [ `${ cellPrefixCls } -range-start-single` ] :
77
+ isRangeStart ( currentDate ) && ! rangeEnd ,
78
+ [ `${ cellPrefixCls } -range-end-single` ] :
79
+ isRangeEnd ( currentDate ) && ! rangeStart ,
80
+ [ `${ cellPrefixCls } -range-start-near-hover` ] :
81
+ isRangeStart ( currentDate ) &&
82
+ ( isSameCell ( prevDate , hoverStart ) ||
83
+ isInRange ( generateConfig , hoverStart , hoverEnd , prevDate ) ) ,
84
+ [ `${ cellPrefixCls } -range-end-near-hover` ] :
85
+ isRangeEnd ( currentDate ) &&
86
+ ( isSameCell ( nextDate , hoverEnd ) ||
87
+ isInRange ( generateConfig , hoverStart , hoverEnd , nextDate ) ) ,
62
88
63
89
// Range Hover
64
90
[ `${ cellPrefixCls } -range-hover` ] : isRangeHovered ,
65
91
[ `${ cellPrefixCls } -range-hover-start` ] : isHoverStart ,
66
92
[ `${ cellPrefixCls } -range-hover-end` ] : isHoverEnd ,
67
93
68
94
// Range Edge
69
- [ `${ cellPrefixCls } -range-hover-edge-start` ] :
70
- ( isRangeHovered || isHoverEnd ) &&
71
- ( ! isInView ( prevDate ) || isRangeEnd ( prevDate ) ) ,
72
- [ ` ${ cellPrefixCls } -range-hover-edge-end` ] :
73
- ( isRangeHovered || isHoverStart ) &&
74
- ( ! isInView ( nextDate ) || isRangeStart ( nextDate ) ) ,
95
+ [ `${ cellPrefixCls } -range-hover-edge-start` ] : isHoverEdgeStart ,
96
+ [ ` ${ cellPrefixCls } -range-hover-edge-end` ] : isHoverEdgeEnd ,
97
+ [ ` ${ cellPrefixCls } -range-hover-edge-start-near-range` ] :
98
+ isHoverEdgeStart && isSameCell ( prevDate , rangeEnd ) ,
99
+ [ ` ${ cellPrefixCls } -range-hover-edge-end-near-range` ] :
100
+ isHoverEdgeEnd && isSameCell ( nextDate , rangeStart ) ,
75
101
76
102
// Others
77
103
[ `${ cellPrefixCls } -today` ] : isSameCell ( today , currentDate ) ,
0 commit comments