diff --git a/frontend/components/global/FileInput.vue b/frontend/components/global/FileInput.vue index a2a0910..e0e3beb 100644 --- a/frontend/components/global/FileInput.vue +++ b/frontend/components/global/FileInput.vue @@ -6,11 +6,19 @@ import { useToast } from "~/composables/global/useToast"; // types type Props = { - modelValue: File[]; + modelValue: { + id: number; + file_link: string; + date: string; + size: number; + name: string; + }[]; + loading?: boolean; }; type Emits = { "update:modelValue": [value: any]; + change: [value: File]; }; // props @@ -50,7 +58,8 @@ const onDrop = (files: File[] | null) => { } else { if (modelValue.value.length + files.length <= 3) { files?.forEach((item) => { - emit("update:modelValue", [...modelValue.value, item]); + emit("change", item); + resetFileDialog(); }); } else { addToast({ @@ -78,22 +87,27 @@ const { isOverDropZone } = useDropZone(dropZoneRef, { dataTypes: ["image/jpeg", "image/png", "image/jpg"], }); -const { open: openDialog, onChange } = useFileDialog({ +const { + open: openDialog, + onChange, + reset: resetFileDialog, +} = useFileDialog({ accept: "image/*", directory: false, }); onChange((files: any) => { let arr: File[] = []; - Object.keys(files).forEach((item) => { - arr.push(files[item]); + Object.keys(files).forEach((_, index) => { + arr.push(files[index]); }); onDrop(arr); }); -const deleteFile = (index: number) => { +const removeAttachment = (id: number) => { + let target = modelValue.value.findIndex((i) => i.id == id); const clone = [...modelValue.value]; - clone.splice(index, 1); + clone.splice(target, 1); emit("update:modelValue", clone); }; @@ -103,10 +117,22 @@ const deleteFile = (index: number) => {
- +

برای آپلود کلیک کنید یا فایل خود را اینجا بیاندازید

@@ -121,24 +147,12 @@ const deleteFile = (index: number) => { v-auto-animate class="flex flex-row-reverse items-center justify-between w-full px-2 animate__animated animate__fadeIn" > -
  • -
    -

    {{ item.name }}

    -
    -
    -

    - {{ (item.size / 1024).toFixed(2) }}KB -

    -
    -
    - -
    -
  • +