Files
packager/ui/src/components/PackageList.svelte

47 lines
1.1 KiB
Svelte
Raw Normal View History

2021-09-06 15:43:30 +02:00
<script lang="ts">
import PackageItem from "./PackageItem.svelte"
import { fade, fly, draw } from 'svelte/transition';
2021-09-06 18:08:52 +02:00
export let name;
export let items;
export let id;
2021-09-06 15:43:30 +02:00
let active = false;
let shown_items = [];
let ellipsed = false;
const enter = () => {
active = true
}
const leave = () => {
active = false
}
2021-09-06 18:08:52 +02:00
$: if (items.length <= 4) {
shown_items = items
2021-09-06 15:43:30 +02:00
ellipsed = false
} else {
2021-09-06 18:08:52 +02:00
shown_items = items.slice(0, !active && 3 || items.length)
2021-09-06 15:43:30 +02:00
ellipsed = true
}
2021-09-06 18:08:52 +02:00
function onClick(e) {
window.location = `/lists/${e}`;
}
2021-09-06 15:43:30 +02:00
</script>
2021-09-06 18:08:52 +02:00
<main on:mouseenter={enter} on:mouseleave={leave} on:click={onClick(id)}>
<h2 class="text-lg font-semibold text-center mb-5 mt-3">{name}</h2>
2021-09-06 15:43:30 +02:00
<ul class="list-disc ml-5">
{#each shown_items as item}
<li in:fade|local={{duration: 200}} out:fade|local={{duration: 100, delay: 100}}><PackageItem data={item} /></li>
{/each}
{#if !active && ellipsed}
...
{/if}
</ul>
</main>
<style>
</style>