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 | 1x 1x 1x 1x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 4x 1x 1x 1x 3x 3x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 1x | import { Button, Form } from "react-bootstrap";
import { useForm } from "react-hook-form";
import { useNavigate } from "react-router";
import RosterStudentDropdown from "main/components/RosterStudent/RosterStudentDropdown";
function TeamMemberForm({
initialContents,
rosterStudents,
submitAction,
buttonLabel = "Add Member",
cancelDisabled = false,
}) {
// Stryker disable all
const {
setValue,
setError,
formState: { errors },
handleSubmit,
} = useForm({ defaultValues: initialContents || {} });
// Stryker restore all
const onSubmit = (data) => {
if (!data.rosterStudentId) {
setError("rosterStudentId", { message: "Please select a student" });
return;
}
submitAction(data);
};
const navigate = useNavigate();
const testIdPrefix = "TeamMemberForm";
return (
<Form onSubmit={handleSubmit(onSubmit)}>
<Form.Group className="mb-3">
<Form.Label htmlFor="rosterStudentId">Select Student</Form.Label>
<RosterStudentDropdown
rosterStudents={rosterStudents}
setValue={setValue}
isInvalid={Boolean(errors.rosterStudentId)}
/>
{errors.rosterStudentId && (
<Form.Control.Feedback type="invalid">
{errors.rosterStudentId.message}
</Form.Control.Feedback>
)}
</Form.Group>
<Button type="submit" data-testid={testIdPrefix + "-submit"}>
{buttonLabel}
</Button>
{!cancelDisabled && (
<Button
variant="Secondary"
onClick={() => navigate(-1)}
data-testid={testIdPrefix + "-cancel"}
>
Cancel
</Button>
)}
</Form>
);
}
export default TeamMemberForm;
|