({ Track, categories }: { Track: TrackCardProps; categories: Categories[] })
| 14 | } |
| 15 | |
| 16 | const EditTrackCard = ({ Track, categories }: { Track: TrackCardProps; categories: Categories[] }) => { |
| 17 | const [isEditing, setIsEditing] = useState(false); |
| 18 | const [title, setTitle] = useState(Track.title); |
| 19 | const [description, setDescription] = useState(Track.description); |
| 20 | const [image, setImage] = useState(Track.image); |
| 21 | const [hidden, setHidden] = useState(Track.hidden); |
| 22 | const [cohort, setCohort] = useState(Track.cohort); |
| 23 | const [trackType, setTrackType] = useState(Track.trackType); |
| 24 | const [canvaLink, setCanvaLink] = useState(Track.canvaLink || ""); |
| 25 | |
| 26 | const [selectedCategory, setSelectedCategory] = useState<string[]>(Track.categories.map((item) => item.category.id)); |
| 27 | |
| 28 | function handleEdit(id: string) { |
| 29 | if (isEditing) { |
| 30 | updateTrack(id, { id, title, description, image, hidden, selectedCategory, cohort, trackType, canvaLink }); |
| 31 | return setIsEditing(false); |
| 32 | } |
| 33 | setIsEditing(true); |
| 34 | } |
| 35 | |
| 36 | function handleFilterButton(category: string) { |
| 37 | if (selectedCategory.includes(category)) { |
| 38 | setSelectedCategory(selectedCategory.filter((item) => item !== category)); |
| 39 | } else { |
| 40 | setSelectedCategory([...selectedCategory, category]); |
| 41 | } |
| 42 | } |
| 43 | |
| 44 | function handleDiscardButton() { |
| 45 | setTitle(Track.title); |
| 46 | setDescription(Track.description); |
| 47 | setImage(Track.image); |
| 48 | setHidden(Track.hidden); |
| 49 | setIsEditing(Track.hidden); |
| 50 | setCohort(Track.cohort); |
| 51 | } |
| 52 | return ( |
| 53 | <Card key={Track.id}> |
| 54 | {!isEditing && ( |
| 55 | <div className="grid grid-cols-6"> |
| 56 | <img src={image} className="m-4 flex min-h-[130px] min-w-[130px] rounded-xl sm:h-[130px] sm:w-[130px]" /> |
| 57 | <div className="col-span-5"> |
| 58 | <CardHeader> |
| 59 | <div className="flex justify-between"> |
| 60 | <CardTitle>{title}</CardTitle> |
| 61 | <Button variant={"outline"} className="" onClick={() => handleEdit(Track.id)}> |
| 62 | Edit |
| 63 | </Button> |
| 64 | </div> |
| 65 | <CardDescription>{description}</CardDescription> |
| 66 | <CardDescription> |
| 67 | {selectedCategory.map((item) => { |
| 68 | return <div key={item}>{item}</div>; |
| 69 | })} |
| 70 | </CardDescription> |
| 71 | </CardHeader> |
| 72 | <CardContent>{`hidden: ${hidden}`}</CardContent> |
| 73 | </div> |
nothing calls this directly
no test coverage detected