diff --git a/packages/bbui/src/Form/Core/Dropzone.svelte b/packages/bbui/src/Form/Core/Dropzone.svelte index 51f6eef6f9..c64e69b201 100644 --- a/packages/bbui/src/Form/Core/Dropzone.svelte +++ b/packages/bbui/src/Form/Core/Dropzone.svelte @@ -43,6 +43,7 @@ let selectedImageIdx = 0 let fileDragged = false let selectedUrl + let fileInput $: selectedImage = value?.[selectedImageIdx] ?? null $: fileCount = value?.length ?? 0 $: isImage = @@ -102,6 +103,7 @@ await deleteAttachments( value.filter((x, idx) => idx === selectedImageIdx).map(item => item.key) ) + fileInput.value = "" } selectedImageIdx = 0 } @@ -234,6 +236,7 @@ type="file" multiple accept={extensions} + bind:this={fileInput} on:change={handleFile} /> { // non required MultiSelect creates an empty array, which should not throw errors errors[fieldName] = [`${fieldName} is required`] } - } else if (type === FieldTypes.JSON && typeof row[fieldName] === "string") { + } else if ( + (type === FieldTypes.ATTACHMENT || type === FieldTypes.JSON) && + typeof row[fieldName] === "string" + ) { // this should only happen if there is an error try { - JSON.parse(row[fieldName]) + const json = JSON.parse(row[fieldName]) + if (type === FieldTypes.ATTACHMENT) { + if (Array.isArray(json)) { + row[fieldName] = json + } else { + errors[fieldName] = [`Must be an array`] + } + } } catch (err) { errors[fieldName] = [`Contains invalid JSON`] }