Skip to content

Commit d90b1e0

Browse files
Yuiai01dujiaqi
andauthored
improvement: dateTime mode apply the current time (#671)
* improvement: dateTime mode apply the current time * chore: delete the verification of value * chore: change method and test case --------- Co-authored-by: dujiaqi <[email protected]>
1 parent 0ea23cd commit d90b1e0

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

src/hooks/useTimeSelection.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,12 @@ export default function useTimeSelection<DateType>({
2525
newMinute: number,
2626
newSecond: number,
2727
) => {
28-
let newDate = value || generateConfig.getNow();
28+
const now = generateConfig.getNow();
29+
let newDate = value || now;
2930

30-
const mergedHour = Math.max(0, newHour);
31-
let mergedMinute = Math.max(0, newMinute);
32-
let mergedSecond = Math.max(0, newSecond);
31+
const mergedHour = newHour < 0 ? generateConfig.getHour(now) : newHour;
32+
let mergedMinute = newMinute < 0 ? generateConfig.getMinute(now) : newMinute;
33+
let mergedSecond = newSecond < 0 ? generateConfig.getSecond(now) : newSecond;
3334

3435
const newDisabledMinutes = disabledMinutes && disabledMinutes(mergedHour);
3536
if (newDisabledMinutes?.includes(mergedMinute)) {

tests/disabledTime.spec.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ describe('Picker.DisabledTime', () => {
9292
});
9393

9494
it('dynamic disabledTime should be correct', () => {
95+
jest.useFakeTimers().setSystemTime(getMoment('2023-09-05 22:02:00').valueOf());
9596
render(
9697
<MomentPicker
9798
open
@@ -106,6 +107,7 @@ describe('Picker.DisabledTime', () => {
106107
}
107108
},
108109
disabledSeconds: (_, selectMinute) => {
110+
console.log(selectMinute)
109111
if (selectMinute === 2) {
110112
return [0, 1];
111113
} else {
@@ -134,6 +136,7 @@ describe('Picker.DisabledTime', () => {
134136
expect(document.querySelector('.rc-picker-input input').getAttribute('value')).toEqual(
135137
'02:02:02',
136138
);
139+
jest.useRealTimers();
137140
});
138141

139142
describe('warning for legacy props', () => {

tests/picker.spec.tsx

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ describe('Picker.Basic', () => {
5252
});
5353
}
5454

55+
function selectColumn(colIndex: number, rowIndex: number) {
56+
fireEvent.click(document.querySelectorAll('ul')[colIndex].querySelectorAll('li')[rowIndex]);
57+
}
58+
5559
describe('mode', () => {
5660
const modeList: { mode: PanelMode; className: string }[] = [
5761
{
@@ -474,10 +478,6 @@ describe('Picker.Basic', () => {
474478
const { container } = render(<MomentPicker picker="time" onChange={onChange} onOk={onOk} />);
475479
openPicker(container);
476480

477-
function selectColumn(colIndex: number, rowIndex: number) {
478-
fireEvent.click(document.querySelectorAll('ul')[colIndex].querySelectorAll('li')[rowIndex]);
479-
}
480-
481481
selectColumn(0, 13);
482482
selectColumn(1, 22);
483483
selectColumn(2, 33);
@@ -1107,4 +1107,16 @@ describe('Picker.Basic', () => {
11071107
// Reset locale
11081108
moment.locale('en');
11091109
});
1110+
1111+
it('select minutes and seconds directly in dateTime mode will apply the current time', () => {
1112+
jest.setSystemTime(getMoment('2023-09-04 21:49:10').valueOf());
1113+
const ui = <MomentPicker showTime />;
1114+
const { container } = render(ui);
1115+
1116+
openPicker(container);
1117+
// Select minute
1118+
selectColumn(1, 5);
1119+
1120+
expect(container.querySelector('input')).toHaveValue('2023-09-04 21:05:10');
1121+
});
11101122
});

0 commit comments

Comments
 (0)