diff --git a/src/lib/components/ComponentIndex/Card.svelte b/src/lib/components/ComponentIndex/Card.svelte index 151d10c..baecdc7 100644 --- a/src/lib/components/ComponentIndex/Card.svelte +++ b/src/lib/components/ComponentIndex/Card.svelte @@ -1,5 +1,7 @@ diff --git a/src/routes/components/index.svelte b/src/routes/components/index.svelte index 9935ed3..823cdd4 100644 --- a/src/routes/components/index.svelte +++ b/src/routes/components/index.svelte @@ -7,16 +7,15 @@ import Button from '$components/ComponentIndex/ArrowButton.svelte'; import components from './components.json'; import { compare, selectSortItems } from '$lib/utils/sort'; + import { extractUnique } from '$lib/utils/extractUnique'; import Select from '$components/Select.svelte'; let searchValue; - const tags = Array.from(new Set(components.map((item) => item.tags).flat())); - const tagItems = tags.map((t) => ({ label: t, value: t })); + const tagItems = extractUnique(components, 'tags'); let filterTag = []; let selectedTags = null; - const allCategories = Array.from(new Set(components.map((item) => item.category).flat())); const categoryItems = [ { label: 'All', value: null }, - ...allCategories.filter((cat) => cat !== '').map((cat) => ({ label: cat, value: cat })) + ...extractUnique(components, 'category').filter((cat) => cat.value !== '') ]; let selectedCategory = null; let filterCategory = null; @@ -45,7 +44,7 @@ return true; }) .sort(compare(sorting)); - $: categories = Array.from(new Set(dataToDisplay.map((item) => item.category))); + $: categories = extractUnique(dataToDisplay, 'category'); $: filterTag = selectedTags?.map((obj) => obj.value) || []; @@ -101,8 +100,8 @@
{#each categories as category} - - {#each dataToDisplay.filter((d) => d.category === category) as data} + + {#each dataToDisplay.filter((d) => d.category === category.value) as data} {/each} diff --git a/src/routes/templates/index.svelte b/src/routes/templates/index.svelte index d3eed4a..ab12f58 100644 --- a/src/routes/templates/index.svelte +++ b/src/routes/templates/index.svelte @@ -3,21 +3,17 @@ import List from '$lib/components/ComponentIndex/CardList.svelte'; import components from './templates.json'; import { compare, selectSortItems } from '$lib/utils/sort'; + import { extractUnique } from '$lib/utils/extractUnique'; import Select from '$lib/components/Select.svelte'; import SearchLayout from '$lib/layouts/SearchLayout.svelte'; let searchValue; - const tags = Array.from(new Set(components.map((item) => item.tags).flat())); - const tagItems = tags.map((t) => ({ label: t, value: t })); + const tagItems = extractUnique(components, 'tags'); let filterTag = []; let selectedTags = null; - const allCategories = Array.from(new Set(components.map((item) => item.category).flat())); - const categoryItems = [ - { label: 'all', value: null }, - ...allCategories.map((cat) => ({ label: cat, value: cat })) - ]; + const categoryItems = [{ label: 'all', value: null }, ...extractUnique(components, 'category')]; let selectedCategory = null; let filterCategory = null; @@ -49,7 +45,7 @@ }) .sort(compare(sorting)); - $: categories = Array.from(new Set(dataToDisplay.map((item) => item.category))); + $: categories = extractUnique(dataToDisplay, 'category'); $: filterTag = selectedTags?.map((obj) => obj.value) || []; @@ -92,8 +88,8 @@
{#each categories as category} - - {#each dataToDisplay.filter((d) => d.category === category) as data} + + {#each dataToDisplay.filter((d) => d.category === category.value) as data} {/each} diff --git a/src/routes/tooling/index.svelte b/src/routes/tooling/index.svelte index 8c6ec0b..ef4a535 100644 --- a/src/routes/tooling/index.svelte +++ b/src/routes/tooling/index.svelte @@ -4,20 +4,17 @@ import SearchLayout from '$layouts/SearchLayout.svelte'; import tools from './tools.json'; import Select from '$lib/components/Select.svelte'; + import { extractUnique } from '$lib/utils/extractUnique'; import { compare, selectSortItems } from '$lib/utils/sort'; + import components from '../templates/templates.json'; let searchValue; - const tags = Array.from(new Set(tools.map((item) => item.tags).flat())); - const tagItems = tags.map((t) => ({ label: t, value: t })); + const tagItems = extractUnique(tools, 'tags'); let filterTag = []; let selectedTags = null; - const allCategories = Array.from(new Set(tools.map((item) => item.category).flat())); - const categoryItems = [ - { label: 'all', value: null }, - ...allCategories.map((cat) => ({ label: cat, value: cat })) - ]; + const categoryItems = [{ label: 'all', value: null }, ...extractUnique(components, 'category')]; let selectedCategory = null; let filterCategory = null; @@ -48,7 +45,7 @@ }) .sort(compare(sorting)); - $: categories = Array.from(new Set(dataToDisplay.map((item) => item.category))); + $: categories = extractUnique(dataToDisplay, 'category'); $: filterTag = selectedTags?.map((obj) => obj.value) || []; @@ -90,8 +87,8 @@
{#each categories as category} - - {#each dataToDisplay.filter((d) => d.category === category) as data} + + {#each dataToDisplay.filter((d) => d.category === category.value) as data} {/each}