open-webui/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte

46 lines
1 KiB
Svelte
Raw Normal View History

2024-10-04 04:05:55 +00:00
<script lang="ts">
2024-10-04 04:31:42 +00:00
import { createEventDispatcher } from 'svelte';
const dispatch = createEventDispatcher();
2024-10-04 04:05:55 +00:00
import FileItem from '$lib/components/common/FileItem.svelte';
2024-10-04 04:31:42 +00:00
export let selectedFileId = null;
2024-10-04 04:05:55 +00:00
export let files = [];
2024-11-30 23:44:04 +00:00
export let small = false;
2024-10-04 04:05:55 +00:00
</script>
<div class=" max-h-full flex flex-col w-full">
2024-10-05 17:20:11 +00:00
{#each files as file}
2024-10-20 07:36:43 +00:00
<div class="mt-1 px-2">
2024-10-04 04:05:55 +00:00
<FileItem
className="w-full"
2024-10-04 04:31:42 +00:00
colorClassName="{selectedFileId === file.id
2024-10-04 06:41:17 +00:00
? ' bg-gray-50 dark:bg-gray-850'
2024-10-04 04:31:42 +00:00
: 'bg-transparent'} hover:bg-gray-50 dark:hover:bg-gray-850 transition"
2024-11-30 23:44:04 +00:00
{small}
2025-01-13 17:21:00 +00:00
item={file}
name={file?.name ?? file?.meta?.name}
2024-10-04 04:05:55 +00:00
type="file"
size={file?.size ?? file?.meta?.size ?? ''}
loading={file.status === 'uploading'}
2024-10-04 04:05:55 +00:00
dismissible
2024-10-04 04:31:42 +00:00
on:click={() => {
if (file.status === 'uploading') {
return;
}
2024-10-04 04:31:42 +00:00
dispatch('click', file.id);
}}
on:dismiss={() => {
if (file.status === 'uploading') {
return;
}
2024-10-04 04:31:42 +00:00
dispatch('delete', file.id);
}}
2024-10-04 04:05:55 +00:00
/>
</div>
{/each}
</div>