From a1085893b80481e14e658bc10eac7383b3b37a18 Mon Sep 17 00:00:00 2001 From: palewire Date: Mon, 3 Apr 2023 08:08:14 -0400 Subject: [PATCH] Broke out a Select component --- src/components/@types/global.ts | 8 ++ src/components/Table/Select.svelte | 78 +++++++++++++++++++ src/components/Table/Table.stories.svelte | 7 +- src/components/Table/Table.svelte | 73 ++++++----------- src/components/Table/stories/docs/both.md | 12 +-- src/components/Table/stories/docs/filter.md | 9 ++- src/components/Table/stories/docs/format.md | 20 ++--- src/components/Table/stories/docs/paginate.md | 2 +- src/components/Table/stories/docs/search.md | 10 +-- src/components/Table/utils.js | 11 +++ 10 files changed, 155 insertions(+), 75 deletions(-) create mode 100644 src/components/Table/Select.svelte diff --git a/src/components/@types/global.ts b/src/components/@types/global.ts index e07b0b5e..d5f7d5c8 100644 --- a/src/components/@types/global.ts +++ b/src/components/@types/global.ts @@ -1,5 +1,13 @@ import type { ComponentType } from 'svelte'; +/** + * Used for the list of + {/each} + + + + diff --git a/src/components/Table/Table.stories.svelte b/src/components/Table/Table.stories.svelte index f4796c92..c0989d1a 100644 --- a/src/components/Table/Table.stories.svelte +++ b/src/components/Table/Table.stories.svelte @@ -129,7 +129,8 @@ filterField: 'Region', paginated: true, title: 'Press Freedom Index', - notes: + dek: 'Reporters Without Borders ranks countries based on their level of press freedom using criteria such as the degree of media pluralism and violence against journalists.', + source: "Source: Reporters Without Borders", }}" /> @@ -155,11 +156,11 @@ args="{{ data: richestWomen, title: 'The Richest Women in the World', - notes: + source: "Source: Forbes", sortable: true, sortField: 'Net worth (in billions)', sortDirection: 'descending', - fieldFormatters: { 'Net worth (in billions)': (v) => '$' + v }, + fieldFormatters: { 'Net worth (in billions)': (v) => '$' + v.toFixed(1) }, }}" /> diff --git a/src/components/Table/Table.svelte b/src/components/Table/Table.svelte index 9b8e5dc6..67273831 100644 --- a/src/components/Table/Table.svelte +++ b/src/components/Table/Table.svelte @@ -128,11 +128,12 @@ import Block from '../Block/Block.svelte'; import Pagination from './Pagination.svelte'; import Search from './Search.svelte'; + import Select from './Select.svelte'; import SortArrow from './SortArrow.svelte'; import { filterArray, paginateArray, - uniqueAttr, + getOptions, isNumeric, } from './utils.js'; @@ -140,9 +141,7 @@ let showAll = false; let pageNumber = 1; let searchText = ''; - const filterList = filterField - ? uniqueAttr(data, filterField).sort((a, b) => a.localeCompare(b)) - : undefined; + const filterList = filterField ? getOptions(data, filterField) : undefined; let filterValue = ''; $: filteredData = filterArray(data, searchText, filterField, filterValue); $: sortedData = sortArray(filteredData, sortField, sortDirection); @@ -174,8 +173,8 @@ } function handleFilterInput(event) { - const value = event.target.value; - filterValue = value === 'all' ? '' : value; + const value = event.detail.value; + filterValue = value === 'All' ? '' : value; pageNumber = 1; } @@ -239,31 +238,21 @@ {/if} {#if searchable || filterList}
- {#if searchable} - - {/if} {#if filterList} - {#if searchable}
{/if} -
- - +
+