diff --git a/composables/useDownloadCsv.ts b/composables/useDownloadCsv.ts new file mode 100644 index 0000000000000000000000000000000000000000..724fd797b3f5bbbaec0b44a24dc3e31026bd6f48 --- /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, + }; +}