Skip to content

Commit 7d06097

Browse files
clean
1 parent 697c708 commit 7d06097

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

src/pages/announcements/add-announcement-form.tsx

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import { useCallback } from 'react';
99
import { Grid } from '@mui/material';
10+
import { type DateOrTimeView } from '@mui/x-date-pickers';
1011
import { useIntl } from 'react-intl';
1112
import { type Option, SubmitButton, useSnackMessage } from '@gridsuite/commons-ui';
1213
import yup from '../../utils/yup-config';
@@ -16,7 +17,7 @@ import { yupResolver } from '@hookform/resolvers/yup';
1617
import { FormContainer, SelectElement, TextareaAutosizeElement } from 'react-hook-form-mui';
1718
import { DateTimePickerElement, type DateTimePickerElementProps } from 'react-hook-form-mui/date-pickers';
1819
import { TZDate } from '@date-fns/tz';
19-
import { addSeconds } from 'date-fns';
20+
import { endOfMinute, startOfMinute } from 'date-fns';
2021
import { UserAdminSrv } from '../../services';
2122
import { getErrorMessage, handleAnnouncementCreationErrors } from '../../utils/error';
2223

@@ -49,9 +50,10 @@ const formSchema = yup
4950
type FormSchema = InferType<typeof formSchema>;
5051

5152
const datetimePickerTransform: NonNullable<DateTimePickerElementProps<FormSchema>['transform']> = {
52-
input: (value) => (value && new TZDate(value)) || null,
53-
output: (value, context) => value?.toISOString() || '',
53+
input: (value) => (value ? new TZDate(value) : null),
54+
output: (value) => value?.toISOString() ?? '',
5455
};
56+
const pickerView = ['year', 'month', 'day', 'hours', 'minutes'] as const satisfies readonly DateOrTimeView[];
5557

5658
export default function AddAnnouncementForm({ onAnnouncementCreated }: Readonly<AddAnnouncementFormProps>) {
5759
const intl = useIntl();
@@ -66,16 +68,16 @@ export default function AddAnnouncementForm({ onAnnouncementCreated }: Readonly<
6668
[SEVERITY]: null,
6769
},*/
6870
});
69-
const { register, setValue, handleSubmit, formState, control, getValues } = formContext;
71+
const { formState, getValues } = formContext;
7072
const startDateValue = getValues(START_DATE);
7173

7274
const onSubmit = useCallback<SubmitHandler<FormSchema>>(
7375
(params) => {
7476
UserAdminSrv.addAnnouncement({
7577
//id: crypto.randomUUID(),
7678
message: params.message,
77-
startDate: params.startDate,
78-
endDate: params.endDate,
79+
startDate: startOfMinute(new TZDate(params.startDate)).toISOString(),
80+
endDate: endOfMinute(new TZDate(params.endDate)).toISOString(),
7981
severity: params.severity,
8082
})
8183
.then(() => onAnnouncementCreated?.())
@@ -107,8 +109,9 @@ export default function AddAnnouncementForm({ onAnnouncementCreated }: Readonly<
107109
<DateTimePickerElement<FormSchema>
108110
name={START_DATE}
109111
label={intl.formatMessage({ id: 'announcements.table.startDate' })}
110-
transform={datetimePickerTransform} //TODO round startOf(min)
112+
transform={datetimePickerTransform}
111113
timezone="system"
114+
views={pickerView}
112115
timeSteps={{ hours: 1, minutes: 1, seconds: 0 }}
113116
disablePast
114117
/>
@@ -117,11 +120,12 @@ export default function AddAnnouncementForm({ onAnnouncementCreated }: Readonly<
117120
<DateTimePickerElement<FormSchema>
118121
name={END_DATE}
119122
label={intl.formatMessage({ id: 'announcements.table.endDate' })}
120-
transform={datetimePickerTransform} //TODO round startOf(min)
123+
transform={datetimePickerTransform}
121124
timezone="system"
125+
views={pickerView}
122126
timeSteps={{ hours: 1, minutes: 1, seconds: 0 }}
123127
disablePast
124-
minDateTime={startDateValue ? addSeconds(new TZDate(startDateValue), 1) : undefined}
128+
minDateTime={startDateValue ? new TZDate(startDateValue) : undefined}
125129
/>
126130
</Grid>
127131
<Grid item xs={2}>

0 commit comments

Comments
 (0)