@@ -4,6 +4,9 @@ import { GenerateConfig } from '../../generate';
44import { YEAR_DECADE_COUNT } from '.' ;
55import { Locale , NullableDateType } from '../../interface' ;
66import PanelContext from '../../PanelContext' ;
7+ import useCellClassName from '../../hooks/useCellClassName' ;
8+ import { isSameYear } from '../../utils/dateUtil' ;
9+ import RangeContext from '../../RangeContext' ;
710
811export const YEAR_COL_COUNT = 3 ;
912const YEAR_ROW_COUNT = 4 ;
@@ -27,12 +30,23 @@ function YearBody<DateType>({
2730 disabledDate,
2831 onSelect,
2932} : YearBodyProps < DateType > ) {
33+ const { rangedValue, hoverRangedValue } = React . useContext ( RangeContext ) ;
3034 const { onDateMouseEnter, onDateMouseLeave } = React . useContext ( PanelContext ) ;
3135
3236 const yearPrefixCls = `${ prefixCls } -cell` ;
37+
38+ // =============================== Year ===============================
3339 const rows : React . ReactNode [ ] = [ ] ;
40+ const getCellClassName = useCellClassName < DateType > ( {
41+ cellPrefixCls : yearPrefixCls ,
42+ value,
43+ generateConfig,
44+ rangedValue,
45+ hoverRangedValue,
46+ isSameCell : ( current , target ) =>
47+ isSameYear ( generateConfig , current , target ) ,
48+ } ) ;
3449
35- const valueYearNumber = value ? generateConfig . getYear ( value ) : null ;
3650 const yearNumber = generateConfig . getYear ( viewDate ) ;
3751 const startYear =
3852 Math . floor ( yearNumber / YEAR_DECADE_COUNT ) * YEAR_DECADE_COUNT ;
@@ -60,8 +74,7 @@ function YearBody<DateType>({
6074 [ `${ yearPrefixCls } -disabled` ] : disabled ,
6175 [ `${ yearPrefixCls } -in-view` ] :
6276 startYear <= currentYearNumber && currentYearNumber <= endYear ,
63- [ `${ yearPrefixCls } -selected` ] :
64- currentYearNumber === valueYearNumber ,
77+ ...getCellClassName ( yearDate ) ,
6578 } ) }
6679 onClick = { ( ) => {
6780 if ( ! disabled ) {
0 commit comments