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 | 41x 41x 17x 41x 1x 41x | import Modal from "react-bootstrap/Modal";
import { Form } from "react-bootstrap";
import { useForm } from "react-hook-form";
import { useEffect } from "react";
export default function ProjectModal({
onSubmitAction,
showModal,
toggleShowModal,
initialContents,
buttonText = "Create",
modalTitle = "Create Project",
}) {
const {
register,
formState: { errors },
handleSubmit,
reset,
} = useForm({});
// Reset form when initialContents changes (e.g., when editing)
useEffect(() => {
reset(initialContents);
}, [initialContents, reset]);
const closeModal = () => {
toggleShowModal(false);
};
return (
<Modal
show={showModal}
onHide={closeModal}
centered={true}
data-testid={"ProjectModal-base"}
>
<Modal.Header>
<Modal.Title>{modalTitle}</Modal.Title>
<button
type="button"
className="btn-close"
aria-label="Close"
data-testid={"ProjectModal-closeButton"}
onClick={closeModal}
></button>
</Modal.Header>
<Form onSubmit={handleSubmit(onSubmitAction)}>
<Modal.Body>
<Form.Group className="mb-3">
<Form.Label htmlFor="name">Project Name</Form.Label>
<Form.Control
data-testid={"ProjectModal-name"}
id="name"
type="text"
isInvalid={Boolean(errors.name)}
{...register("name", {
required: "Project Name is required.",
})}
/>
<Form.Control.Feedback type="invalid">
{errors.name?.message}
</Form.Control.Feedback>
</Form.Group>
<Form.Group>
<Form.Label htmlFor="description">Description</Form.Label>
<Form.Control
data-testid={"ProjectModal-description"}
id="description"
as="textarea"
rows={3}
isInvalid={Boolean(errors.description)}
{...register("description", {
required: "Description is required.",
})}
/>
<Form.Control.Feedback type="invalid">
{errors.description?.message}
</Form.Control.Feedback>
</Form.Group>
</Modal.Body>
<Modal.Footer>
<button
type="submit"
className="btn btn-primary"
data-testid="ProjectModal-submit"
>
{buttonText}
</button>
</Modal.Footer>
</Form>
</Modal>
);
}
|