From e4ad931da43400b0a410973dff6d13cebb8ad622 Mon Sep 17 00:00:00 2001 From: Ehsan Date: Wed, 18 Sep 2024 03:24:34 +0330 Subject: [PATCH] handle disable hour time end greater than time start --- app/component/TimePickerField.js | 22 ++++++--- components/icons/EditOrangeAD.js | 11 +++++ .../addDoctor/listMenu/workingDays/List.js | 49 +++++++++++++++---- .../workingDays/modal/ContentModal.js | 12 ++++- .../listMenu/workingDays/modal/Form.js | 6 ++- .../workingDays/modal/ModalAddTime.js | 2 +- .../listMenu/workingDays/modal/Radios.js | 9 ++-- 7 files changed, 89 insertions(+), 22 deletions(-) create mode 100644 components/icons/EditOrangeAD.js diff --git a/app/component/TimePickerField.js b/app/component/TimePickerField.js index 6a094f4..9683e65 100644 --- a/app/component/TimePickerField.js +++ b/app/component/TimePickerField.js @@ -2,7 +2,7 @@ import { useState } from "react"; import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs"; import { LocalizationProvider, TimePicker } from "@mui/x-date-pickers" -function TimePickerField({ dataChange, setData, data }) { +function TimePickerField({ dataChange, disable, setData, timeStart, data }) { const [value, setValue] = useState('00:00'); @@ -11,13 +11,21 @@ function TimePickerField({ dataChange, setData, data }) { { if (clockType === 'hours') { + const { idx, is_morgen } = dataChange; + const value = data[idx][is_morgen ? 'morning_time' : 'evening_time'][0]; + const hourSelected = value ? +value.split(':')[0] : false + + const disableMinHour = timeStart || !value ? false : + (hourSelected + 1 > timeValue.$H) return dataChange.is_morgen ? - !(16 > timeValue.$H && timeValue.$H > 5) : - !(24 > timeValue.$H && timeValue.$H > 11) + !(16 > timeValue.$H && timeValue.$H > 5 && !disableMinHour) : + !(24 > timeValue.$H && timeValue.$H > 11 && !disableMinHour) + } }} views={['hours', 'minutes']} @@ -29,8 +37,8 @@ function TimePickerField({ dataChange, setData, data }) { const newValue = `${handleTwoLength(hours)}:${handleTwoLength(minute)}`; const newData = data; - const { idx, is_morning } = dataChange; - newData[idx][is_morning ? 'morning_time' : 'evening_time'] = newValue + const { idx, is_morgen } = dataChange; + newData[idx][is_morgen ? 'morning_time' : 'evening_time'][timeStart ? 0 : 1] = newValue; setValue(newValue); }} @@ -54,7 +62,9 @@ function TimePickerField({ dataChange, setData, data }) { } }} /> -

{value}

+

