@@ -19,6 +19,7 @@ import PickerContext from '../PickerInput/context';
1919import useCellRender from '../PickerInput/hooks/useCellRender' ;
2020import { isSame } from '../utils/dateUtil' ;
2121import { pickProps , toArray } from '../utils/miscUtil' ;
22+ import { PickerHackContext } from './context' ;
2223import DatePanel from './DatePanel' ;
2324import DateTimePanel from './DateTimePanel' ;
2425import DecadePanel from './DecadePanel' ;
@@ -110,6 +111,9 @@ export interface BasePickerPanelProps<DateType extends object = any>
110111
111112 // Components
112113 components ?: Components ;
114+
115+ /** @private This is internal usage. Do not use in your production env */
116+ hideHeader ?: boolean ;
113117}
114118
115119export interface SinglePickerPanelProps < DateType extends object = any >
@@ -172,6 +176,8 @@ function PickerPanel<DateType extends object = any>(
172176
173177 // Components
174178 components = { } ,
179+
180+ hideHeader,
175181 } = props ;
176182
177183 const mergedPrefixCls = React . useContext ( PickerContext ) ?. prefixCls || prefixCls || 'rc-picker' ;
@@ -345,6 +351,13 @@ function PickerPanel<DateType extends object = any>(
345351 DefaultComponents [ internalMode ] ||
346352 DatePanel ) as typeof DatePanel ;
347353
354+ // ======================== Context =========================
355+ const parentHackContext = React . useContext ( PickerHackContext ) ;
356+ const pickerPanelContext = React . useMemo (
357+ ( ) => ( { ...parentHackContext , hideHeader } ) ,
358+ [ parentHackContext , hideHeader ] ,
359+ ) ;
360+
348361 // ======================== Warnings ========================
349362 if ( process . env . NODE_ENV !== 'production' ) {
350363 warning (
@@ -374,38 +387,40 @@ function PickerPanel<DateType extends object = any>(
374387 ] ) ;
375388
376389 return (
377- < div
378- ref = { rootRef }
379- tabIndex = { tabIndex }
380- className = { classNames ( panelCls , {
381- [ `${ panelCls } -rtl` ] : direction === 'rtl' ,
382- } ) }
383- >
384- < PanelComponent
385- { ...panelProps }
386- // Time
387- showTime = { mergedShowTime }
388- // MISC
389- prefixCls = { mergedPrefixCls }
390- locale = { filledLocale }
391- generateConfig = { generateConfig }
392- // Mode
393- onModeChange = { triggerModeChange }
394- // Value
395- pickerValue = { mergedPickerValue }
396- onPickerValueChange = { ( nextPickerValue ) => {
397- setPickerValue ( nextPickerValue , true ) ;
398- } }
399- value = { mergedValue [ 0 ] }
400- onSelect = { onPanelValueSelect }
401- values = { mergedValue }
402- // Render
403- cellRender = { onInternalCellRender }
404- // Hover
405- hoverRangeValue = { hoverRangeDate }
406- hoverValue = { hoverValue }
407- />
408- </ div >
390+ < PickerHackContext . Provider value = { pickerPanelContext } >
391+ < div
392+ ref = { rootRef }
393+ tabIndex = { tabIndex }
394+ className = { classNames ( panelCls , {
395+ [ `${ panelCls } -rtl` ] : direction === 'rtl' ,
396+ } ) }
397+ >
398+ < PanelComponent
399+ { ...panelProps }
400+ // Time
401+ showTime = { mergedShowTime }
402+ // MISC
403+ prefixCls = { mergedPrefixCls }
404+ locale = { filledLocale }
405+ generateConfig = { generateConfig }
406+ // Mode
407+ onModeChange = { triggerModeChange }
408+ // Value
409+ pickerValue = { mergedPickerValue }
410+ onPickerValueChange = { ( nextPickerValue ) => {
411+ setPickerValue ( nextPickerValue , true ) ;
412+ } }
413+ value = { mergedValue [ 0 ] }
414+ onSelect = { onPanelValueSelect }
415+ values = { mergedValue }
416+ // Render
417+ cellRender = { onInternalCellRender }
418+ // Hover
419+ hoverRangeValue = { hoverRangeDate }
420+ hoverValue = { hoverValue }
421+ />
422+ </ div >
423+ </ PickerHackContext . Provider >
409424 ) ;
410425}
411426
0 commit comments