Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | 24x 1x 23x 21x 2x 59x 59x 59x 20x 59x 23x 13x 59x 23x 13x 59x 22x 13x 59x 12x 12x 7x 7x 7x | import React from "react";
import { Form, Button } from "react-bootstrap";
function formatDateTimeLocal(value) {
if (!value) {
return "";
}
if (typeof value === "string") {
return value.slice(0, 16);
}
return new Date(value).toISOString().slice(0, 16);
}
export default function ReviewForm({
initialItemName,
initialReviewerComments,
initialItemsStars,
initialDateItemServed,
submitAction,
submitButtonText = "Submit Review",
}) {
const [comments, setComments] = React.useState(initialReviewerComments ?? "");
const [stars, setStars] = React.useState(initialItemsStars ?? 5);
const [dateServed, setDateServed] = React.useState(() => {
return initialDateItemServed
? formatDateTimeLocal(initialDateItemServed)
: new Date().toISOString().slice(0, 16);
});
React.useEffect(() => {
if (initialReviewerComments !== undefined) {
setComments(initialReviewerComments ?? "");
}
}, [initialReviewerComments]);
React.useEffect(() => {
if (initialItemsStars !== undefined) {
setStars(initialItemsStars ?? 5);
}
}, [initialItemsStars]);
React.useEffect(() => {
if (initialDateItemServed !== undefined) {
setDateServed(formatDateTimeLocal(initialDateItemServed));
}
}, [initialDateItemServed]);
const handleSubmit = (e) => {
e.preventDefault();
submitAction({
reviewerComments: comments,
itemsStars: stars,
dateItemServed: dateServed,
});
};
return (
<Form onSubmit={handleSubmit}>
<Form.Group className="mb-3">
<Form.Label htmlFor="review-item-name">Item Name</Form.Label>
<Form.Control
id="review-item-name"
type="text"
value={initialItemName ?? ""}
disabled
/>
</Form.Group>
<Form.Group className="mb-3">
<Form.Label htmlFor="review-comments">Comments</Form.Label>
<Form.Control
id="review-comments"
as="textarea"
rows={3}
value={comments}
onChange={(e) => setComments(e.target.value)}
/>
</Form.Group>
<Form.Group className="mb-3">
<Form.Label htmlFor="review-stars">Stars (1 to 5)</Form.Label>
<Form.Select
id="review-stars"
value={stars}
onChange={(e) => setStars(Number(e.target.value))}
>
{[1, 2, 3, 4, 5].map((num) => (
<option key={num} value={num}>
{num}
</option>
))}
</Form.Select>
</Form.Group>
<Form.Group className="mb-3">
<Form.Label htmlFor="review-date">
Date and Time Item was Served
</Form.Label>
<Form.Control
id="review-date"
type="datetime-local"
value={dateServed}
onChange={(e) => setDateServed(e.target.value)}
/>
</Form.Group>
<Button type="submit">{submitButtonText}</Button>
</Form>
);
}
|