From eada54c69d473beb7496ae6b428653e88b183878 Mon Sep 17 00:00:00 2001 From: Adan Ulloa Date: Wed, 22 Jan 2020 10:13:09 -0600 Subject: [PATCH] chore(components): add untracked files --- .../DataTable/DataTable.Story.svelte | 152 ++++++++++++++++++ src/components/DataTable/DataTable.stories.js | 35 ++++ src/components/DataTable/DataTable.svelte | 118 ++++++++++++++ src/components/DataTable/Table.svelte | 28 ++++ src/components/DataTable/TableBody.svelte | 9 ++ src/components/DataTable/TableCell.svelte | 9 ++ .../DataTable/TableContainer.svelte | 22 +++ src/components/DataTable/TableHead.svelte | 9 ++ src/components/DataTable/TableHeader.svelte | 47 ++++++ src/components/DataTable/index.js | 3 + 10 files changed, 432 insertions(+) create mode 100644 src/components/DataTable/DataTable.Story.svelte create mode 100644 src/components/DataTable/DataTable.stories.js create mode 100644 src/components/DataTable/DataTable.svelte create mode 100644 src/components/DataTable/Table.svelte create mode 100644 src/components/DataTable/TableBody.svelte create mode 100644 src/components/DataTable/TableCell.svelte create mode 100644 src/components/DataTable/TableContainer.svelte create mode 100644 src/components/DataTable/TableHead.svelte create mode 100644 src/components/DataTable/TableHeader.svelte create mode 100644 src/components/DataTable/index.js diff --git a/src/components/DataTable/DataTable.Story.svelte b/src/components/DataTable/DataTable.Story.svelte new file mode 100644 index 00000000..e1640bdc --- /dev/null +++ b/src/components/DataTable/DataTable.Story.svelte @@ -0,0 +1,152 @@ + + + + {#if story === 'composed'} + + + + + + {#each props.headers as header, i (header.key)} + {header.header} + {/each} + + + + {#each props.rows as row, i} + + {#each row.cells as cell, j} + {cell.value} + {/each} + + {/each} + +
+
+
+ {:else if story === 'sortable'} + { + console.log('on:click', detail); + }} + on:click:header={({ detail }) => { + console.log('on:click:header', detail); + }} + on:click:row={({ detail }) => { + console.log('on:click:row', detail); + }} + on:click:cell={({ detail }) => { + console.log('on:click:cell', detail); + }} + {rows} + {headers} /> + {:else} + { + console.log('on:click', detail); + }} + on:click:header={({ detail }) => { + console.log('on:click:header', detail); + }} + on:click:row={({ detail }) => { + console.log('on:click:row', detail); + }} + on:click:cell={({ detail }) => { + console.log('on:click:cell', detail); + }} + {rows} + {headers} /> + {/if} +
diff --git a/src/components/DataTable/DataTable.stories.js b/src/components/DataTable/DataTable.stories.js new file mode 100644 index 00000000..dbf2de70 --- /dev/null +++ b/src/components/DataTable/DataTable.stories.js @@ -0,0 +1,35 @@ +import { withKnobs, boolean, select, text } from '@storybook/addon-knobs'; +import Component from './DataTable.Story.svelte'; + +export default { title: 'DataTable', decorators: [withKnobs] }; + +export const Default = () => ({ + Component, + props: { + title: text('Optional DataTable title (title)', ''), + description: text('Optional DataTable description (description)', ''), + zebra: boolean('Zebra row styles (zebra)', false), + size: select( + 'Row height (size)', + { compact: 'compact', short: 'short', tall: 'tall', none: null }, + null + ), + stickyHeader: boolean('Sticky header (experimental)', false) + } +}); + +export const Sortable = () => ({ + Component, + props: { + story: 'sortable', + title: text('Optional DataTable title (title)', ''), + description: text('Optional DataTable description (description)', ''), + zebra: boolean('Zebra row styles (zebra)', false), + size: select( + 'Row height (size)', + { compact: 'compact', short: 'short', tall: 'tall', none: null }, + null + ), + stickyHeader: boolean('Sticky header (experimental)', false) + } +}); diff --git a/src/components/DataTable/DataTable.svelte b/src/components/DataTable/DataTable.svelte new file mode 100644 index 00000000..fe8cda3d --- /dev/null +++ b/src/components/DataTable/DataTable.svelte @@ -0,0 +1,118 @@ + + + + + + + + {#each headers as header, i (header.key)} + { + dispatch('click', { header }); + dispatch('click:header', header); + let active = header.key === $sortHeader.key; + let currentSortDirection = active ? $sortHeader.sortDirection : 'none'; + let sortDirection = sortDirectionMap[currentSortDirection]; + sortHeader.set({ + id: sortDirection === 'none' ? null : $thKeys[header.key], + key: header.key, + sortDirection + }); + }}> + {header.value} + + {/each} + + + + {#each sorting ? sortedRows : rows as row, i (row.id)} + { + dispatch('click', { row }); + dispatch('click:row', row); + }}> + {#each row.cells as cell, j (cell.key)} + { + dispatch('click', { row, cell }); + dispatch('click:cell', cell); + }}> + {cell.value} + + {/each} + + {/each} + +
+
+
diff --git a/src/components/DataTable/Table.svelte b/src/components/DataTable/Table.svelte new file mode 100644 index 00000000..910aaa86 --- /dev/null +++ b/src/components/DataTable/Table.svelte @@ -0,0 +1,28 @@ + + +{#if stickyHeader} +
+ + +
+
+{:else} + + +
+{/if} diff --git a/src/components/DataTable/TableBody.svelte b/src/components/DataTable/TableBody.svelte new file mode 100644 index 00000000..fcb38748 --- /dev/null +++ b/src/components/DataTable/TableBody.svelte @@ -0,0 +1,9 @@ + + + + + diff --git a/src/components/DataTable/TableCell.svelte b/src/components/DataTable/TableCell.svelte new file mode 100644 index 00000000..1d3e93cd --- /dev/null +++ b/src/components/DataTable/TableCell.svelte @@ -0,0 +1,9 @@ + + + + + diff --git a/src/components/DataTable/TableContainer.svelte b/src/components/DataTable/TableContainer.svelte new file mode 100644 index 00000000..5d5adc3d --- /dev/null +++ b/src/components/DataTable/TableContainer.svelte @@ -0,0 +1,22 @@ + + +
+ {#if title} +
+

{title}

+

{description}

+
+ {/if} + +
diff --git a/src/components/DataTable/TableHead.svelte b/src/components/DataTable/TableHead.svelte new file mode 100644 index 00000000..522cd18b --- /dev/null +++ b/src/components/DataTable/TableHead.svelte @@ -0,0 +1,9 @@ + + + + + diff --git a/src/components/DataTable/TableHeader.svelte b/src/components/DataTable/TableHeader.svelte new file mode 100644 index 00000000..b73fd21f --- /dev/null +++ b/src/components/DataTable/TableHeader.svelte @@ -0,0 +1,47 @@ + + +{#if $tableSortable} + + + +{:else} + + + + + +{/if} diff --git a/src/components/DataTable/index.js b/src/components/DataTable/index.js new file mode 100644 index 00000000..8ba91f9b --- /dev/null +++ b/src/components/DataTable/index.js @@ -0,0 +1,3 @@ +import DataTable from './DataTable.svelte'; + +export default DataTable;