import * as React from "react"; import { ColumnDef } from "@tanstack/react-table"; import { Eye, MoreVertical, SquarePen, Trash2 } from "lucide-react"; import { cn } from "@/lib/utils"; import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, DropdownMenuItem, } from "@/components/ui/dropdown-menu"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { formatDateToIndonesian } from "@/utils/globals"; import { Link, useRouter } from "@/i18n/routing"; import { setBanner } from "@/service/settings/settings"; import { error } from "@/config/swal"; import { useToast } from "@/components/ui/use-toast"; import Swal from "sweetalert2"; import withReactContent from "sweetalert2-react-content"; import { deleteUser } from "@/service/management-user/management-user"; import { stringify } from "querystring"; const columns: ColumnDef[] = [ { accessorKey: "no", header: "No", cell: ({ row }) => {row.getValue("no")}, }, { accessorKey: "fullname", header: "Nama", cell: ({ row }) => ( {row.getValue("fullname")} ), }, { accessorKey: "username", header: "Username", cell: ({ row }) => ( {row.original?.userKeycloak?.username || ""} ), }, { accessorKey: "phoneNumber", header: "No. HP", cell: ({ row }) => {row.getValue("phoneNumber")}, }, { accessorKey: "email", header: "Email", cell: ({ row }) => ( {row.getValue("email")} ), }, { accessorKey: "level", header: "Level Pengguna", cell: ({ row }) => ( {row.original?.role?.name || ""} ), }, { accessorKey: "createdAt", header: "Tanggal Unggah", cell: ({ row }) => ( {formatDateToIndonesian(row.getValue("createdAt"))} ), }, { accessorKey: "isActive", header: "Status", cell: ({ row }) => ( {row.getValue("isActive") ? "Aktif" : "Belum Aktif"} ), }, { id: "actions", accessorKey: "action", header: "Actions", enableHiding: false, cell: ({ row }) => { const { toast } = useToast(); const MySwal = withReactContent(Swal); const router = useRouter(); const doDelete = async (id: number) => { const response = await deleteUser(id); if (response?.error) { toast({ title: stringify(response?.message), variant: "destructive", }); } toast({ title: "Success delete", }); router.push("?dataChange=true"); }; const handleDelete = (id: number) => { MySwal.fire({ title: "Apakah anda ingin menghapus data user?", showCancelButton: true, confirmButtonColor: "#dc3545", confirmButtonText: "Iya", cancelButtonText: "Tidak", }).then((result) => { if (result.isConfirmed) { doDelete(id); } }); }; return ( {/* Aktivasi */} Detail Edit { handleDelete(row.original.id); }} > Hapus ); }, }, ]; export default columns;