|
1 | 1 | import React, {useEffect, useState} from 'react'; |
2 | 2 | import {Dialog, DialogActions, DialogTitle, DialogContent} from "@mui/material"; |
3 | 3 | import {CuteButton} from "../../CuteButton"; |
4 | | -import { |
5 | | - DatePicker, |
6 | | - LocalizationProvider, |
7 | | - TimePicker, |
8 | | -} from "@mui/x-date-pickers"; |
9 | 4 | import {Dayjs} from 'dayjs'; |
10 | 5 | import dayjs from 'dayjs'; |
11 | | -import {AdapterDayjs} from '@mui/x-date-pickers/AdapterDayjs'; |
12 | | -import {deDE} from "@mui/x-date-pickers/locales"; |
13 | 6 | import {createMeeting, deleteMeeting, updateMeeting} from "../../../api/MeetingApi"; |
14 | 7 | import {CreateMeetingDto, MeetingDto} from "../../../dtos/MeetingDto"; |
15 | 8 | import axiosInstance from "../../../auth/AxiosConfig"; |
16 | 9 | import {ChangeType} from "../../../enum/ChangeType"; |
17 | 10 | import {UserModule} from "../../../dtos/ModuleDto"; |
18 | 11 | import {getUser} from "../../../api/UserApi"; |
| 12 | +import {TimePickerComponent} from "./TimePickerComponent"; |
19 | 13 |
|
20 | 14 | interface MeetingFormProps { |
21 | 15 | open: boolean; |
@@ -58,24 +52,13 @@ export function CreateOrUpdateMeetingForm({open, onClose, meeting, onlyThisMeeti |
58 | 52 | } |
59 | 53 | }; |
60 | 54 |
|
61 | | - const handleDate2Change = (newDate: Dayjs | null) => { |
62 | | - if (newDate) { |
63 | | - setDate2(newDate); |
64 | | - } |
65 | | - }; |
66 | 55 | const handleTime1Change = (newTime: Dayjs | null) => { |
67 | 56 | if (newTime) { |
68 | 57 | setTime1(newTime); |
69 | 58 | setTime2(newTime.add(1, 'hour')); |
70 | 59 | } |
71 | 60 | }; |
72 | 61 |
|
73 | | - const handleTime2Change = (newTime: Dayjs | null) => { |
74 | | - if (newTime) { |
75 | | - setTime2(newTime); |
76 | | - } |
77 | | - }; |
78 | | - |
79 | 62 | const handleRepeatChange = (event: React.ChangeEvent<HTMLSelectElement>) => { |
80 | 63 | setRepeatable(event.target.value); |
81 | 64 | }; |
@@ -193,116 +176,10 @@ export function CreateOrUpdateMeetingForm({open, onClose, meeting, onlyThisMeeti |
193 | 176 |
|
194 | 177 | <label htmlFor="Time Span" |
195 | 178 | className="font-semibold mt-8 block text-lg text-white">Zeitraum</label> |
196 | | - <LocalizationProvider |
197 | | - dateAdapter={AdapterDayjs} |
198 | | - adapterLocale="de" |
199 | | - localeText={deDE.components.MuiLocalizationProvider.defaultProps.localeText} |
200 | | - > |
201 | | - <div className={"ml-5 flex-row flex mt-2 w-80 items-center gap-2 md:mb-0 mb-8"}> |
202 | 179 |
|
203 | | - <label htmlFor="From" |
204 | | - className="mr-2 block text-bs font-medium text-white text-center">Von</label> |
205 | | - <div className="flex md:flex-row flex-col gap-2"> |
206 | | - <DatePicker |
207 | | - className="mt-1 block bg-[#333C4F] w-36 px-2 py-1 mb-4 border rounded-full shadow-sm border-[#333C4F] placeholder-gray-400 placeholder:text-xs" |
208 | | - sx={{ |
209 | | - '& .MuiIconButton-root': { |
210 | | - color: '#9fa3a8', |
211 | | - }, |
212 | | - }} |
213 | | - minDate={dayjs()} |
214 | | - slotProps={{ |
215 | | - textField: { |
216 | | - size: 'small', variant: 'standard', InputProps: { |
217 | | - disableUnderline: true, |
218 | | - sx: { |
219 | | - paddingLeft: '8px', |
220 | | - paddingRight: '8px', |
221 | | - color: '#e2e8f0', |
222 | | - } |
223 | | - }, |
224 | | - } |
225 | | - }} |
226 | | - format="DD.MM.YYYY" defaultValue={date1} value={date1} |
227 | | - onChange={handleDate1Change}/> |
228 | | - <TimePicker |
229 | | - className="mt-1 block bg-[#333C4F] w-24 px-2 py-1 mb-4 border rounded-full shadow-sm border-[#333C4F] placeholder-gray-400 placeholder:text-xs" |
230 | | - sx={{ |
231 | | - '& .MuiIconButton-root': { |
232 | | - color: '#9fa3a8', |
233 | | - }, |
234 | | - }} |
235 | | - slotProps={{ |
236 | | - textField: { |
237 | | - size: 'small', variant: 'standard', InputProps: { |
238 | | - disableUnderline: true, |
239 | | - sx: { |
240 | | - paddingLeft: '8px', |
241 | | - paddingRight: '8px', |
242 | | - color: '#e2e8f0', |
243 | | - } |
244 | | - }, |
245 | | - } |
246 | | - }} |
247 | | - ampm={false} format="HH:mm" value={time1} onChange={handleTime1Change}/> |
248 | | - </div> |
249 | | - </div> |
250 | | - </LocalizationProvider> |
| 180 | + <TimePickerComponent time={time1} date={date1} setDate={handleDate1Change} setTime={handleTime1Change} label={"Von"}/> |
| 181 | + <TimePickerComponent time={time2} date={date2} setDate={setDate2} setTime={setTime2} label={"Bis"}/> |
251 | 182 |
|
252 | | - <LocalizationProvider |
253 | | - dateAdapter={AdapterDayjs} |
254 | | - adapterLocale="de" |
255 | | - localeText={deDE.components.MuiLocalizationProvider.defaultProps.localeText} |
256 | | - > |
257 | | - <div className={"ml-5 flex-row mt-4 flex w-80 h-12 items-center gap-2 md:mb-0 mb-8"}> |
258 | | - <label htmlFor="To" |
259 | | - className="mr-3 block text-bs font-medium text-white ">Bis</label> |
260 | | - <div className="flex md:flex-row flex-col gap-2 "> |
261 | | - <DatePicker |
262 | | - sx={{ |
263 | | - '& .MuiIconButton-root': { |
264 | | - color: '#9fa3a8', |
265 | | - }, |
266 | | - }} |
267 | | - minDate={dayjs()} |
268 | | - className="mt-1 block bg-[#333C4F] w-36 px-2 py-1 mb-4 border rounded-full shadow-sm border-[#333C4F] placeholder-gray-400 placeholder:text-xs" |
269 | | - slotProps={{ |
270 | | - textField: { |
271 | | - size: 'small', variant: 'standard', InputProps: { |
272 | | - disableUnderline: true, |
273 | | - sx: { |
274 | | - paddingLeft: '8px', |
275 | | - paddingRight: '8px', |
276 | | - color: '#e2e8f0', |
277 | | - } |
278 | | - }, |
279 | | - } |
280 | | - }} |
281 | | - format="DD.MM.YYYY" defaultValue={date2} value={date2} |
282 | | - onChange={handleDate2Change}/> |
283 | | - <TimePicker |
284 | | - sx={{ |
285 | | - '& .MuiIconButton-root': { |
286 | | - color: '#9fa3a8', |
287 | | - }, |
288 | | - }} |
289 | | - className="mt-1 block bg-[#333C4F] w-24 px-2 py-1 mb-4 border rounded-full shadow-sm border-[#333C4F] placeholder-gray-400 placeholder:text-xs" |
290 | | - slotProps={{ |
291 | | - textField: { |
292 | | - size: 'small', variant: 'standard', InputProps: { |
293 | | - disableUnderline: true, |
294 | | - sx: { |
295 | | - paddingLeft: '8px', |
296 | | - paddingRight: '8px', |
297 | | - color: '#e2e8f0', |
298 | | - } |
299 | | - }, |
300 | | - } |
301 | | - }} |
302 | | - ampm={false} format="HH:mm" value={time2} onChange={handleTime2Change}/> |
303 | | - </div> |
304 | | - </div> |
305 | | - </LocalizationProvider> |
306 | 183 | <div className={"ml-5 flex-row mt-1 flex h-12 items-center gap-2"}> |
307 | 184 |
|
308 | 185 | <label htmlFor="Repeat" |
|
0 commit comments