'use client'; import React, { useState } from 'react'; import { CellContext } from '@tanstack/table-core'; import { Button } from '@/components/ui/button'; import { Edit, Trash } from 'lucide-react'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog'; import { DataTable } from '@/components/ui/data-table'; import { z } from 'zod'; import { ActionResponse } from '@/lib/types/actionResponse'; import { useRouter } from 'next/navigation'; import { toast } from 'sonner'; import { sonnerContent } from '@/components/ui/sonner'; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogFooter, AlertDialogHeader, } from '@/components/ui/alert-dialog'; import { paymentFormSchema } from '@/lib/form-schemas/paymentFormSchema'; import { Category, Entity, Payment } from '@prisma/client'; import PaymentForm from '@/components/form/paymentForm'; import { columns } from '@/app/payments/columns'; import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerTrigger } from '@/components/ui/drawer'; import { useMediaQuery } from '@/lib/hooks/useMediaQuery'; export default function PaymentPageClientContent({ payments, entities, categories, onSubmit, onDelete, className, }: { payments: Payment[], entities: Entity[], categories: Category[], onSubmit: (data: z.infer) => Promise, onDelete: (id: number) => Promise, className: string, }) { const isDesktop = useMediaQuery('(min-width: 768px)'); const router = useRouter(); const [isEditDialogOpen, setIsEditDialogOpen] = useState(false); const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false); const [selectedPayment, setSelectedPayment] = useState(undefined); async function handleSubmit(data: z.infer) { const response = await onSubmit(data); router.refresh(); setIsEditDialogOpen(false); return response; } async function handleDelete(id: number | undefined) { if (!id) { return; } const response = await onDelete(id); toast(sonnerContent(response)); if (response.redirect) { router.push(response.redirect); } router.refresh(); setIsDeleteDialogOpen(false); return response; } const actionCell = ({row}: CellContext) => { const payment = row.original as Payment; return (
); }; return (

Payments

{/* Edit dialog */} { isDesktop ? ( {selectedPayment?.id ? 'Update Payment' : 'Create Payment'} ) : ( {selectedPayment?.id ? 'Update Payment' : 'Create Payment'} ) }
{/* Data Table */} {/* Delete confirmation dialog */} Delete Payment?

Are your sure you want to delete the payment?

Cancel handleDelete(selectedPayment?.id)}> Delete
); }