Files.svelte 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <script lang="ts">
  2. import { createEventDispatcher } from 'svelte';
  3. const dispatch = createEventDispatcher();
  4. import FileItem from '$lib/components/common/FileItem.svelte';
  5. export let selectedFileId = null;
  6. export let files = [];
  7. export let small = false;
  8. </script>
  9. <div class=" max-h-full flex flex-col w-full">
  10. {#each files as file}
  11. <div class="mt-1 px-2">
  12. <FileItem
  13. className="w-full"
  14. colorClassName="{selectedFileId === file.id
  15. ? ' bg-gray-50 dark:bg-gray-850'
  16. : 'bg-transparent'} hover:bg-gray-50 dark:hover:bg-gray-850 transition"
  17. {small}
  18. item={file}
  19. name={file?.name ?? file?.meta?.name}
  20. type="file"
  21. size={file?.size ?? file?.meta?.size ?? ''}
  22. loading={file.status === 'uploading'}
  23. dismissible
  24. on:click={() => {
  25. if (file.status === 'uploading') {
  26. return;
  27. }
  28. dispatch('click', file.id);
  29. }}
  30. on:dismiss={() => {
  31. if (file.status === 'uploading') {
  32. return;
  33. }
  34. dispatch('delete', file.id);
  35. }}
  36. />
  37. </div>
  38. {/each}
  39. </div>