diff --git a/resources/js/components/media/MediaDropzone.vue b/resources/js/components/media/MediaDropzone.vue index 93a65e8..c1a19f4 100644 --- a/resources/js/components/media/MediaDropzone.vue +++ b/resources/js/components/media/MediaDropzone.vue @@ -63,6 +63,23 @@ function formatBytes(bytes: number): string { } function onAddedFile(item: { id: string; file: File }) { + if (props.maxFiles === 1) { + state.value.existing.forEach((existingItem) => { + if (!state.value.removeIds.includes(existingItem.id)) { + state.value.removeIds.push(existingItem.id); + } + }); + state.value.existing = []; + + const previewsCopy = [...filePreviews.value]; + previewsCopy.forEach((p) => { + dropzoneRef.value?.removeFile(p.id); + }); + filePreviews.value.forEach((p) => URL.revokeObjectURL(p.objectUrl)); + filePreviews.value = []; + state.value.newFiles = []; + } + state.value.newFiles.push(item.file); filePreviews.value.push({ id: item.id,