diff --git a/package.json b/package.json index affde61..75830e6 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "react-dom": "^17.0.2", "react-scripts": "4.0.3", "uniqid": "^5.3.0", - "web-vitals": "^1.0.1" + "web-vitals": "^1.0.1", + "yup": "^0.32.9" }, "scripts": { "start": "react-scripts start", diff --git a/src/App.js b/src/App.js index c070b95..d092293 100644 --- a/src/App.js +++ b/src/App.js @@ -65,7 +65,7 @@ function App() { delete formikData.end; // select the specific record, send the data to Formik, and then open the modal form - setSelectedRecord(tableRecord); + setSelectedRecord(formikData); showModal({ isEditMode: true }); } @@ -122,14 +122,6 @@ function App() { Table List - + ); } diff --git a/src/components/DateTimePicker.js b/src/components/DateTimePicker.js deleted file mode 100644 index f6c1f6c..0000000 --- a/src/components/DateTimePicker.js +++ /dev/null @@ -1,94 +0,0 @@ -import React from "react"; -import { DatePicker, TimePicker } from "antd"; -import moment from "moment"; - -const inline = { display: "inline-block" }; -const pushRight = { marginRight: "0.25rem" }; - -export default function DateTimePicker({ value, onChange, onBlur }) { - const { startDate, endDate, startTime, endTime } = value; - - // user can't select start dates which are later than the end date - function disabledStartDate(current) { - if (endDate == null) { - return false; - } else { - return current > endDate; - } - } - - // user can't select end dates which are earlier than the start date - function disabledEndDate(current) { - if (startDate == null) { - return false; - } else { - return current < startDate; - } - } - - function handleStartDateChange(newDate) { - //when datePicker is selected, set timePicker to current time - onChange({ ...value, startDate: newDate, startTime: moment() }); - } - - function handleEndDateChange(newDate) { - //when datePicker is selected, set timePicker to current time - onChange({ ...value, endDate: newDate, endTime: moment() }); - } - - function handleStartTimeChange(newTime) { - // when timePicker is cleared, set time value to 00:00:00 - if (newTime == null) { - newTime = moment().set({ hour: 0, minute: 0, second: 0, millisecond: 0 }); - } - onChange({ ...value, startTime: newTime }); - } - - function handleEndTimeChange(newTime) { - // when timePicker is cleared, set time value to 00:00:00 - if (newTime == null) { - newTime = moment().set({ hour: 0, minute: 0, second: 0, millisecond: 0 }); - } - - onChange({ ...value, endTime: newTime }); - } - - function handleOnBlur(isOpen) { - // when a picker's popup is closed, trigger the onBlur - if (!isOpen) { - onBlur(); - } - } - - return ( - <> - - - {` ~ `} - - - - ); -} diff --git a/src/components/MyForm/MyForm.js b/src/components/MyForm/MyForm.js index 1d4bf2b..e65fa01 100644 --- a/src/components/MyForm/MyForm.js +++ b/src/components/MyForm/MyForm.js @@ -10,6 +10,8 @@ import { Modal, Row, Button, + TimePicker, + DatePicker, } from "antd"; import { useFormikContext } from "formik"; import { @@ -20,7 +22,7 @@ import { DEV_INITIAL_VALUE, INITIAL_VALUE, } from "../../data/const"; -import DateTimePicker from "../DateTimePicker"; +import moment from "moment"; export default function MyForm({ isEditMode, visible, onCancel }) { const { @@ -40,6 +42,49 @@ export default function MyForm({ isEditMode, visible, onCancel }) { setTimeout(() => resetForm({ values: INITIAL_VALUE }), 500); } + // user can't select start dates which are later than the end date + function disabledStartDate(current) { + const endDate = values?.dateTime?.endDate; + if (endDate == null) { + return false; + } else { + return current > endDate; + } + } + + // user can't select end dates which are earlier than the start date + function disabledEndDate(current) { + const startDate = values?.dateTime?.startDate; + if (startDate == null) { + return false; + } else { + return current < startDate; + } + } + + function handleStartDateChange(newDate) { + //when datePicker is selected, also set timePicker to current time + setValues({ + dateTime: { ...values.dateTime, startDate: newDate, startTime: moment() }, + }); + } + + function handleEndDateChange(newDate) { + //when datePicker is selected, also set timePicker to current time + setValues({ + dateTime: { ...values.dateTime, endDate: newDate, endTime: moment() }, + }); + } + + function handleTimeChange(newTime, field) { + // when timePicker is cleared, set time value to 00:00:00 + if (newTime == null) { + newTime = moment().set({ hour: 0, minute: 0, second: 0, millisecond: 0 }); + } + + setFieldValue(field, newTime); + } + return ( @@ -62,7 +107,9 @@ export default function MyForm({ isEditMode, visible, onCancel }) { {isEditMode ? null : ( - + )}