Skip to content

Commit dbe363c

Browse files
committed
fix: Move renderExtraFooter out for rangepicker
1 parent 575ef77 commit dbe363c

File tree

4 files changed

+30
-9
lines changed

4 files changed

+30
-9
lines changed

examples/range.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ export default () => {
142142
placeholder={['start...', 'end...']}
143143
disabled={[false, true]}
144144
allowEmpty={[false, true]}
145+
renderExtraFooter={() => <div>extra footer</div>}
145146
/>
146147
</div>
147148
</div>

src/PickerPanel.tsx

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import { PickerModeMap } from './utils/uiUtil';
3434
import { MonthCellRender } from './panels/MonthPanel/MonthBody';
3535
import RangeContext from './RangeContext';
3636
import useMergedState from './hooks/useMergeState';
37+
import getExtraFooter from './utils/getExtraFooter';
3738

3839
export interface PickerPanelSharedProps<DateType> {
3940
prefixCls?: string;
@@ -407,14 +408,9 @@ function PickerPanel<DateType>(props: PickerPanelProps<DateType>) {
407408
}
408409

409410
// ============================ Footer ============================
410-
let extraFooter: React.ReactNode;
411-
if (renderExtraFooter) {
412-
extraFooter = (
413-
<div className={`${prefixCls}-footer-extra`}>
414-
{renderExtraFooter(mergedMode)}
415-
</div>
416-
);
417-
}
411+
const extraFooter: React.ReactNode = inRange
412+
? null
413+
: getExtraFooter(prefixCls, mergedMode, renderExtraFooter);
418414

419415
let nowNode: React.ReactNode;
420416
let todayNode: React.ReactNode;

src/RangePicker.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import { GenerateConfig } from './generate';
3939
import { PickerPanelProps } from '.';
4040
import RangeContext from './RangeContext';
4141
import useRangeDisabled from './hooks/useRangeDisabled';
42+
import getExtraFooter from './utils/getExtraFooter';
4243

4344
function reorderValues<DateType>(
4445
values: RangeValue<DateType>,
@@ -201,6 +202,7 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
201202
pickerRef,
202203
inputReadOnly,
203204
mode,
205+
renderExtraFooter,
204206
onChange,
205207
onOpenChange,
206208
onPanelChange,
@@ -771,6 +773,11 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
771773

772774
function renderPanels() {
773775
let panels: React.ReactNode;
776+
const extraNode = getExtraFooter(
777+
prefixCls,
778+
mergedModes[activePickerIndex],
779+
renderExtraFooter,
780+
);
774781

775782
if (picker !== 'time' && !showTime) {
776783
const viewDate = viewDates[activePickerIndex];
@@ -861,7 +868,7 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
861868
}}
862869
>
863870
<div className={`${prefixCls}-panels`}>{panels}</div>
864-
871+
{extraNode}
865872
{rangesNode}
866873
</div>
867874
);
@@ -931,6 +938,7 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
931938
}
932939
}
933940

941+
// ============================ Return =============================
934942
return (
935943
<PanelContext.Provider
936944
value={{

src/utils/getExtraFooter.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import * as React from 'react';
2+
import { PanelMode } from '../interface';
3+
4+
export default function getExtraFooter(
5+
prefixCls: string,
6+
mode: PanelMode,
7+
renderExtraFooter?: (mode: PanelMode) => React.ReactNode,
8+
) {
9+
if (!renderExtraFooter) {
10+
return null;
11+
}
12+
13+
return (
14+
<div className={`${prefixCls}-footer-extra`}>{renderExtraFooter(mode)}</div>
15+
);
16+
}

0 commit comments

Comments
 (0)