11import * as React from 'react' ;
22import type { DisabledDate , SharedPanelProps } from '../../interface' ;
3- import { formatValue } from '../../utils/dateUtil' ;
3+ import { formatValue , isInRange , isSameDecade } from '../../utils/dateUtil' ;
44import { PanelContext , useInfo } from '../context' ;
55import PanelBody from '../PanelBody' ;
66import PanelHeader from '../PanelHeader' ;
@@ -15,13 +15,20 @@ export default function DecadePanel<DateType extends object = any>(
1515
1616 // ========================== Base ==========================
1717 const [ info ] = useInfo ( props , 'decade' ) ;
18- const startYear = Math . floor ( generateConfig . getYear ( pickerValue ) / 100 ) * 100 ;
19- const endYear = startYear + 99 ;
2018
21- const baseDate = generateConfig . setYear ( pickerValue , startYear - 10 ) ;
19+ const getStartYear = ( date : DateType ) => {
20+ const startYear = Math . floor ( generateConfig . getYear ( pickerValue ) / 100 ) * 100 ;
21+ return generateConfig . setYear ( date , startYear ) ;
22+ } ;
23+ const getEndYear = ( date : DateType ) => {
24+ const startYear = getStartYear ( date ) ;
25+ return generateConfig . addYear ( startYear , 99 ) ;
26+ } ;
27+
28+ const startYearDate = getStartYear ( pickerValue ) ;
29+ const endYearDate = getEndYear ( pickerValue ) ;
2230
23- const startYearDate = generateConfig . setYear ( baseDate , startYear ) ;
24- const endYearDate = generateConfig . setYear ( startYearDate , endYear ) ;
31+ const baseDate = generateConfig . addYear ( startYearDate , - 10 ) ;
2532
2633 // ========================= Cells ==========================
2734 const getCellDate = ( date : DateType , offset : number ) => {
@@ -46,9 +53,11 @@ export default function DecadePanel<DateType extends object = any>(
4653 } ;
4754
4855 const getCellClassName = ( date : DateType ) => {
49- const dateYear = generateConfig . getYear ( date ) ;
5056 return {
51- [ `${ prefixCls } -cell-in-view` ] : startYear <= dateYear && dateYear <= endYear ,
57+ [ `${ prefixCls } -cell-in-view` ] :
58+ isSameDecade ( generateConfig , date , startYearDate ) ||
59+ isSameDecade ( generateConfig , date , endYearDate ) ||
60+ isInRange ( generateConfig , startYearDate , endYearDate , date ) ,
5261 } ;
5362 } ;
5463
@@ -88,9 +97,11 @@ export default function DecadePanel<DateType extends object = any>(
8897 < div className = { panelPrefixCls } >
8998 { /* Header */ }
9099 < PanelHeader
91- onSuperOffset = { ( offset ) => {
92- onPickerValueChange ( generateConfig . addYear ( pickerValue , offset * 100 ) ) ;
93- } }
100+ superOffset = { ( distance ) => generateConfig . addYear ( pickerValue , distance * 100 ) }
101+ onChange = { onPickerValueChange }
102+ // Limitation
103+ getStart = { getStartYear }
104+ getEnd = { getEndYear }
94105 >
95106 { yearNode }
96107 </ PanelHeader >
0 commit comments