|
|
|
@ -2,7 +2,8 @@ import dayjs from "dayjs";
|
|
|
|
|
import toast from "react-hot-toast";
|
|
|
|
|
import { cn } from "@/lib/utils";
|
|
|
|
|
|
|
|
|
|
const DATE_TIME_FORMAT = "M/D/YYYY, H:mm:ss";
|
|
|
|
|
// ISO 8601 (almost)
|
|
|
|
|
const DATE_TIME_FORMAT = "YYYY-MM-DD HH:mm:ss";
|
|
|
|
|
|
|
|
|
|
// convert Date to datetime string.
|
|
|
|
|
const formatDate = (date: Date): string => {
|
|
|
|
@ -23,12 +24,25 @@ const DateTimeInput: React.FC<Props> = ({ value, onChange }) => {
|
|
|
|
|
onBlur={(e) => {
|
|
|
|
|
const inputValue = e.target.value;
|
|
|
|
|
if (inputValue) {
|
|
|
|
|
const date = dayjs(inputValue, DATE_TIME_FORMAT, true).toDate();
|
|
|
|
|
const date = dayjs(inputValue).toDate();
|
|
|
|
|
// Check if the date is valid.
|
|
|
|
|
if (!isNaN(date.getTime())) {
|
|
|
|
|
onChange(date);
|
|
|
|
|
} else {
|
|
|
|
|
toast.error("Invalid datetime format. Use format: 12/31/2023, 23:59:59");
|
|
|
|
|
toast.error(
|
|
|
|
|
<span>
|
|
|
|
|
Invalid datetime.<br/>
|
|
|
|
|
Use a{" "}
|
|
|
|
|
<a
|
|
|
|
|
class="underline text-primary hover:text-primary/80"
|
|
|
|
|
href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Date#datestring" target="_blank">
|
|
|
|
|
Date.parse()
|
|
|
|
|
</a>
|
|
|
|
|
-compatible format,<br/>
|
|
|
|
|
e.g., <code>2023-12-31 23:59:59</code><br/>
|
|
|
|
|
or <code>31/12/2023, 23:59:59</code>.
|
|
|
|
|
</span>
|
|
|
|
|
);
|
|
|
|
|
e.target.value = formatDate(value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|