import React, { useState, useContext, MouseEvent } from 'react'; import Collapse from '@material-ui/core/Collapse'; import ExpandIcon from '../assets/expand.png'; import { Course, Group, GroupType } from '../types/index'; import { coursesContext } from '../contexts/CoursesProvider'; import styled from 'styled-components'; import { makeStyles } from '@material-ui/core/styles'; import { ReactComponent as CloseIcon } from '../assets/close.svg'; interface ClassExandIconProps { isSelected: boolean; } const CourseStyled = styled.div` display: flex; min-height: 50px; background-color: rgb(100, 181, 246) !important; align-items: center; justify-content: center; flex-direction: column; margin-top: 10px; padding-top: 10px; padding-bottom: 10px; border-radius: 10px; cursor: pointer; align-items: stretch; position: relative; `; const CourseNameStyled = styled.div` padding-top: 10px; padding-bottom: 10px; `; interface ClassGroupProps { groupType: GroupType; } const ClassGroupStyled = styled.div` padding-top: 1px; padding-bottom: 1px; :hover { cursor: pointer; } outline-offset: -5px; outline: ${({ groupType }) => (groupType === 'CLASS' ? '2px solid #5642AA' : '2px solid #866DF7')}; `; const ClassExandIconStyled = styled.img` margin-top: 5px; width: 20px; transition: 0.2s; transform: ${(props) => (props.isSelected ? 'scaleY(-1);' : 'scaleY(1);')}; `; const useStyles = makeStyles({ expanded: { maxHeight: '244px', overflowY: 'auto', }, '@global': { '*::-webkit-scrollbar': { width: '0.4em', }, '*::-webkit-scrollbar-track': { '-webkit-box-shadow': 'inset 0 0 6px rgba(1,0,0,0.1)', }, '*::-webkit-scrollbar-thumb': { borderRadius: '10px', backgroundColor: '#d4b851', outline: '1px solid slategrey', }, }, }); const DeleteFromBasketIcon = styled(CloseIcon)` width: 20px; cursor: pointer; position: absolute; left: 235px; top: -10px; &:hover { fill: #d3d3d3; } `; interface CourseCardProps { course: Course; } export const CourseCard = ({ course }: CourseCardProps) => { const classes = useStyles(); const { addGroup, deleteFromBasket } = useContext(coursesContext)!; const [isSelected, setSelected] = useState(false); const groups = course.lectures === undefined ? course.classes : [...course.lectures, ...course.classes]; const onGroupClick = (group: Group, id: number) => addGroup(group, id); return ( deleteFromBasket(course.id)}> setSelected(!isSelected)}>{course.name} {groups .sort((a, b) => b.type.localeCompare(a.type)) .map((group, index) => ( onGroupClick(group, course.id)}>

{group.time} {group.room}

{group.lecturer}

))}
setSelected(!isSelected)}>
); };