{value}

) diff --git a/components/icons/EditOrangeAD.js b/components/icons/EditOrangeAD.js new file mode 100644 index 0000000..0136cf9 --- /dev/null +++ b/components/icons/EditOrangeAD.js @@ -0,0 +1,11 @@ +function EditOrangeAD() { + return ( + + + + + + ) +} + +export default EditOrangeAD \ No newline at end of file diff --git a/components/panel/addDoctor/listMenu/workingDays/List.js b/components/panel/addDoctor/listMenu/workingDays/List.js index dc9bf2c..fc1c249 100644 --- a/components/panel/addDoctor/listMenu/workingDays/List.js +++ b/components/panel/addDoctor/listMenu/workingDays/List.js @@ -1,17 +1,18 @@ import { useState } from "react"; import ModalAddTime from "./modal/ModalAddTime"; -import { Table, TableBody, TableCell, TableContainer, TableHead, TableRow } from "@mui/material" +import { Button, Table, TableBody, TableCell, TableContainer, TableHead, TableRow } from "@mui/material" import ContentModal from "./modal/ContentModal"; +import EditOrangeAD from "@/components/icons/EditOrangeAD"; function List() { const [data, setData] = useState([ - { name: 'شنبه', morning_time: '', evening_time: '' }, - { name: 'یکشنبه', morning_time: '', evening_time: '' }, - { name: 'دوشنبه', morning_time: '', evening_time: '' }, - { name: 'سه شنبه', morning_time: '', evening_time: '' }, - { name: 'چهار شنبه', morning_time: '', evening_time: '' }, - { name: 'پنج شنبه', morning_time: '', evening_time: '' }, + { name: 'شنبه', morning_time: ['', ''], evening_time: ['', ''] }, + { name: 'یکشنبه', morning_time: ['', ''], evening_time: ['', ''] }, + { name: 'دوشنبه', morning_time: ['', ''], evening_time: ['', ''] }, + { name: 'سه شنبه', morning_time: ['', ''], evening_time: ['', ''] }, + { name: 'چهار شنبه', morning_time: ['', ''], evening_time: ['', ''] }, + { name: 'پنج شنبه', morning_time: ['', ''], evening_time: ['', ''] }, ]); const [open, setOpen] = useState(false); @@ -21,6 +22,8 @@ function List() { is_morgen: false, idx: undefined }); + console.log(data); + return (
@@ -55,7 +58,21 @@ function List() { {row.name} - {row.morning_time || ( + {row.morning_time[0] || row.morning_time[1] ? ( + + ) : ( - {row.evening_time || ( + {row.evening_time[0] || row.evening_time[1] ? ( + + ) : ( setValue(+event.target.value); + return (
- +
diff --git a/components/panel/addDoctor/listMenu/workingDays/modal/Form.js b/components/panel/addDoctor/listMenu/workingDays/modal/Form.js index b7537b0..bf236bb 100644 --- a/components/panel/addDoctor/listMenu/workingDays/modal/Form.js +++ b/components/panel/addDoctor/listMenu/workingDays/modal/Form.js @@ -2,20 +2,24 @@ import { Button } from "@mui/material"; import ContentText from "@/components/panel/ContentText"; import TimePickerField from "@/app/component/TimePickerField"; -function Form({ handleClose, setData, dataChange, data }) { +function Form({ handleClose, setData, dataChange, data, value }) { return (
diff --git a/components/panel/addDoctor/listMenu/workingDays/modal/ModalAddTime.js b/components/panel/addDoctor/listMenu/workingDays/modal/ModalAddTime.js index 971f8fe..67f966e 100644 --- a/components/panel/addDoctor/listMenu/workingDays/modal/ModalAddTime.js +++ b/components/panel/addDoctor/listMenu/workingDays/modal/ModalAddTime.js @@ -14,7 +14,7 @@ function ModalAddTime({ handleOpen, isMorgen, idx, setDataChange }) { idx }) }} - className='!gap-[2px] sm:!gap-[4px] md:!gap-[6px] lg:!gap-[8px] !p-1 !text-[#5559CE] !text-[14px] md:!text-[16px] !font-medium' + className='!gap-[2px] !min-w-[146px] sm:!gap-[4px] md:!gap-[6px] lg:!gap-[8px] !p-1 !text-[#5559CE] !text-[14px] md:!text-[16px] !font-medium' > انتخاب کنید diff --git a/components/panel/addDoctor/listMenu/workingDays/modal/Radios.js b/components/panel/addDoctor/listMenu/workingDays/modal/Radios.js index 17613ab..829d038 100644 --- a/components/panel/addDoctor/listMenu/workingDays/modal/Radios.js +++ b/components/panel/addDoctor/listMenu/workingDays/modal/Radios.js @@ -1,19 +1,20 @@ import { FormControlLabel, Radio, RadioGroup } from "@mui/material" -function Radios() { +function Radios({ value, handleChange }) { return ( - } label="روز کاری" /> - } label="تعطیل" /> + } label="روز کاری" /> + } label="تعطیل" /> ) }