48 lines
1012 B
Svelte
48 lines
1012 B
Svelte
<script>
|
|
import { Dropzone, notifications } from "@budibase/bbui"
|
|
import { API } from "api"
|
|
|
|
export let value = []
|
|
export let label
|
|
|
|
const BYTES_IN_MB = 1000000
|
|
|
|
function handleFileTooLarge(fileSizeLimit) {
|
|
notifications.error(
|
|
`Files cannot exceed ${
|
|
fileSizeLimit / BYTES_IN_MB
|
|
}MB. Please try again with smaller files.`
|
|
)
|
|
}
|
|
|
|
async function processFiles(fileList) {
|
|
let data = new FormData()
|
|
for (let i = 0; i < fileList.length; i++) {
|
|
data.append("file", fileList[i])
|
|
}
|
|
try {
|
|
return await API.uploadBuilderAttachment(data)
|
|
} catch (error) {
|
|
notifications.error(error.message || "Failed to upload attachment")
|
|
return []
|
|
}
|
|
}
|
|
|
|
async function deleteAttachments(fileList) {
|
|
try {
|
|
return await API.deleteBuilderAttachments(fileList)
|
|
} catch (error) {
|
|
return []
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<Dropzone
|
|
bind:value
|
|
{label}
|
|
{...$$restProps}
|
|
{processFiles}
|
|
{deleteAttachments}
|
|
{handleFileTooLarge}
|
|
/>
|