Fix bug with multiple uploadcare events being triggered with one button

This commit is contained in:
Ramon Wenger 2023-03-16 22:36:30 +01:00
parent 67bae3fb17
commit 4d476e687b
3 changed files with 25 additions and 14 deletions

View File

@ -4,14 +4,14 @@
<document-block <document-block
:value="{ url: document }" :value="{ url: document }"
show-trash-icon show-trash-icon
@trash="$emit('change-document-url', '')" @trash="changeDocumentUrl('')"
/> />
</template> </template>
<template v-else> <template v-else>
<simple-file-upload <simple-file-upload
:with-text="withText" :with-text="withText"
:value="document" :value="document"
@link-change-url="$emit('change-document-url', $event)" @link-change-url="changeDocumentUrl($event)"
/> />
</template> </template>
</div> </div>
@ -35,7 +35,13 @@ export default {
default: false, default: false,
}, },
}, },
emits: ['changeDocumentUrl'],
components: { SimpleFileUpload, DocumentBlock }, components: { SimpleFileUpload, DocumentBlock },
methods: {
changeDocumentUrl(val) {
this.$emit('change-document-url', val);
},
},
}; };
</script> </script>

View File

@ -60,7 +60,8 @@ const clickUploadCare = () => {
} }
} }
:deep(.uploadcare--widget) { /* :deep(.uploadcare--widget) { */
.uploadcare--widget {
display: none; display: none;
} }
</style> </style>

View File

@ -5,23 +5,27 @@
role="uploadcare-uploader" role="uploadcare-uploader"
name="file-upload" name="file-upload"
data-system-dialog data-system-dialog
:id="id"
ref="uploadcare-filedialog" ref="uploadcare-filedialog"
/> />
</template> </template>
<script> <script setup>
import { onMounted } from 'vue';
import uploadcareWidget from 'uploadcare-widget'; import uploadcareWidget from 'uploadcare-widget';
export default { const id = crypto.randomUUID();
mounted() {
let widget = uploadcareWidget.Widget('[role=uploadcare-uploader]');
widget.onChange((result) => { const emit = defineEmits(['linkChangeUrl']);
result.done((fileInfo) => {
let urlWithFilename = fileInfo.cdnUrl + fileInfo.name; onMounted(() => {
this.$emit('link-change-url', urlWithFilename); let widget = uploadcareWidget.Widget(`#${id}`);
});
widget.onChange((result) => {
result.done((fileInfo) => {
let urlWithFilename = fileInfo.cdnUrl + fileInfo.name;
emit('link-change-url', urlWithFilename);
}); });
}, });
}; });
</script> </script>