import { Head, Link } from '@inertiajs/react'; import { Plus, Trash2 } from 'lucide-react'; import { DataTable } from '@/components/data-table'; import { DeleteConfirmation } from '@/components/modal/delete-confirmation'; import { Button } from '@/components/ui/button'; import { Card, CardContent } from '@/components/ui/card'; import { formatDate } from '@/lib/formatters'; import purchaseRoutes from '@/routes/purchase'; import type { Purchase } from '@/types'; import { usePurchaseIndex } from './hooks/use-purchase-index'; import { getColumns } from './partials/columns'; import { usePermission } from '@/hooks/use-permission'; export default function PurchaseIndex({ purchases }: { purchases: Purchase[] }) { const { hasPermission } = usePermission(); const { isDeleteDialogOpen, isBulkDeleteDialogOpen, purchaseToDelete, rowsToDelete, rowSelection, setRowSelection, setRowsToDelete, setIsDeleteDialogOpen, setIsBulkDeleteDialogOpen, onDelete, confirmDelete, confirmBulkDelete, } = usePurchaseIndex(); const columns = getColumns({ onDelete }).filter( (col) => col.id !== 'actions' || hasPermission('Edit:Purchase') || hasPermission('Delete:Purchase') ); return (

Belanja

{hasPermission('Create:Purchase') && ( )}
{ setRowsToDelete(rows); setIsBulkDeleteDialogOpen(true); }, icon: Trash2, variant: 'destructive', }, ] : [] } /> {/* Single Delete Confirmation */} Tindakan ini tidak dapat dibatalkan. Belanja {purchaseToDelete?.purchase_date ? formatDate(purchaseToDelete?.purchase_date) : purchaseToDelete?.note || '-'} akan dihapus secara permanen. } onDelete={confirmDelete} /> {/* Bulk Delete Confirmation */} Tindakan ini tidak dapat dibatalkan. {rowsToDelete.length} item yang terpilih akan dihapus secara permanen. } onDelete={confirmBulkDelete} />
); } PurchaseIndex.layout = { breadcrumbs: [ { title: 'Kelola', }, ], };