import styled from '@emotion/styled'; import { useRecoilValue } from 'recoil'; import { IconPlus } from 'twenty-ui'; import { SkeletonLoader } from '@/activities/components/SkeletonLoader'; import { useOpenCreateActivityDrawer } from '@/activities/hooks/useOpenCreateActivityDrawer'; import { TASKS_TAB_LIST_COMPONENT_ID } from '@/activities/tasks/constants/TasksTabListComponentId'; import { useTasks } from '@/activities/tasks/hooks/useTasks'; import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; import { Button } from '@/ui/input/button/components/Button'; import AnimatedPlaceholder from '@/ui/layout/animated-placeholder/components/AnimatedPlaceholder'; import { AnimatedPlaceholderEmptyContainer, AnimatedPlaceholderEmptySubTitle, AnimatedPlaceholderEmptyTextContainer, AnimatedPlaceholderEmptyTitle, EMPTY_PLACEHOLDER_TRANSITION_PROPS, } from '@/ui/layout/animated-placeholder/components/EmptyPlaceholderStyled'; import { useTabList } from '@/ui/layout/tab/hooks/useTabList'; import { Task } from '@/activities/types/Task'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import groupBy from 'lodash.groupby'; import { AddTaskButton } from './AddTaskButton'; import { TaskList } from './TaskList'; const StyledContainer = styled.div` display: flex; flex-direction: column; `; type TaskGroupsProps = { filterDropdownId?: string; targetableObjects?: ActivityTargetableObject[]; showAddButton?: boolean; }; export const TaskGroups = ({ targetableObjects, showAddButton, }: TaskGroupsProps) => { const { tasks, tasksLoading } = useTasks({ targetableObjects: targetableObjects ?? [], }); const openCreateActivity = useOpenCreateActivityDrawer({ activityObjectNameSingular: CoreObjectNameSingular.Task, }); const { activeTabIdState } = useTabList(TASKS_TAB_LIST_COMPONENT_ID); const activeTabId = useRecoilValue(activeTabIdState); const isLoading = (activeTabId !== 'done' && tasksLoading) || (activeTabId === 'done' && tasksLoading); const isTasksEmpty = (activeTabId !== 'done' && tasks?.length === 0) || (activeTabId === 'done' && tasks?.length === 0); if (isLoading && isTasksEmpty) { return ; } if (isTasksEmpty) { return ( Mission accomplished! All tasks addressed. Maintain the momentum.