import { Head, Link, router } from '@inertiajs/react'; import { Plus } from 'lucide-react'; import { useState } from 'react'; import type { PaginationState } from '@/components/data-display'; import { DataTable } from '@/components/data-display'; import { DeleteConfirmDialog } from '@/components/dialogs'; import { PageHeader } from '@/components/layout'; import { Button } from '@/components/ui/button'; import { useCan } from '@/hooks/use-can'; import { useServerTable } from '@/hooks/use-server-table'; import { index as rolesIndex, create as roleCreate, edit as roleEdit, destroy as roleDestroy, } from '@/routes/admin/settings/roles'; import { createRoleColumns } from './columns'; import type { Role } from './columns'; type Props = { roles: { data: Role[]; current_page: number; last_page: number; per_page: number; total: number; }; }; export default function RoleIndex({ roles }: Props) { const { can } = useCan(); const [deleting, setDeleting] = useState(null); const pagination: PaginationState = { current_page: roles.current_page, last_page: roles.last_page, per_page: roles.per_page, total: roles.total, }; const { search, handlePageChange, handlePerPageChange, handleSearchChange, } = useServerTable({ route: () => rolesIndex.url(), pagination, }); function handleDelete() { if (!deleting) { return; } router.delete(roleDestroy.url(deleting.id), { onSuccess: () => setDeleting(null), }); } const columns = createRoleColumns({ handleEdit: (role) => { router.visit(roleEdit.url(role.id)); }, handleDeleteClick: (role) => setDeleting(role), can, }); return ( <>
Tambah ) : undefined } /> { if (!open) { setDeleting(null); } }} title="Hapus Role" description={(role) => `Apakah Anda yakin ingin menghapus role "${role.name}"? Semua user dengan role ini akan kehilangan permission terkait.` } onConfirm={handleDelete} />
); }