From bc07164e588d968f052987038fdc31db88a4269c Mon Sep 17 00:00:00 2001
From: Remi  PLANEL <rplanel@pasteur.fr>
Date: Mon, 11 Dec 2023 19:17:49 +0100
Subject: [PATCH] composable to downolad json object as csv

---
 composables/useDownloadCsv.ts | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)
 create mode 100644 composables/useDownloadCsv.ts

diff --git a/composables/useDownloadCsv.ts b/composables/useDownloadCsv.ts
new file mode 100644
index 00000000..724fd797
--- /dev/null
+++ b/composables/useDownloadCsv.ts
@@ -0,0 +1,24 @@
+import { ref } from 'vue';
+import Papa from 'papaparse';
+
+export default function useCsvDownload() {
+  const downloadCsv = (data: Record<string, any>[], fileName: string): void => {
+    const csvContent = Papa.unparse(data);
+    const blob = new Blob([csvContent], { 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);
+    }
+  };
+
+  return {
+    downloadCsv,
+  };
+}
-- 
GitLab