import { useState } from 'react' import { taskTypes, taskStatuses } from './consts'; import { EnumSelect } from './enum-select'; export function TaskRow({ task, updateTask, deleteTask, swapTasks }: TaskProps & { task: TodoTask }) { const [edit, setEdit] = useState(false); const [classnames, setClassnames] = useState([]); return (
{ event.preventDefault(); const data = Object.fromEntries(new FormData(event.currentTarget)); updateTask({ id: task.id, type: data.type as TaskType, title: data.title as string, status: data.status as TaskStatus, }); setEdit(false) }} draggable onDragStart={event => { event.dataTransfer.setData('text/plain', task.id.toString()); event.dataTransfer.effectAllowed = 'move'; setClassnames(['dragged']) }} onDragOver={event => { event.preventDefault(); const fromId = +event.dataTransfer.getData('text/plain'); if (fromId !== task.id) { setClassnames(['dropover']); } }} onDragLeave={event => { const fromId = +event.dataTransfer.getData('text/plain'); if (fromId !== task.id) { setClassnames([]) } }} onDrop={event => { event.stopPropagation(); setClassnames([]) swapTasks(+event.dataTransfer.getData('text/plain'), task.id); }} onDragEnd={() => { setClassnames([]) }} >
{edit ? : taskTypes[task.type] }
{edit ? : task.title}
{edit ? : taskStatuses[task.status] }
{edit ? <> : <> }
); }