11import * as React from 'react' ;
2- import type { SharedPanelProps } from '../../interface' ;
2+ import type { DisabledDate , SharedPanelProps } from '../../interface' ;
33import { formatValue , isSameDecade } from '../../utils/dateUtil' ;
44import { PanelContext , useInfo } from '../context' ;
55import PanelBody from '../PanelBody' ;
@@ -8,7 +8,8 @@ import PanelHeader from '../PanelHeader';
88export default function DecadePanel < DateType extends object = any > (
99 props : SharedPanelProps < DateType > ,
1010) {
11- const { prefixCls, locale, generateConfig, pickerValue, onPickerValueChange } = props ;
11+ const { prefixCls, locale, generateConfig, pickerValue, disabledDate, onPickerValueChange } =
12+ props ;
1213
1314 const panelPrefixCls = `${ prefixCls } -decade-panel` ;
1415
@@ -52,6 +53,25 @@ export default function DecadePanel<DateType extends object = any>(
5253 } ;
5354 } ;
5455
56+ // ======================== Disabled ========================
57+ const mergedDisabledDate : DisabledDate < DateType > = disabledDate
58+ ? ( currentDate , disabledInfo ) => {
59+ // Start
60+ const baseStartDate = generateConfig . setDate ( currentDate , 1 ) ;
61+ const baseStartMonth = generateConfig . setMonth ( baseStartDate , 0 ) ;
62+ const baseStartYear = generateConfig . setYear (
63+ baseStartMonth ,
64+ Math . floor ( generateConfig . getYear ( baseStartMonth ) / 10 ) * 10 ,
65+ ) ;
66+
67+ // End
68+ const baseEndYear = generateConfig . addYear ( baseStartYear , 10 ) ;
69+ const baseEndDate = generateConfig . addDate ( baseEndYear , - 1 ) ;
70+
71+ return disabledDate ( baseStartYear , disabledInfo ) && disabledDate ( baseEndDate , disabledInfo ) ;
72+ }
73+ : null ;
74+
5575 // ========================= Header =========================
5676 const yearNode = `${ formatValue ( startYearDate , {
5777 locale,
@@ -79,6 +99,7 @@ export default function DecadePanel<DateType extends object = any>(
7999 { /* Body */ }
80100 < PanelBody
81101 { ...props }
102+ disabledDate = { mergedDisabledDate }
82103 colNum = { 3 }
83104 rowNum = { 4 }
84105 baseDate = { baseDate }
0 commit comments