feat: add CSV export functionality to Clients and Products pages

This commit is contained in:
Cauê Faleiros
2026-05-20 10:27:04 -03:00
parent 2d85d2dcd5
commit ceecbc354d
3 changed files with 55 additions and 4 deletions

View File

@@ -69,3 +69,36 @@ export const parseOrderDate = (dateStr: string): Date => {
const fallback = new Date(dateStr);
return isNaN(fallback.getTime()) ? new Date(0) : fallback;
};
export const exportToCSV = (data: any[], filename: string) => {
if (!data || !data.length) return;
const headers = Object.keys(data[0]);
const csvRows = [];
// Add headers
csvRows.push(headers.join(','));
// Add rows
for (const row of data) {
const values = headers.map(header => {
const val = row[header];
const escaped = ('' + val).replace(/"/g, '\\"');
return `"${escaped}"`;
});
csvRows.push(values.join(','));
}
const csvString = csvRows.join('\n');
const blob = new Blob([csvString], { type: 'text/csv;charset=utf-8;' });
const link = document.createElement('a');
if (link.download !== undefined) {
const url = URL.createObjectURL(blob);
link.setAttribute('href', url);
link.setAttribute('download', filename);
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
};