From 1582903aa34e30a9c60c79d8d217a805f3edc733 Mon Sep 17 00:00:00 2001 From: aarondoet <42084688+aarondoet@users.noreply.github.com> Date: Tue, 3 Sep 2024 21:28:32 +0000 Subject: [PATCH 1/5] Implement table sorting and searching --- src/lib/table/Table.svelte | 56 +++++++++++++++++-- src/lib/table/TableBody.svelte | 18 +++++- src/lib/table/TableBodyCell.svelte | 4 +- src/lib/table/TableBodyRow.svelte | 4 +- src/lib/table/TableHead.svelte | 4 +- src/lib/table/TableHeadCell.svelte | 41 ++++++++++++-- src/lib/table/TableSearch.svelte | 34 +++++++++-- src/lib/table/index.ts | 7 ++- src/routes/components/table/+page.svelte | 10 ++-- .../components/table/md/search-input.md | 8 +-- 10 files changed, 152 insertions(+), 34 deletions(-) diff --git a/src/lib/table/Table.svelte b/src/lib/table/Table.svelte index f32f823f..13db7964 100644 --- a/src/lib/table/Table.svelte +++ b/src/lib/table/Table.svelte @@ -1,12 +1,15 @@ -
+ {#if filter} +
+ +
+
+ + + +
+ +
+ {#if header} + {@render header()} + {/if} +
+ {:else if header} + {@render header()} + {/if} {@render children()}
+ {#if footer} + {@render footer()} + {/if}
diff --git a/src/lib/table/TableBody.svelte b/src/lib/table/TableBody.svelte index 8cfc4065..617c68c4 100644 --- a/src/lib/table/TableBody.svelte +++ b/src/lib/table/TableBody.svelte @@ -33,5 +33,6 @@ ## Props @prop children @prop class: className +@prop row @prop ...restProps --> diff --git a/src/lib/table/TableHeadCell.svelte b/src/lib/table/TableHeadCell.svelte index a683bae3..9aad476d 100644 --- a/src/lib/table/TableHeadCell.svelte +++ b/src/lib/table/TableHeadCell.svelte @@ -54,6 +54,12 @@ [Go to docs](https://svelte-5-ui-lib.codewithshin.com/) ## Props @prop children +@prop padding = 'px-6 py-3' @prop class: className +@prop btnClass +@prop sort +@prop defaultDirection = 'asc' +@prop sortDirection = $bindable() +@prop defaultSort @prop ...restProps --> diff --git a/src/lib/table/TableSearch.svelte b/src/lib/table/TableSearch.svelte index fae5e5e8..f1b24504 100644 --- a/src/lib/table/TableSearch.svelte +++ b/src/lib/table/TableSearch.svelte @@ -108,7 +108,8 @@ @prop header @prop footer @prop divClass = 'relative overflow-x-auto shadow-md sm:rounded-lg' -@prop inputValue = $bindable() +@prop inputValue = $bindable('') +@prop placeholder @prop striped @prop hoverable @prop customColor = '' @@ -120,5 +121,7 @@ @prop svgClass = 'w-5 h-5 text-gray-500 dark:text-gray-400' @prop tableClass = 'w-full text-left text-sm' @prop class: className +@prop items +@prop filter @prop ...restProps --> From 8ac2da24b92c2be08bfd9b5b2ea6f17ba295d33c Mon Sep 17 00:00:00 2001 From: aarondoet <42084688+aarondoet@users.noreply.github.com> Date: Tue, 3 Sep 2024 22:58:05 +0000 Subject: [PATCH 4/5] Clean up unused imports --- src/lib/table/Table.svelte | 2 +- src/lib/table/TableBody.svelte | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/table/Table.svelte b/src/lib/table/Table.svelte index 1f70add8..d58b7860 100644 --- a/src/lib/table/Table.svelte +++ b/src/lib/table/Table.svelte @@ -4,7 +4,7 @@ import { twMerge, twJoin } from 'tailwind-merge'; import { setContext } from 'svelte'; import { type TableColrType, type TableCtxType } from '.'; - import { writable, type Writable } from 'svelte/store'; + import { writable } from 'svelte/store'; interface Props extends HTMLTableAttributes { children: Snippet; diff --git a/src/lib/table/TableBody.svelte b/src/lib/table/TableBody.svelte index 617c68c4..452d9295 100644 --- a/src/lib/table/TableBody.svelte +++ b/src/lib/table/TableBody.svelte @@ -1,5 +1,5 @@ {#if children} {@render children()} {/if} - {#if row && sorted} - {#each sorted as item, index} + {#if row && filtered} + {#each filtered as item, index} {@render row({item, index})} {/each} {/if}