"use client"; import { useState } from "react"; import { Button, Dialog, DialogTitle, DialogContent, DialogActions, FormControl, Select, MenuItem, FormControlLabel, Checkbox, Stack, Paper, styled, TextField, } from "@mui/material"; import FileUploadIcon from "@mui/icons-material/FileUpload"; import * as XLSX from "xlsx"; import { saveAs } from "file-saver"; import { DataGrid } from "@mui/x-data-grid"; import { columns } from "./constants"; import { rows } from "./mockData"; import AdvancedSearch from "../../AdvancedSearch/AdvancedSearch"; const paginationModel = { page: 0, pageSize: 50 }; export default function TransactionTable() { const [open, setOpen] = useState(false); const [fileType, setFileType] = useState<"csv" | "xls" | "xlsx">("csv"); const [onlyCurrentTable, setOnlyCurrentTable] = useState(false); const handleExport = () => { const exportRows = onlyCurrentTable ? rows.slice(0, 5) : rows; const exportData = [ columns.map((col) => col.headerName), // @ts-expect-error - Dynamic field access from DataGrid columns ...exportRows.map((row) => columns.map((col) => row[col.field] ?? "")), ]; const worksheet = XLSX.utils.aoa_to_sheet(exportData); const workbook = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(workbook, worksheet, "Transactions"); if (fileType === "csv") { const csv = XLSX.utils.sheet_to_csv(worksheet); const blob = new Blob([csv], { type: "text/csv;charset=utf-8;" }); saveAs(blob, "transactions.csv"); } else { XLSX.writeFile(workbook, `transactions.${fileType}`, { bookType: fileType, }); } setOpen(false); }; return ( console.log(`setSearchQuery(${e.target.value})`)} sx={{ width: 300 }} /> {/* */} {/* */} {/* Export Dialog */} setOpen(false)}> Export Transactions setOnlyCurrentTable(e.target.checked)} /> } label="Only export the results in the current table" sx={{ mt: 2 }} /> ); } const StyledPaper = styled(Paper)(() => ({ height: "90vh", }));