11<script >
2- import { Meta , Template , Story } from ' @storybook/addon-svelte-csf'
2+ import { Meta , Story } from ' @storybook/addon-svelte-csf'
33import { Datatable , isAboveMobile , isAboveTablet , Progress } from ' ../components/mdc'
4- import { copyAndModifyArgs } from ' ./helpers.js'
54import { onMount } from ' svelte'
65
76const args = {
87 class: ' ' , // only works for global classes
9- onSorted : () => {},
10- clickable: false ,
8+ ' on:sorted ' : (e ) => alert (' you sorted the table' ),
9+ ' on:selectedAll ' : (e ) => alert (' you selected all rows' ),
10+ ' on:unselectedAll ' : (e ) => alert (' you unselected all rows' ),
11+ ' on:rowSelectionChanged ' : (e ) => alert (` row ${ e .detail .rowId } was ${ e .detail .selected ? ' selected' : ' unselected' } ` ),
12+ ' on:click ' : (e ) => alert (` you clicked on row ${ e .detail } ` ),
1113}
1214
1315let loaded = false
16+ let numberOfCheckboxes = 0
1417
1518onMount (() =>
1619 setTimeout (() => {
@@ -19,10 +22,23 @@ onMount(() =>
1922)
2023 </script >
2124
22- <Meta title ="Molecule/Datatable" component ={Datatable } />
25+ <Meta
26+ title =" Molecule/Datatable"
27+ component ={Datatable }
28+ argTypes ={{
29+ label : { control : ' text' },
30+ clickable : { control : ' boolean' },
31+ }}
32+ />
2333
24- <Template let:args >
25- <Datatable {...args } on:sorted ={args .onSorted }>
34+ <Story name ="Default" {args }>
35+ <Datatable
36+ class ={args .class }
37+ on:sorted ={args [' on:sorted' ]}
38+ on:rowSelectionChanged ={args [' on:rowSelectionChanged' ]}
39+ on:unselectedAll ={args [' on:unselectedAll' ]}
40+ on:selectedAll ={args [' on:selectedAll' ]}
41+ >
2642 <Datatable .Header >
2743 <Datatable .Header .Item class ={isAboveTablet () ? ' w-50' : ' ' }>Name</Datatable .Header .Item >
2844 <Datatable .Header .Item >Date</Datatable .Header .Item >
@@ -51,10 +67,118 @@ onMount(() =>
5167 </Datatable .Data .Row >
5268 </Datatable .Data >
5369 </Datatable >
54- </Template >
70+ </Story >
5571
56- <Story name ="Default" {args } />
72+ <Story name ="Checkbox" {args }>
73+ <Datatable
74+ {numberOfCheckboxes }
75+ class ={args .class }
76+ on:sorted ={args [' on:sorted' ]}
77+ on:rowSelectionChanged ={args [' on:rowSelectionChanged' ]}
78+ on:unselectedAll ={args [' on:unselectedAll' ]}
79+ on:selectedAll ={args [' on:selectedAll' ]}
80+ >
81+ <Datatable .Header >
82+ <Datatable .Header .Checkbox />
83+ <Datatable .Header .Item class ={isAboveTablet () ? ' w-50' : ' ' }>Name</Datatable .Header .Item >
84+ <Datatable .Header .Item >Date</Datatable .Header .Item >
85+ </Datatable .Header >
86+
87+ <Datatable .Data >
88+ <Datatable .Data .Row clickable ={args .clickable } let:rowId >
89+ <Datatable .Checkbox on:mounted ={() => numberOfCheckboxes ++ } {rowId } />
90+ <Datatable .Data .Row .Item >item</Datatable .Data .Row .Item >
91+ <Datatable .Data .Row .Item >today</Datatable .Data .Row .Item >
92+ </Datatable .Data .Row >
93+
94+ <Datatable .Data .Row >
95+ <Datatable .Checkbox on:mounted ={() => numberOfCheckboxes ++ } />
96+ <Datatable .Data .Row .Item >item2</Datatable .Data .Row .Item >
97+ <Datatable .Data .Row .Item >tomorrow</Datatable .Data .Row .Item >
98+ </Datatable .Data .Row >
99+
100+ <Datatable .Data .Row >
101+ <Datatable .Checkbox on:mounted ={() => numberOfCheckboxes ++ } />
102+ <Datatable .Data .Row .Item colspan ={isAboveMobile () ? 6 : 2 }>
103+ {#if loaded }
104+ Done loading
105+ {:else }
106+ Loading...
107+ <Progress .Linear barColorProvided ={false } indeterminate />
108+ {/if }
109+ </Datatable .Data .Row .Item >
110+ </Datatable .Data .Row >
111+ </Datatable .Data >
112+ </Datatable >
113+ </Story >
114+
115+ <Story name =" Label" >
116+ <Datatable
117+ class ={args .class }
118+ label ={' Label' }
119+ on:sorted ={args [' on:sorted' ]}
120+ on:rowSelectionChanged ={args [' on:rowSelectionChanged' ]}
121+ on:unselectedAll ={args [' on:unselectedAll' ]}
122+ on:selectedAll ={args [' on:selectedAll' ]}
123+ >
124+ <Datatable .Header >
125+ <Datatable .Header .Item class ={isAboveTablet () ? ' w-50' : ' ' }>Name</Datatable .Header .Item >
126+ <Datatable .Header .Item >Date</Datatable .Header .Item >
127+ </Datatable .Header >
128+
129+ <Datatable .Data >
130+ <Datatable .Data .Row clickable ={args .clickable }>
131+ <Datatable .Data .Row .Item >item</Datatable .Data .Row .Item >
132+ <Datatable .Data .Row .Item >today</Datatable .Data .Row .Item >
133+ </Datatable .Data .Row >
134+
135+ <Datatable .Data .Row >
136+ <Datatable .Data .Row .Item >item2</Datatable .Data .Row .Item >
137+ <Datatable .Data .Row .Item >tomorrow</Datatable .Data .Row .Item >
138+ </Datatable .Data .Row >
139+
140+ <Datatable .Data .Row >
141+ <Datatable .Data .Row .Item colspan ={isAboveMobile () ? 6 : 2 }>
142+ {#if loaded }
143+ Done loading
144+ {:else }
145+ Loading...
146+ <Progress .Linear barColorProvided ={false } indeterminate />
147+ {/if }
148+ </Datatable .Data .Row .Item >
149+ </Datatable .Data .Row >
150+ </Datatable .Data >
151+ </Datatable >
152+ </Story >
153+
154+ <Story name =" Clickable row" >
155+ <Datatable class ={args .class } on:sorted ={args [' on:sorted' ]}>
156+ <Datatable .Header >
157+ <Datatable .Header .Item class ={isAboveTablet () ? ' w-50' : ' ' }>Name</Datatable .Header .Item >
158+ <Datatable .Header .Item >Date</Datatable .Header .Item >
159+ </Datatable .Header >
160+
161+ <Datatable .Data >
162+ <Datatable .Data .Row on:click ={args [' on:click' ]} clickable =" true}" >
163+ <Datatable .Data .Row .Item >item</Datatable .Data .Row .Item >
164+ <Datatable .Data .Row .Item >today</Datatable .Data .Row .Item >
165+ </Datatable .Data .Row >
57166
58- <Story name ="Label" args ={copyAndModifyArgs (args , { label: ' label' })} />
167+ <Datatable .Data .Row on:click ={args [' on:click' ]} clickable =" true}" >
168+ <Datatable .Data .Row .Item >item2</Datatable .Data .Row .Item >
169+ <Datatable .Data .Row .Item >tomorrow</Datatable .Data .Row .Item >
170+ </Datatable .Data .Row >
59171
60- <Story name ="Clickable row" args ={copyAndModifyArgs (args , { clickable: ' true' })} />
172+ <Datatable .Data .Row on:click ={args [' on:click' ]} clickable =" true}" >
173+ <Datatable .Data .Row .Item colspan ={isAboveMobile () ? 6 : 2 }>
174+ {#if loaded }
175+ Done loading
176+ {:else }
177+ Loading...
178+ <Progress .Linear barColorProvided ={false } indeterminate />
179+ {/if }
180+ </Datatable .Data .Row .Item >
181+ </Datatable .Data .Row >
182+ </Datatable .Data >
183+ </Datatable >
184+ </Story >
0 commit comments