"use client" import { DateRangePicker } from "@/components/forms/date-range-picker" import { FormSelectCategory } from "@/components/forms/select-category" import { FormSelectProject } from "@/components/forms/select-project" import { Button } from "@/components/ui/button" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Separator } from "@/components/ui/separator" import { useTransactionFilters } from "@/hooks/use-transaction-filters" import { Category, Field, Project } from "@/prisma/client" import { formatDate } from "date-fns" import { useRouter } from "next/navigation" import { useState } from "react" const deselectedFields = ["files", "text"] export function ExportTransactionsDialog({ fields, categories, projects, children, }: { fields: Field[] categories: Category[] projects: Project[] children: React.ReactNode }) { const router = useRouter() const [exportFilters, setExportFilters] = useTransactionFilters() const [exportFields, setExportFields] = useState( fields.map((field) => (deselectedFields.includes(field.code) ? "" : field.code)) ) const [includeAttachments, setIncludeAttachments] = useState(true) const handleSubmit = () => { router.push( `/export/transactions?${new URLSearchParams({ search: exportFilters?.search || "", dateFrom: exportFilters?.dateFrom || "", dateTo: exportFilters?.dateTo || "", ordering: exportFilters?.ordering || "", categoryCode: exportFilters?.categoryCode || "", projectCode: exportFilters?.projectCode || "", fields: exportFields.join(","), includeAttachments: includeAttachments.toString(), }).toString()}` ) } return ( {children} Export Transactions Export selected transactions and files as a CSV file or a ZIP archive
{exportFilters.search && (
Search query: {exportFilters.search}
)}
Time range: { setExportFilters({ ...exportFilters, dateFrom: date?.from ? formatDate(date.from, "yyyy-MM-dd") : undefined, dateTo: date?.to ? formatDate(date.to, "yyyy-MM-dd") : undefined, }) }} />
setExportFilters({ ...exportFilters, categoryCode: value })} placeholder="All Categories" emptyValue="All Categories" /> setExportFilters({ ...exportFilters, projectCode: value })} placeholder="All Projects" emptyValue="All Projects" />
Fields to be included in CSV
{fields.map((field) => (
))}
) }