open-webui/src/lib/components/layout/Sidebar/Folders.svelte

52 lines
1.1 KiB
Svelte
Raw Normal View History

2024-10-17 04:05:03 +00:00
<script lang="ts">
2024-10-17 06:06:53 +00:00
import { createEventDispatcher } from 'svelte';
const dispatch = createEventDispatcher();
2025-09-27 02:16:34 +00:00
2024-10-17 04:05:03 +00:00
import RecursiveFolder from './RecursiveFolder.svelte';
2025-09-27 02:16:34 +00:00
export let folderRegistry = {};
2024-10-17 04:05:03 +00:00
export let folders = {};
2025-07-02 07:48:01 +00:00
export let shiftKey = false;
2024-10-17 04:05:03 +00:00
2025-07-14 15:09:54 +00:00
export let onDelete = (folderId) => {};
2024-10-17 04:05:03 +00:00
let folderList = [];
// Get the list of folders that have no parent, sorted by name alphabetically
$: folderList = Object.keys(folders)
.filter((key) => folders[key].parent_id === null)
2024-10-17 04:49:22 +00:00
.sort((a, b) =>
folders[a].name.localeCompare(folders[b].name, undefined, {
numeric: true,
sensitivity: 'base'
})
);
2025-09-27 01:48:17 +00:00
const onItemMove = (e) => {
if (e.originFolderId) {
folderRegistry[e.originFolderId]?.setFolderItems();
}
};
2024-10-17 04:05:03 +00:00
</script>
{#each folderList as folderId (folderId)}
2024-10-17 06:06:53 +00:00
<RecursiveFolder
2025-01-04 10:42:26 +00:00
className=""
2025-09-27 01:48:17 +00:00
bind:folderRegistry
2024-10-17 06:06:53 +00:00
{folders}
{folderId}
2025-07-02 07:48:01 +00:00
{shiftKey}
2025-07-14 15:09:54 +00:00
{onDelete}
2025-09-27 01:48:17 +00:00
{onItemMove}
2024-10-18 03:13:28 +00:00
on:import={(e) => {
dispatch('import', e.detail);
}}
2024-10-17 06:06:53 +00:00
on:update={(e) => {
dispatch('update', e.detail);
}}
2024-10-18 02:09:01 +00:00
on:change={(e) => {
dispatch('change', e.detail);
}}
2024-10-17 06:06:53 +00:00
/>
2024-10-17 04:05:03 +00:00
{/each}