import { ColumnDef } from '@tanstack/react-table'; import DateTime from '@/components/date-time'; import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'; import { Button } from '@/components/ui/button'; import { useForm, usePage } from '@inertiajs/react'; import { LoaderCircleIcon, MoreVerticalIcon } from 'lucide-react'; import FormSuccessful from '@/components/form-successful'; import { useState } from 'react'; import { DatabaseUser } from '@/types/database-user'; import { Database } from '@/types/database'; import { Form, FormField, FormFields } from '@/components/ui/form'; import { Label } from '@/components/ui/label'; import InputError from '@/components/ui/input-error'; import { MultiSelect } from '@/components/multi-select'; import { Badge } from '@/components/ui/badge'; function Link({ databaseUser }: { databaseUser: DatabaseUser }) { const [open, setOpen] = useState(false); const page = usePage<{ databases: Database[]; }>(); const form = useForm<{ databases: string[]; }>({ databases: databaseUser.databases, }); const databases = page.props.databases.map((database) => ({ value: database.name, label: database.name, })); const submit = () => { form.put(route('database-users.link', { server: databaseUser.server_id, databaseUser: databaseUser.id }), { onSuccess: () => { setOpen(false); }, }); }; return ( e.preventDefault()}>Link Link database user [{databaseUser.username}] Link database user Databases form.setData('databases', value)} defaultValue={form.data.databases} placeholder="Select database" maxCount={5} /> Cancel {form.processing && } Save ); } function Delete({ databaseUser }: { databaseUser: DatabaseUser }) { const [open, setOpen] = useState(false); const form = useForm(); const submit = () => { form.delete(route('database-users.destroy', { server: databaseUser.server_id, databaseUser: databaseUser.id }), { onSuccess: () => { setOpen(false); }, }); }; return ( e.preventDefault()}> Delete Delete database user [{databaseUser.username}] Delete database user Are you sure you want to delete database user {databaseUser.username}? This action cannot be undone. Cancel {form.processing && } Delete ); } export const columns: ColumnDef[] = [ { accessorKey: 'username', header: 'Username', enableColumnFilter: true, enableSorting: true, }, { accessorKey: 'databases', header: 'Linked databases', enableColumnFilter: true, enableSorting: true, cell: ({ row }) => { return ( {row.original.databases.map((database) => ( {database} ))} ); }, }, { accessorKey: 'created_at', header: 'Created at', enableColumnFilter: true, enableSorting: true, cell: ({ row }) => { return ; }, }, { accessorKey: 'status', header: 'Status', enableColumnFilter: true, enableSorting: true, cell: ({ row }) => { return {row.original.status}; }, }, { id: 'actions', enableColumnFilter: false, enableSorting: false, cell: ({ row }) => { return ( Open menu ); }, }, ];
Are you sure you want to delete database user {databaseUser.username}? This action cannot be undone.