import { Form, Head, router } from '@inertiajs/react'; import { Plus } from 'lucide-react'; import { useState } from 'react'; import { ConfirmDialog } from '@/components/confirm-dialog'; import { DataTable } from '@/components/data-table'; import { FileUpload } from '@/components/file-upload'; import InputError from '@/components/input-error'; import { RupiahInput } from '@/components/rupiah-input'; import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { destroy, index as expenseIndex, store, update } from '@/routes/admin/finance/expenses'; import { createExpenseColumns } from './columns'; import type { Expense } from './columns'; type Props = { expenses: Expense[]; }; export default function ExpenseIndex({ expenses }: Props) { const [createOpen, setCreateOpen] = useState(false); const [editing, setEditing] = useState(null); const [deleting, setDeleting] = useState(null); const [createReceiptKey, setCreateReceiptKey] = useState(null); const [editReceiptKey, setEditReceiptKey] = useState(null); const [createUploading, setCreateUploading] = useState(false); const [editUploading, setEditUploading] = useState(false); const [createFileMeta, setCreateFileMeta] = useState<{ size: number; type: string } | null>(null); const [editFileMeta, setEditFileMeta] = useState<{ size: number; type: string } | null>(null); function handleDelete() { if (!deleting) { return; } router.delete(destroy(deleting.id), { onSuccess: () => setDeleting(null), }); } const columns = createExpenseColumns({ handleEdit: (expense) => { setEditing(expense); setEditReceiptKey(expense.receipt_key ?? null); }, handleDeleteClick: (expense) => setDeleting(expense), }); return ( <>

Pengeluaran

{ setCreateOpen(open); if (!open) { setCreateReceiptKey(null); setCreateFileMeta(null); } }}>
{ setCreateOpen(false); setCreateReceiptKey(null); setCreateFileMeta(null); }}> {({ errors, processing }) => { return ( <> Tambah Pengeluaran
); }}
{ if (!open) { setEditing(null); setEditReceiptKey(null); setEditFileMeta(null); } }} > {editing && (
{ setEditing(null); setEditReceiptKey(null); setEditFileMeta(null); }}> {({ errors, processing }) => { return ( <> Edit Pengeluaran
); }}
)}
{ if (!open) { setDeleting(null); } }} title="Hapus Pengeluaran" description={`Apakah Anda yakin ingin menghapus pengeluaran "${deleting?.description}"? Tindakan ini tidak dapat dibatalkan.`} confirmLabel="Hapus" onConfirm={handleDelete} />
); } ExpenseIndex.layout = { breadcrumbs: [ { title: 'Keuangan', href: expenseIndex(), }, { title: 'Pengeluaran', href: expenseIndex(), }, ], };