diff --git a/hexawebshare/src/components/admin/crud-data/DataTableToolbar.stories.svelte b/hexawebshare/src/components/admin/crud-data/DataTableToolbar.stories.svelte new file mode 100644 index 0000000..b98d8ae --- /dev/null +++ b/hexawebshare/src/components/admin/crud-data/DataTableToolbar.stories.svelte @@ -0,0 +1,1110 @@ + + + + + + + +{#snippet filterContentSnippet()} +
+ +
+ { + appliedCategory = (e.target as HTMLSelectElement).value; + }} + /> +
+
+
+
+{/snippet} + + +{#snippet tagFilterContentSnippet()} +
+ + + +
+ { + tagFilterSearch = (e.target as HTMLInputElement).value; + }} + ariaLabel="Search tags" + class="w-full" + /> +
+ + + {#if selectedTags.length > 0} +
+ +
+ {#each selectedTags as tag (tag)} + +
e.stopPropagation()}> + { + selectedTags = selectedTags.filter((t) => t !== tag); + }} + removeLabel="Remove {tag}" + /> +
+ {/each} +
+
+ {/if} + + +
+ +
+
+ {#each availableTags.filter((tag) => !selectedTags.includes(tag) && (tagFilterSearch === '' || tag + .toLowerCase() + .includes(tagFilterSearch.toLowerCase()))) as tag (tag)} + +
e.stopPropagation()}> + { + if (!selectedTags.includes(tag)) { + selectedTags = [...selectedTags, tag]; + } + }} + ariaLabel="Select {tag}" + /> +
+ {/each} +
+
+
+ + +
+
+
+{/snippet} + + + + {#snippet children()} +
+
+ +
+
+ {/snippet} +
+ + + + {#snippet children()} +
+
+ +
+
+ {/snippet} +
+ + + + {#snippet children()} +
+
+ +
+
+ {/snippet} +
+ + + + {#snippet children()} + {#snippet customFilterContent()} +
+ +
+ { + appliedCategory = (e.target as HTMLSelectElement).value; + }} + /> +
+
+
+
+ {/snippet} +
+
+ + + + {#if appliedStatus !== 'all' || appliedCategory !== 'all'} +
+
+ +
+ +
+ {#if appliedStatus !== 'all'} + + {/if} + {#if appliedCategory !== 'all'} + + {/if} +
+
+ {:else} +
+ +
+ {/if} +
+ + + {#if showFiltersApplyToast} + { + showFiltersApplyToast = false; + }} + /> + {/if} + + {#if showFiltersResetToast} + { + showFiltersResetToast = false; + }} + /> + {/if} +
+ {/snippet} +
+ + + + {#snippet children()} +
+
+ +
+
+ {/snippet} +
+ + + + {#snippet children()} + {#snippet customTagFilterContent()} +
+ + + +
+ { + tagFilterSearch = (e.target as HTMLInputElement).value; + }} + ariaLabel="Search tags" + class="w-full" + /> +
+ + + {#if selectedTags.length > 0} +
+ +
+ {#each selectedTags as tag (tag)} + { + selectedTags = selectedTags.filter((t) => t !== tag); + }} + removeLabel="Remove {tag}" + /> + {/each} +
+
+ {/if} + + +
+ +
+
+ {#each availableTags.filter((tag) => !selectedTags.includes(tag) && (tagFilterSearch === '' || tag + .toLowerCase() + .includes(tagFilterSearch.toLowerCase()))) as tag (tag)} + { + if (!selectedTags.includes(tag)) { + selectedTags = [...selectedTags, tag]; + } + }} + ariaLabel="Select {tag}" + /> + {/each} +
+
+
+ + +
+
+
+ {/snippet} +
+
+ + + + {#if appliedTags.length > 0} +
+
+ + + + +
+ +
+ {#each appliedTags as tag (tag)} + + {/each} +
+
+ {:else} +
+ +
+ {/if} +
+ + + {#if showApplyToast} + 0 + ? `Applied ${appliedTags.length} filter${appliedTags.length > 1 ? 's' : ''}` + : 'No filters selected'} + variant="success" + position="top-right" + duration={3000} + showIcon={true} + closable={true} + onDismiss={() => { + showApplyToast = false; + }} + /> + {/if} + + {#if showClearToast} + { + showClearToast = false; + }} + /> + {/if} +
+ {/snippet} +
+ + + + {#snippet children()} +
+
+ +
+
+ {/snippet} +
+ + + + {#snippet children()} +
+
+ +
+
+ {/snippet} +
+ + + + {#snippet children()} +
+
+ +
+
+ {/snippet} +
+ + + + {#snippet children()} +
+
+ +
+
+ {/snippet} +
+ + + + {#snippet children()} +
+
+ +
+
+ {/snippet} +
diff --git a/hexawebshare/src/components/admin/crud-data/DataTableToolbar.svelte b/hexawebshare/src/components/admin/crud-data/DataTableToolbar.svelte index 315da07..ed6e875 100644 --- a/hexawebshare/src/components/admin/crud-data/DataTableToolbar.svelte +++ b/hexawebshare/src/components/admin/crud-data/DataTableToolbar.svelte @@ -2,3 +2,788 @@ SPDX-FileCopyrightText: 2025 hexaTune LLC SPDX-License-Identifier: MIT --> + + + + + + +