You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.4 KiB
59 lines
1.4 KiB
import React, { useState } from 'react';
|
|
import { DatePicker, Space } from 'antd';
|
|
import type { Dayjs } from 'dayjs';
|
|
|
|
const App: React.FC = () => {
|
|
const [startValue, setStartValue] = useState<Dayjs | null>(null);
|
|
const [endValue, setEndValue] = useState<Dayjs | null>(null);
|
|
const [endOpen, setEndOpen] = useState(false);
|
|
|
|
const disabledStartDate = (startDate: Dayjs) => {
|
|
if (!startDate || !endValue) {
|
|
return false;
|
|
}
|
|
return startDate.valueOf() > endValue.valueOf();
|
|
};
|
|
|
|
const disabledEndDate = (endDate: Dayjs) => {
|
|
if (!endDate || !startValue) {
|
|
return false;
|
|
}
|
|
return endDate.valueOf() <= startValue.valueOf();
|
|
};
|
|
|
|
const handleStartOpenChange = (open: boolean) => {
|
|
if (!open) {
|
|
setEndOpen(true);
|
|
}
|
|
};
|
|
|
|
const handleEndOpenChange = (open: boolean) => {
|
|
setEndOpen(open);
|
|
};
|
|
|
|
return (
|
|
<Space>
|
|
<DatePicker
|
|
disabledDate={disabledStartDate}
|
|
showTime
|
|
format="YYYY-MM-DD HH:mm:ss"
|
|
value={startValue}
|
|
placeholder="Start"
|
|
onChange={setStartValue}
|
|
onOpenChange={handleStartOpenChange}
|
|
/>
|
|
<DatePicker
|
|
disabledDate={disabledEndDate}
|
|
showTime
|
|
format="YYYY-MM-DD HH:mm:ss"
|
|
value={endValue}
|
|
placeholder="End"
|
|
onChange={setEndValue}
|
|
open={endOpen}
|
|
onOpenChange={handleEndOpenChange}
|
|
/>
|
|
</Space>
|
|
);
|
|
};
|
|
|
|
export default App;
|
|
|