Files.svelte 999 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. </script>
  8. <div class=" max-h-full flex flex-col w-full">
  9. {#each files as file}
  10. <div class="mt-1 px-2">
  11. <FileItem
  12. className="w-full"
  13. colorClassName="{selectedFileId === file.id
  14. ? ' bg-gray-50 dark:bg-gray-850'
  15. : 'bg-transparent'} hover:bg-gray-50 dark:hover:bg-gray-850 transition"
  16. {file}
  17. name={file?.name ?? file?.meta?.name}
  18. type="file"
  19. size={file?.size ?? file?.meta?.size ?? ''}
  20. loading={file.status === 'uploading'}
  21. dismissible
  22. on:click={() => {
  23. if (file.status === 'uploading') {
  24. return;
  25. }
  26. dispatch('click', file.id);
  27. }}
  28. on:dismiss={() => {
  29. if (file.status === 'uploading') {
  30. return;
  31. }
  32. dispatch('delete', file.id);
  33. }}
  34. />
  35. </div>
  36. {/each}
  37. </div>