diff --git a/front/src/modules/activities/comment/CommentCounter.tsx b/front/src/modules/activities/comment/CommentCounter.tsx new file mode 100644 index 000000000..52274fdf5 --- /dev/null +++ b/front/src/modules/activities/comment/CommentCounter.tsx @@ -0,0 +1,28 @@ +import React from 'react'; +import { useTheme } from '@emotion/react'; +import styled from '@emotion/styled'; + +import { IconComment } from '@/ui/display/icon'; + +const StyledCommentIcon = styled.div` + align-items: center; + color: ${({ theme }) => theme.font.color.light}; + display: flex; + gap: ${({ theme }) => theme.spacing(1)}; +`; + +const CommentCounter = ({ commentCount }: { commentCount: number }) => { + const theme = useTheme(); + return ( +
+ {commentCount > 0 && ( + + + {commentCount} + + )} +
+ ); +}; + +export default CommentCounter; diff --git a/front/src/modules/activities/timeline/components/TimelineActivityCardFooter.tsx b/front/src/modules/activities/timeline/components/TimelineActivityCardFooter.tsx index 600ae5bda..26ae24e95 100644 --- a/front/src/modules/activities/timeline/components/TimelineActivityCardFooter.tsx +++ b/front/src/modules/activities/timeline/components/TimelineActivityCardFooter.tsx @@ -1,11 +1,13 @@ +import { isNonEmptyArray } from '@apollo/client/utilities'; import styled from '@emotion/styled'; +import CommentCounter from '@/activities/comment/CommentCounter'; import { UserChip } from '@/users/components/UserChip'; import { Activity, User } from '~/generated/graphql'; import { beautifyExactDate } from '~/utils/date-utils'; type TimelineActivityCardFooterProps = { - activity: Pick & { + activity: Pick & { assignee?: Pick | null; }; }; @@ -26,26 +28,39 @@ const StyledVerticalSeparator = styled.div` height: 24px; `; +const StyledComment = styled.div` + margin-left: auto; +`; export const TimelineActivityCardFooter = ({ activity, -}: TimelineActivityCardFooterProps) => ( - <> - {(activity.assignee || activity.dueAt) && ( - - {activity.assignee && ( - - )} - {activity.dueAt && ( - <> - {activity.assignee && } - {beautifyExactDate(activity.dueAt)} - - )} - - )} - -); +}: TimelineActivityCardFooterProps) => { + const hasComments = isNonEmptyArray(activity.comments || []); + + return ( + <> + {(activity.assignee || activity.dueAt || hasComments) && ( + + {activity.assignee && ( + + )} + + {activity.dueAt && ( + <> + {activity.assignee && } + {beautifyExactDate(activity.dueAt)} + + )} + + {hasComments && ( + + )} + + + )} + + ); +};