Files
fnx_web/svelte/src/file_viewer/viewers/ZipItem.svelte

55 lines
1.1 KiB
Svelte
Raw Normal View History

2023-01-17 16:13:26 +01:00
<script>
import { formatDataVolume } from "../../util/Formatting.svelte";
export let item = {
download_url: "",
2023-01-17 16:13:26 +01:00
size: 0,
children: null,
}
</script>
<!-- First get directories and render them as details collapsibles -->
{#each Object.entries(item.children) as [name, child]}
{#if child.children}
<details bind:open={child.details_open}>
2023-01-17 16:13:26 +01:00
<summary>
{name} ({formatDataVolume(child.size, 3)})
</summary>
<!-- Performance optimization, only render children if details is expanded -->
{#if child.details_open}
<svelte:self item={child}></svelte:self>
{/if}
2023-01-17 16:13:26 +01:00
</details>
{/if}
{/each}
<!-- Then get files and render them as list items -->
<ul>
{#each Object.entries(item.children) as [name, child]}
{#if !child.children}
<li>
2024-01-25 00:29:41 +01:00
{#if child.download_url}
<a href={child.download_url}>{name}</a>
{:else}
{name}
{/if}
({formatDataVolume(child.size, 3)})<br/>
2023-01-17 16:13:26 +01:00
</li>
{/if}
{/each}
</ul>
<style>
details {
padding-left: 12px;
border: none;
border-left: 2px solid var(--separator);
}
ul {
margin: 0;
padding-left: 30px;
border-left: 2px solid var(--separator);
}
</style>