import { User } from '@/types/user'; import { FormEvent, ReactNode, useState } from 'react'; import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { DialogTrigger } from '@radix-ui/react-dialog'; import { ColumnDef } from '@tanstack/react-table'; import type { Project } from '@/types/project'; import { DataTable } from '@/components/data-table'; import { useForm, usePage } from '@inertiajs/react'; import { Button } from '@/components/ui/button'; import { LoaderCircleIcon, TrashIcon } from 'lucide-react'; import { Sheet, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger } from '@/components/ui/sheet'; import { Form, FormField, FormFields } from '@/components/ui/form'; import { Label } from '@/components/ui/label'; import InputError from '@/components/ui/input-error'; import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { SharedData } from '@/types'; function RemoveProject({ user, project }: { user: User; project: Project }) { const [open, setOpen] = useState(false); const form = useForm(); const submit = () => { form.delete(route('users.projects.destroy', { user: user.id, project: project.id }), { preserveScroll: true, onSuccess: () => { form.reset(); }, }); }; return ( Remove from project Remove {user.name} from {project.name}

Are you sure you want to remove {user.name} from {project.name}?

); } function AddToProject({ user }: { user: User }) { const page = usePage(); const [open, setOpen] = useState(false); const form = useForm({ project: '', }); const submit = (e: FormEvent) => { e.preventDefault(); form.post(route('users.projects.store', { user: user.id }), { onSuccess: () => { setOpen(false); }, }); }; return ( Add to project Add {user.name} to a project
); } const columns = (user: User): ColumnDef[] => { return [ { accessorKey: 'id', header: 'ID', enableColumnFilter: true, enableSorting: true, enableHiding: true, }, { accessorKey: 'name', header: 'Name', enableColumnFilter: true, enableSorting: true, }, { id: 'actions', enableColumnFilter: false, enableSorting: false, cell: ({ row }) => { return (
); }, }, ]; }; export default function Projects({ user, children }: { user: User; children: ReactNode }) { return ( {children} Projects All projects that {user.name} has access {user.projects && }
); }