import React, { useCallback, useEffect, useState } from 'react' import dayjs from 'dayjs' import { Link as ConnectedLink, generatePath } from 'react-router-dom' import { getNavigationValue } from '@brojs/cli' import { Box, CardHeader, CardBody, CardFooter, ButtonGroup, Stack, StackDivider, Button, Card, Heading, Tooltip, Spinner, } from '@chakra-ui/react' import { useTranslation } from 'react-i18next' import { api } from '../../__data__/api/api' import { ArrowUpIcon, LinkIcon } from '@chakra-ui/icons' import { Course } from '../../__data__/model' import { CourseDetails } from './course-details' export const CourseCard = ({ course }: { course: Course }) => { const [getLessonList, populatedCourse] = api.useLazyGetCourseByIdQuery() const [isOpened, setIsOpened] = useState(false) const { t } = useTranslation() useEffect(() => { if (isOpened) { getLessonList(course.id, true) } }, [isOpened]) const handleToggleOpene = useCallback(() => { setIsOpened((opened) => !opened) }, [setIsOpened]) return ( {course.name} {isOpened && ( } spacing="8px"> {`${t('journal.pl.course.startDate')} - ${dayjs(course.startDt).format(t('journal.pl.lesson.dateFormat'))}`} {t('journal.pl.course.lessonCount')} - {course.lessons.length} {populatedCourse.isFetching && } {!populatedCourse.isFetching && populatedCourse.isSuccess && ( )} {getNavigationValue('link.journal.attendance') && ( )} )} ) }