Skip to content

Commit 061128a

Browse files
committed
feat: Datetime should show now button
1 parent 33e3211 commit 061128a

File tree

3 files changed

+35
-7
lines changed

3 files changed

+35
-7
lines changed

src/PickerPanel.tsx

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import PanelContext from './PanelContext';
2424
import { DateRender } from './panels/DatePanel/DateBody';
2525
import { PickerModeMap } from './utils/uiUtil';
2626
import { MonthCellRender } from './panels/MonthPanel/MonthBody';
27-
import RangeContext from './RangeContext';
27+
import RangeContext, { FooterSelection } from './RangeContext';
2828

2929
export interface PickerPanelSharedProps<DateType> {
3030
prefixCls?: string;
@@ -372,10 +372,25 @@ function PickerPanel<DateType>(props: PickerPanelProps<DateType>) {
372372
}
373373

374374
let extraSelectionNode: React.ReactNode;
375-
if (extraFooterSelections && extraFooterSelections.length) {
375+
if ((extraFooterSelections && extraFooterSelections.length) || showTime) {
376+
let mergedSelections: FooterSelection[] = [];
377+
378+
if (showTime) {
379+
mergedSelections.push({
380+
label: locale.now,
381+
onClick: () => {
382+
triggerSelect(generateConfig.getNow());
383+
},
384+
});
385+
}
386+
387+
if (extraFooterSelections) {
388+
mergedSelections = [...mergedSelections, ...extraFooterSelections];
389+
}
390+
376391
extraSelectionNode = (
377392
<ul className={`${prefixCls}-ranges`}>
378-
{extraFooterSelections.map(({ label, onClick }) => (
393+
{mergedSelections.map(({ label, onClick }) => (
379394
<li key={label} onClick={onClick}>
380395
{label}
381396
</li>

src/RangeContext.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import * as React from 'react';
22
import { NullableDateType } from './interface';
33

4+
export interface FooterSelection {
5+
label: string;
6+
onClick: React.MouseEventHandler<HTMLElement>;
7+
}
8+
49
interface RangeContextProps {
5-
extraFooterSelections?: {
6-
label: string;
7-
onClick: React.MouseEventHandler<HTMLElement>;
8-
}[];
10+
extraFooterSelections?: FooterSelection[];
911
/**
1012
* Set displayed range value style.
1113
* Panel only has one value, this is only style effect.

tests/picker.spec.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -485,4 +485,15 @@ describe('Basic', () => {
485485

486486
expect(wrapper.find('.rc-picker-input').render()).toMatchSnapshot();
487487
});
488+
489+
it('datetime should display now', () => {
490+
const onSelect = jest.fn();
491+
const wrapper = mount(<MomentPicker onSelect={onSelect} showTime />);
492+
wrapper.openPicker();
493+
wrapper.find('.rc-picker-ranges > li').simulate('click');
494+
495+
expect(
496+
isSame(onSelect.mock.calls[0][0], '1990-09-03 00:00:00', 'second'),
497+
).toBeTruthy();
498+
});
488499
});

0 commit comments

Comments
 (0)