pleroma-fe/src/components/exporter/exporter.js
2026-01-06 16:22:52 +02:00

47 lines
1.2 KiB
JavaScript

import { library } from '@fortawesome/fontawesome-svg-core'
import { faCircleNotch } from '@fortawesome/free-solid-svg-icons'
library.add(faCircleNotch)
const Exporter = {
props: {
getContent: {
type: Function,
required: true,
},
filename: {
type: String,
default: 'export.csv',
},
exportButtonLabel: { type: String },
processingMessage: { type: String },
},
data() {
return {
processing: false,
}
},
methods: {
process() {
this.processing = true
this.getContent().then((content) => {
const fileToDownload = document.createElement('a')
fileToDownload.setAttribute(
'href',
'data:text/plain;charset=utf-8,' + encodeURIComponent(content),
)
fileToDownload.setAttribute('download', this.filename)
fileToDownload.style.display = 'none'
document.body.appendChild(fileToDownload)
fileToDownload.click()
document.body.removeChild(fileToDownload)
// Add delay before hiding processing state since browser takes some time to handle file download
setTimeout(() => {
this.processing = false
}, 2000)
})
},
},
}
export default Exporter