'use client'; import { useState } from 'react'; import { api } from '@/app/_trpc/client'; import { ColorSquare } from '@/components/ColorSquare'; import { Dropdown } from '@/components/Dropdown'; import { Combobox } from '@/components/ui/combobox'; import { Input } from '@/components/ui/input'; import { useDebounceFn } from '@/hooks/useDebounceFn'; import { useDispatch, useSelector } from '@/redux'; import type { IChartEvent } from '@/types'; import { Filter, GanttChart, Users } from 'lucide-react'; import { useParams } from 'next/navigation'; import { addEvent, changeEvent, removeEvent } from '../reportSlice'; import { ReportEventFilters } from './ReportEventFilters'; import { ReportEventMore } from './ReportEventMore'; import type { ReportEventMoreProps } from './ReportEventMore'; export function ReportEvents() { const [isCreating, setIsCreating] = useState(false); const selectedEvents = useSelector((state) => state.report.events); const dispatch = useDispatch(); const params = useParams(); const eventsQuery = api.chart.events.useQuery({ projectId: String(params.projectId), }); const eventsCombobox = (eventsQuery.data ?? []).map((item) => ({ value: item.name, label: item.name, })); const dispatchChangeEvent = useDebounceFn((event: IChartEvent) => { dispatch(changeEvent(event)); }); const handleMore = (event: IChartEvent) => { const callback: ReportEventMoreProps['onClick'] = (action) => { switch (action) { case 'createFilter': { return setIsCreating(true); } case 'remove': { return dispatch(removeEvent(event)); } } }; return callback; }; return (