"use client"; import { format } from "date-fns"; import { Plus, Trash2 } from "lucide-react"; import { useEffect, useState } from "react"; import { KanbanBoard, KanbanCard, KanbanCards, KanbanHeader, KanbanProvider, } from "~/components/ui/kanban"; import { usePotenziali } from "~/providers/PotenzialiProvider"; import type { PotenzialiGroupsId } from "~/schemas/public/PotenzialiGroups"; import type { UsersId } from "~/schemas/public/Users"; import type { PotenzialeData } from "~/server/services/potenziali.service"; import { api } from "~/utils/api"; import { Confirm } from "../confirm"; import { Credenza, CredenzaBody, CredenzaClose, CredenzaContent, CredenzaDescription, CredenzaFooter, CredenzaHeader, CredenzaTitle, CredenzaTrigger, } from "../custom_ui/credenza"; import Input from "../custom_ui/input"; import { Textarea } from "../custom_ui/textarea"; import { Button } from "../ui/button"; import { Label } from "../ui/label"; import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue, } from "../ui/select"; import { UserAvatar } from "../user_avatar"; export const Potenziali = () => { const { data, columns, setData, updateCall, removeColumn } = usePotenziali(); return ( <> { updateCall(); }} > {(column) => (
{column.name} { removeColumn(column.id); }} title="Elimina" >
{(data: PotenzialeData) => ( )} )} ); }; // 1. Extract the card logic into a separate component const PotenzialeCardItem = ({ data, columnId, }: { data: PotenzialeData; columnId: string; }) => { const [isEditingOpen, setIsEditingOpen] = useState(false); return ( { setIsEditingOpen(true); }} column={columnId} id={data.id} key={data.id} name={data.name} > <>

{data.name}

{data.descrizione}

{data.userid && ( )}

{format(data.created_at, "dd/MM/yyyy HH:mm")}

{/** biome-ignore lint/a11y/noNoninteractiveElementInteractions: */} {/** biome-ignore lint/a11y/noStaticElementInteractions: */} {/** biome-ignore lint/a11y/useKeyWithClickEvents: */}
e.stopPropagation()}>
); }; export const NewColumn = () => { const [newColumnName, setNewColumnName] = useState(""); const { addColumn } = usePotenziali(); const [open, setOpen] = useState(false); return ( Nuova colonna desc setNewColumnName(e.target.value)} type="string" /> ); }; const NewCard = ({ columnId }: { columnId: PotenzialiGroupsId }) => { const [newItemName, setNewItemName] = useState(""); const [newItemDescrizione, setNewItemDescrizione] = useState(""); const [newItemUserid, setNewItemUserid] = useState(null); const { addItem } = usePotenziali(); const [open, setOpen] = useState(false); const resetState = () => { setNewItemName(""); setNewItemDescrizione(""); setNewItemUserid(null); }; const handleAddItem = () => { addItem({ name: newItemName, descrizione: newItemDescrizione, potenziali_group_id: columnId, userid: newItemUserid, }); resetState(); setOpen(false); }; useEffect(() => { if (open) { resetState(); } }, [open]); const { data: admins, isLoading } = api.users.getAdmins.useQuery(); return ( Nuova colonna desc setNewItemName(e.target.value)} type="string" value={newItemName} />