Files
hotel-demo-front/src/components/widget/roomWidget.jsx
Romain Mallard 7ae740203d
All checks were successful
Deploy React / build-and-deploy (push) Successful in 15s
FIX: chat and room size
2026-03-11 14:05:01 +01:00

78 lines
1.6 KiB
JavaScript

import "./RoomWidget.css";
import { useHotel } from "../context/HotelContext";
import { useState } from "react";
export default function RoomWidget({}) {
const { rooms } = useHotel();
return (
<div className="roomGrid">
{rooms.map(room => (
<RoomCard
key={room.id}
id = {room.id}
number={room.number}
status={room.status}
/>
))}
</div>
);
}
function RoomCard({ number, status ,id}) {
//FIXME: this shouldn't use hotel context, instead : set the state once on load
const { updateRoomStatus } = useHotel();
const [editing, setEdtiting] = useState(false);
const [value, SetValue] = useState(status);
function submit() {
updateRoomStatus(id,value);
setEdtiting(false);
}
function closeInput(){
setEdtiting(false);
}
return (
<div className="card">
<h3>Room {number}</h3>
{!editing ?(
<p onClick={() => setEdtiting(true)} style={{ cursor: "pointer" }}>
Status: {status}
</p>
): (
<div>
<input
type="text"
value={value}
autoFocus
onChange={e => SetValue(e.target.value)}
onKeyDown={e => e.key === "Enter" && submit()}
onBlur={closeInput}
/>
</div>
)}
<div className="actions">
<button onClick={() => updateRoomStatus(id, "clean")}>
Mark Clean
</button>
<button onClick={() => updateRoomStatus(id, "dirty")}>
Mark Dirty
</button>
</div>
</div>
);
}
//export default roomWidget