From 4afba34a57ca7e5198a3b35863829e8c83d9d8c8 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Thu, 25 Jun 2026 22:43:42 +0700 Subject: [PATCH] feat: clear existing files and previews when adding a file to a single-limit MediaDropzone --- resources/js/components/media/MediaDropzone.vue | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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,