import { Head, router } from '@inertiajs/react'; import { Plus } from 'lucide-react'; import { useState } from 'react'; import type { PaginationState } from '@/components/data-table'; import { DataTable } from '@/components/data-table'; import { DeleteConfirmDialog } from '@/components/delete-confirm-dialog'; import { PageHeader } from '@/components/page-header'; import { Button } from '@/components/ui/button'; 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 [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) => { window.location.href = roleEdit.url(role.id); }, handleDeleteClick: (role) => setDeleting(role), }); return ( <>
Tambah } /> { 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} />
); }