Start to build create reservation dialog
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-06-18 18:23:57 +02:00
parent 6e6b45e0cc
commit b8a7401309
6 changed files with 177 additions and 3 deletions

View File

@@ -0,0 +1,86 @@
import {
Button,
Dialog,
DialogActions,
DialogContent,
DialogTitle,
} from "@mui/material";
import React from "react";
import { UpdateAccommodationReservation } from "../../api/accommodations/AccommodationsReservationsApi";
import { useAccommodations } from "../../widgets/accommodations/BaseAccommodationsRoute";
import { PropSelect } from "../../widgets/forms/PropSelect";
export function UpdateReservationDialog(p: {
open: boolean;
create: boolean;
reservation?: UpdateAccommodationReservation;
onClose: () => void;
onSubmitted: (c: UpdateAccommodationReservation) => void;
}): React.ReactElement {
const accommodations = useAccommodations();
const [reservation, setReservation] = React.useState<
UpdateAccommodationReservation | undefined
>();
const clearForm = () => {
setReservation(undefined);
};
const cancel = () => {
clearForm();
p.onClose();
};
const submit = async () => {
clearForm();
p.onSubmitted(reservation!);
};
React.useEffect(() => {
if (!reservation) setReservation(p.reservation);
}, [p.open, p.reservation]);
return (
<Dialog open={p.open} onClose={cancel}>
<DialogTitle>
{p.create ? "Création" : "Mise à jour"} d'une réservation
</DialogTitle>
<DialogContent style={{ display: "flex", flexDirection: "column" }}>
<PropSelect
editing={p.create}
label="Logement ciblé"
onValueChange={(v) => {
setReservation((a) => {
return {
...a!,
accommodation_id: Number(v),
};
});
}}
options={accommodations.accommodations.openToReservationList.map(
(a) => {
return { label: a.name, value: a.id.toString() };
}
)}
value={reservation?.accommodation_id?.toString()}
/>
{/* TODO : la suite */}
</DialogContent>
<DialogActions>
<Button onClick={cancel}>Annuler</Button>
<Button
onClick={submit}
disabled={
(reservation?.accommodation_id ?? -1) > 0 &&
(reservation?.start ?? -1) > 0 &&
(reservation?.end ?? -1) > (reservation?.start ?? 0)
}
>
{p.create ? "Créer" : "Mettre à jour"}
</Button>
</DialogActions>
</Dialog>
);
}