@@ -17,6 +17,7 @@ import DatetimePanel from './panels/DatetimePanel';
1717import DatePanel from './panels/DatePanel' ;
1818import WeekPanel from './panels/WeekPanel' ;
1919import MonthPanel from './panels/MonthPanel' ;
20+ import QuarterPanel from './panels/QuarterPanel' ;
2021import YearPanel from './panels/YearPanel' ;
2122import DecadePanel from './panels/DecadePanel' ;
2223import { GenerateConfig } from './generate' ;
@@ -84,13 +85,11 @@ export interface PickerPanelSharedProps<DateType> {
8485 components ?: Components ;
8586}
8687
87- export interface PickerPanelBaseProps < DateType >
88- extends PickerPanelSharedProps < DateType > {
88+ export interface PickerPanelBaseProps < DateType > extends PickerPanelSharedProps < DateType > {
8989 picker : Exclude < PickerMode , 'date' | 'time' > ;
9090}
9191
92- export interface PickerPanelDateProps < DateType >
93- extends PickerPanelSharedProps < DateType > {
92+ export interface PickerPanelDateProps < DateType > extends PickerPanelSharedProps < DateType > {
9493 picker ?: 'date' ;
9594 showToday ?: boolean ;
9695
@@ -149,18 +148,11 @@ function PickerPanel<DateType>(props: PickerPanelProps<DateType>) {
149148 direction,
150149 } = props as MergedPickerPanelProps < DateType > ;
151150
152- const needConfirmButton : boolean =
153- ( picker === 'date' && ! ! showTime ) || picker === 'time' ;
151+ const needConfirmButton : boolean = ( picker === 'date' && ! ! showTime ) || picker === 'time' ;
154152
155153 if ( process . env . NODE_ENV !== 'production' ) {
156- warning (
157- ! value || generateConfig . isValidate ( value ) ,
158- 'Invalidate date pass to `value`.' ,
159- ) ;
160- warning (
161- ! value || generateConfig . isValidate ( value ) ,
162- 'Invalidate date pass to `defaultValue`.' ,
163- ) ;
154+ warning ( ! value || generateConfig . isValidate ( value ) , 'Invalidate date pass to `value`.' ) ;
155+ warning ( ! value || generateConfig . isValidate ( value ) , 'Invalidate date pass to `defaultValue`.' ) ;
164156 }
165157
166158 // ============================ State =============================
@@ -174,12 +166,7 @@ function PickerPanel<DateType>(props: PickerPanelProps<DateType>) {
174166 defaultOpenValue,
175167 } = panelContext ;
176168
177- const {
178- inRange,
179- panelPosition,
180- rangedValue,
181- hoverRangedValue,
182- } = React . useContext ( RangeContext ) ;
169+ const { inRange, panelPosition, rangedValue, hoverRangedValue } = React . useContext ( RangeContext ) ;
183170 const panelRef = React . useRef < PanelRefProps > ( { } ) ;
184171
185172 // Handle init logic
@@ -198,10 +185,7 @@ function PickerPanel<DateType>(props: PickerPanelProps<DateType>) {
198185 } ) ;
199186
200187 // View date control
201- const [ viewDate , setInnerViewDate ] = useMergedState <
202- DateType | null ,
203- DateType
204- > ( null , {
188+ const [ viewDate , setInnerViewDate ] = useMergedState < DateType | null , DateType > ( null , {
205189 value : pickerValue ,
206190 defaultValue : defaultPickerValue || mergedValue ,
207191 postState : date => date || generateConfig . getNow ( ) ,
@@ -237,22 +221,14 @@ function PickerPanel<DateType>(props: PickerPanelProps<DateType>) {
237221 } ,
238222 ) ;
239223
240- const [ sourceMode , setSourceMode ] = React . useState < PanelMode > (
241- ( ) => mergedMode ,
242- ) ;
224+ const [ sourceMode , setSourceMode ] = React . useState < PanelMode > ( ( ) => mergedMode ) ;
243225
244- const onInternalPanelChange = (
245- newMode : PanelMode | null ,
246- viewValue : DateType ,
247- ) => {
226+ const onInternalPanelChange = ( newMode : PanelMode | null , viewValue : DateType ) => {
248227 const nextMode = getInternalNextMode ( newMode || mergedMode ) ;
249228 setSourceMode ( mergedMode ) ;
250229 setInnerMode ( nextMode ) ;
251230
252- if (
253- onPanelChange &&
254- ( mergedMode !== nextMode || isEqual ( generateConfig , viewDate , viewDate ) )
255- ) {
231+ if ( onPanelChange && ( mergedMode !== nextMode || isEqual ( generateConfig , viewDate , viewDate ) ) ) {
256232 onPanelChange ( viewValue , nextMode ) ;
257233 }
258234 } ;
@@ -392,6 +368,18 @@ function PickerPanel<DateType>(props: PickerPanelProps<DateType>) {
392368 ) ;
393369 break ;
394370
371+ case 'quarter' :
372+ panelNode = (
373+ < QuarterPanel < DateType >
374+ { ...pickerProps }
375+ onSelect = { ( date , type ) => {
376+ setViewDate ( date ) ;
377+ triggerSelect ( date , type ) ;
378+ } }
379+ />
380+ ) ;
381+ break ;
382+
395383 case 'week' :
396384 panelNode = (
397385 < WeekPanel
@@ -489,17 +477,15 @@ function PickerPanel<DateType>(props: PickerPanelProps<DateType>) {
489477 < PanelContext . Provider
490478 value = { {
491479 ...panelContext ,
492- hideHeader :
493- 'hideHeader' in props ? hideHeader : panelContext . hideHeader ,
480+ hideHeader : 'hideHeader' in props ? hideHeader : panelContext . hideHeader ,
494481 hidePrevBtn : inRange && panelPosition === 'right' ,
495482 hideNextBtn : inRange && panelPosition === 'left' ,
496483 } }
497484 >
498485 < div
499486 tabIndex = { tabIndex }
500487 className = { classNames ( `${ prefixCls } -panel` , className , {
501- [ `${ prefixCls } -panel-has-range` ] :
502- rangedValue && rangedValue [ 0 ] && rangedValue [ 1 ] ,
488+ [ `${ prefixCls } -panel-has-range` ] : rangedValue && rangedValue [ 0 ] && rangedValue [ 1 ] ,
503489 [ `${ prefixCls } -panel-has-range-hover` ] :
504490 hoverRangedValue && hoverRangedValue [ 0 ] && hoverRangedValue [ 1 ] ,
505491 [ `${ prefixCls } -panel-rtl` ] : direction === 'rtl' ,
0 commit comments