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 | 1x 1x 1x 1x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 3x 3x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 24x 1x | import { Button, Form } from "react-bootstrap";
import { useForm, Controller } 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 {
control,
formState: { errors },
handleSubmit,
} = useForm({ defaultValues: initialContents || {} });
// Stryker restore all
const navigate = useNavigate();
const testIdPrefix = "TeamMemberForm";
const onSubmit = (data) => {
submitAction(data);
};
return (
<Form onSubmit={handleSubmit(onSubmit)}>
<Form.Group className="mb-3">
<Form.Label htmlFor="rosterStudentId">Select Student</Form.Label>
<Controller
name="rosterStudentId"
control={control}
rules={{ required: "Select a student." }}
render={({ field }) => (
<RosterStudentDropdown
rosterStudents={rosterStudents}
{...field}
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;
|