Skip to content

Commit dbca77c

Browse files
authored
Add more configuration options to skeleton table (#933)
* more configurable skeleton table * add another hst variant * add reactive columnWidths prop to hst variant
1 parent 6f098e7 commit dbca77c

File tree

2 files changed

+43
-11
lines changed

2 files changed

+43
-11
lines changed

src/lib/holocene/skeleton/skeleton.story.svelte

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@
33
import Skeleton from './index.svelte';
44
import SkeletonTable from './table.svelte';
55
6+
let rows: number = 10;
7+
let columns: number = 4;
8+
let columnWidths: number[] = [25, 25, 25, 25];
9+
10+
$: {
11+
columnWidths = Array.from(new Array(columns)).fill(100 / columns);
12+
}
613
export let Hst: HST;
714
</script>
815

@@ -16,6 +23,22 @@
1623
</Hst.Variant>
1724

1825
<Hst.Variant title="A Table Skeleton Loader">
19-
<SkeletonTable />
26+
<SkeletonTable bind:rows bind:columns bind:columnWidths />
27+
</Hst.Variant>
28+
29+
<Hst.Variant title="A Table Skeleton Loader with column widths">
30+
<SkeletonTable columns={4}>
31+
<svelte:fragment slot="headers">
32+
<th class="w-1/4">Header 1</th>
33+
<th class="w-1/2">Header 2</th>
34+
<th>Header 3</th>
35+
<th class="w-1/12">Header 4</th>
36+
</svelte:fragment>
37+
</SkeletonTable>
2038
</Hst.Variant>
39+
40+
<svelte:fragment slot="controls">
41+
<Hst.Number bind:value={rows} title="Rows: " />
42+
<Hst.Number bind:value={columns} title="Columns: " />
43+
</svelte:fragment>
2144
</Hst.Story>
Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,29 @@
11
<script lang="ts">
22
import Table from '$lib/holocene/table/table.svelte';
3+
import TableHeaderRow from '../table/table-header-row.svelte';
4+
import TableRow from '../table/table-row.svelte';
35
import Skeleton from './index.svelte';
46
57
export let rows = 10;
8+
export let columns = 4;
9+
export let columnWidths: number[] = new Array(columns).fill(100 / columns);
610
</script>
711

8-
<Table class="w-full border" variant="fancy">
9-
<tr slot="headers" class="h-8">
10-
<th />
11-
</tr>
12+
<Table class="w-full table-fixed" variant="fancy">
13+
<TableHeaderRow slot="headers" class="h-8">
14+
<slot name="headers">
15+
{#each Array.from(new Array(columns)) as _column, i}
16+
<th style="width: {columnWidths[i]}%" />
17+
{/each}
18+
</slot>
19+
</TableHeaderRow>
1220
{#each Array.from(Array(rows).keys()) as _row}
13-
<tr class="flex items-center gap-4 p-3">
14-
<Skeleton class="h-5 w-44" />
15-
<Skeleton class="h-5" />
16-
<Skeleton class="h-5 w-96" />
17-
<Skeleton class="h-5 w-96" />
18-
</tr>
21+
<TableRow>
22+
{#each Array.from(new Array(columns)) as _column}
23+
<td style="padding-right: 0.5rem;">
24+
<Skeleton class="h-4 w-full" />
25+
</td>
26+
{/each}
27+
</TableRow>
1928
{/each}
2029
</Table>

0 commit comments

Comments
 (0)