@dhis2-ui/table 10.16.2 → 10.16.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/package.json +5 -4
  2. package/src/data-table/__tests__/data-table-cell.test.js +168 -0
  3. package/src/data-table/__tests__/data-table-column-header/filter-handle.test.js +43 -0
  4. package/src/data-table/__tests__/data-table-column-header/sorter.test.js +41 -0
  5. package/src/data-table/__tests__/data-table-column-header.test.js +227 -0
  6. package/src/data-table/__tests__/data-table-row/expand-handle-cell.js +32 -0
  7. package/src/data-table/__tests__/data-table-row/expanded-row.test.js +57 -0
  8. package/src/data-table/__tests__/data-table-row.test.js +162 -0
  9. package/src/data-table/__tests__/data-table.test.js +85 -0
  10. package/src/data-table/data-table-body.js +3 -0
  11. package/src/data-table/data-table-cell.js +111 -0
  12. package/src/data-table/data-table-column-header/data-table-column-header.js +130 -0
  13. package/src/data-table/data-table-column-header/data-table-column-header.styles.js +30 -0
  14. package/src/data-table/data-table-column-header/filter-handle.js +30 -0
  15. package/src/data-table/data-table-column-header/sorter.js +67 -0
  16. package/src/data-table/data-table-foot.js +3 -0
  17. package/src/data-table/data-table-head.js +3 -0
  18. package/src/data-table/data-table-row/data-table-row.js +103 -0
  19. package/src/data-table/data-table-row/data-table-row.styles.js +20 -0
  20. package/src/data-table/data-table-row/drag-handle-cell.js +9 -0
  21. package/src/data-table/data-table-row/expand-handle-cell.js +28 -0
  22. package/src/data-table/data-table-row/expanded-row.js +51 -0
  23. package/src/data-table/data-table-toolbar.js +3 -0
  24. package/src/data-table/data-table.e2e.stories.js +192 -0
  25. package/src/data-table/data-table.js +75 -0
  26. package/src/data-table/data-table.prod.stories.js +1342 -0
  27. package/src/data-table/features/can_scroll/index.js +48 -0
  28. package/src/data-table/features/can_scroll.feature +31 -0
  29. package/src/data-table/index.js +8 -0
  30. package/src/data-table/table-elements/__tests__/table-body.test.js +40 -0
  31. package/src/data-table/table-elements/__tests__/table-data-cell.test.js +123 -0
  32. package/src/data-table/table-elements/__tests__/table-foot.test.js +40 -0
  33. package/src/data-table/table-elements/__tests__/table-head.test.js +40 -0
  34. package/src/data-table/table-elements/__tests__/table-header-cell-action.test.js +46 -0
  35. package/src/data-table/table-elements/__tests__/table-header-cell.test.js +130 -0
  36. package/src/data-table/table-elements/__tests__/table-row.test.js +52 -0
  37. package/src/data-table/table-elements/__tests__/table-scroll-box.test.js +40 -0
  38. package/src/data-table/table-elements/__tests__/table-toolbar.test.js +44 -0
  39. package/src/data-table/table-elements/__tests__/table.test.js +53 -0
  40. package/src/data-table/table-elements/features/can_scroll/index.js +42 -0
  41. package/src/data-table/table-elements/features/can_scroll.feature +31 -0
  42. package/src/data-table/table-elements/index.js +10 -0
  43. package/src/data-table/table-elements/table-body.js +75 -0
  44. package/src/data-table/table-elements/table-data-cell/table-data-cell.js +126 -0
  45. package/src/data-table/table-elements/table-data-cell/table-data-cell.styles.js +42 -0
  46. package/src/data-table/table-elements/table-foot.js +35 -0
  47. package/src/data-table/table-elements/table-head.js +26 -0
  48. package/src/data-table/table-elements/table-header-cell/table-header-cell.js +121 -0
  49. package/src/data-table/table-elements/table-header-cell/table-header-cell.styles.js +71 -0
  50. package/src/data-table/table-elements/table-header-cell-action.js +62 -0
  51. package/src/data-table/table-elements/table-row.js +52 -0
  52. package/src/data-table/table-elements/table-scroll-box.js +41 -0
  53. package/src/data-table/table-elements/table-toolbar.js +50 -0
  54. package/src/data-table/table-elements/table.e2e.stories.js +190 -0
  55. package/src/data-table/table-elements/table.js +70 -0
  56. package/src/data-table/table-elements/table.stories.internal.js +1144 -0
  57. package/src/index.js +32 -0
  58. package/src/locales/ar/translations.json +4 -0
  59. package/src/locales/cs/translations.json +4 -0
  60. package/src/locales/en/translations.json +4 -0
  61. package/src/locales/es/translations.json +4 -0
  62. package/src/locales/es_419/translations.json +4 -0
  63. package/src/locales/fr/translations.json +4 -0
  64. package/src/locales/index.js +44 -0
  65. package/src/locales/km/translations.json +4 -0
  66. package/src/locales/lo/translations.json +4 -0
  67. package/src/locales/nb/translations.json +4 -0
  68. package/src/locales/nl/translations.json +4 -0
  69. package/src/locales/pt/translations.json +4 -0
  70. package/src/locales/ru/translations.json +4 -0
  71. package/src/locales/uk/translations.json +4 -0
  72. package/src/locales/uz_UZ_Cyrl/translations.json +4 -0
  73. package/src/locales/zh/translations.json +4 -0
  74. package/src/stacked-table/add-col-num-to-children.js +16 -0
  75. package/src/stacked-table/content-with-title.js +40 -0
  76. package/src/stacked-table/extract-header-labels.js +99 -0
  77. package/src/stacked-table/index.js +8 -0
  78. package/src/stacked-table/stacked-table-body.js +23 -0
  79. package/src/stacked-table/stacked-table-cell-head.js +39 -0
  80. package/src/stacked-table/stacked-table-cell.js +60 -0
  81. package/src/stacked-table/stacked-table-foot.js +24 -0
  82. package/src/stacked-table/stacked-table-head.js +23 -0
  83. package/src/stacked-table/stacked-table-row-head.js +19 -0
  84. package/src/stacked-table/stacked-table-row.js +50 -0
  85. package/src/stacked-table/stacked-table.js +33 -0
  86. package/src/stacked-table/stacked-table.prod.stories.js +463 -0
  87. package/src/stacked-table/stacked-table.test.js +127 -0
  88. package/src/stacked-table/supply-header-labels-to-children.js +7 -0
  89. package/src/stacked-table/table-context.js +4 -0
  90. package/src/stacked-table/table.js +28 -0
  91. package/src/table/index.js +8 -0
  92. package/src/table/table-body.js +21 -0
  93. package/src/table/table-cell-head.js +56 -0
  94. package/src/table/table-cell.js +56 -0
  95. package/src/table/table-context.js +7 -0
  96. package/src/table/table-foot.js +21 -0
  97. package/src/table/table-head.js +21 -0
  98. package/src/table/table-row-head.js +30 -0
  99. package/src/table/table-row.js +51 -0
  100. package/src/table/table.js +41 -0
  101. package/src/table/table.prod.stories.js +724 -0
@@ -0,0 +1,1342 @@
1
+ import { Box } from '@dhis2-ui/box'
2
+ import { Checkbox } from '@dhis2-ui/checkbox'
3
+ import { Input } from '@dhis2-ui/input'
4
+ import React, { useState } from 'react'
5
+ import { DataTableBody } from './data-table-body.js'
6
+ import { DataTableCell } from './data-table-cell.js'
7
+ import { DataTableColumnHeader } from './data-table-column-header/data-table-column-header.js'
8
+ import { DataTableFoot } from './data-table-foot.js'
9
+ import { DataTableHead } from './data-table-head.js'
10
+ import { DataTableRow } from './data-table-row/data-table-row.js'
11
+ import { DataTableToolbar } from './data-table-toolbar.js'
12
+ import { DataTable } from './data-table.js'
13
+
14
+ const subtitle = 'Used to display information in a standard, effective way.'
15
+
16
+ const description = `
17
+ Should be used with multiple DataTable-related child components - see the datatable and examples below.
18
+
19
+ \`\`\`js
20
+ import {
21
+ DataTable,
22
+ DataTableToolbar,
23
+ DataTableHead,
24
+ DataTableBody,
25
+ DataTableFoot,
26
+ DataTableRow,
27
+ DataTableCell,
28
+ DataTableColumnHeader,
29
+ } from '@dhis2/ui'
30
+ \`\`\`
31
+ `
32
+
33
+ export default {
34
+ title: 'DataTable',
35
+ component: DataTable,
36
+ // Add subcomponents to the args datatable
37
+ subcomponents: {
38
+ DataTableToolbar,
39
+ DataTableHead,
40
+ DataTableBody,
41
+ DataTableFoot,
42
+ DataTableRow,
43
+ DataTableCell,
44
+ DataTableColumnHeader,
45
+ },
46
+ parameters: {
47
+ componentSubtitle: subtitle,
48
+ docs: { description: { component: description } },
49
+ },
50
+ argTypes: {
51
+ // hide control from `children` because that can't be live edited
52
+ children: { control: { disable: true } },
53
+ // hide child component controls completely to avoid confusion
54
+ bordered: { datatable: { disable: true } },
55
+ large: { datatable: { disable: true } },
56
+ draggable: { datatable: { disable: true } },
57
+ },
58
+ }
59
+
60
+ const BasicTemplate = ({ bordered, large, draggable, bodyProps, ...args }) => (
61
+ <DataTable {...args}>
62
+ <DataTableHead>
63
+ <DataTableRow>
64
+ {draggable && <DataTableColumnHeader large={large} />}
65
+ <DataTableColumnHeader large={large}>
66
+ First name
67
+ </DataTableColumnHeader>
68
+ <DataTableColumnHeader large={large}>
69
+ Last name
70
+ </DataTableColumnHeader>
71
+ <DataTableColumnHeader large={large}>
72
+ Incident date
73
+ </DataTableColumnHeader>
74
+ <DataTableColumnHeader large={large}>
75
+ Last updated
76
+ </DataTableColumnHeader>
77
+ </DataTableRow>
78
+ </DataTableHead>
79
+ <DataTableBody {...bodyProps}>
80
+ <DataTableRow draggable={draggable}>
81
+ <DataTableCell large={large} bordered={bordered}>
82
+ Onyekachukwu
83
+ </DataTableCell>
84
+ <DataTableCell large={large} bordered={bordered}>
85
+ Kariuki
86
+ </DataTableCell>
87
+ <DataTableCell large={large} bordered={bordered}>
88
+ 02/06/2007
89
+ </DataTableCell>
90
+ <DataTableCell large={large} bordered={bordered}>
91
+ 05/25/1972
92
+ </DataTableCell>
93
+ </DataTableRow>
94
+ <DataTableRow draggable={draggable}>
95
+ <DataTableCell large={large} bordered={bordered}>
96
+ Kwasi
97
+ </DataTableCell>
98
+ <DataTableCell large={large} bordered={bordered}>
99
+ Okafor
100
+ </DataTableCell>
101
+ <DataTableCell large={large} bordered={bordered}>
102
+ 08/11/2010
103
+ </DataTableCell>
104
+ <DataTableCell large={large} bordered={bordered}>
105
+ 02/26/1991
106
+ </DataTableCell>
107
+ </DataTableRow>
108
+ <DataTableRow draggable={draggable}>
109
+ <DataTableCell large={large} bordered={bordered}>
110
+ Siyabonga
111
+ </DataTableCell>
112
+ <DataTableCell large={large} bordered={bordered}>
113
+ Abiodun
114
+ </DataTableCell>
115
+ <DataTableCell large={large} bordered={bordered}>
116
+ 07/21/1981
117
+ </DataTableCell>
118
+ <DataTableCell large={large} bordered={bordered}>
119
+ 02/06/2007
120
+ </DataTableCell>
121
+ </DataTableRow>
122
+ </DataTableBody>
123
+ <DataTableFoot>
124
+ <DataTableRow>
125
+ <DataTableCell colSpan={draggable ? '5' : '4'}>
126
+ Footer content
127
+ </DataTableCell>
128
+ </DataTableRow>
129
+ </DataTableFoot>
130
+ </DataTable>
131
+ )
132
+
133
+ export const Default = BasicTemplate.bind({})
134
+ Default.args = {}
135
+
136
+ export const Loading = BasicTemplate.bind({})
137
+ Loading.args = { bodyProps: { loading: true } }
138
+
139
+ export const BorderedCells = BasicTemplate.bind({})
140
+ BorderedCells.args = {
141
+ bordered: true,
142
+ }
143
+ export const LargeCells = BasicTemplate.bind({})
144
+ LargeCells.args = {
145
+ large: true,
146
+ }
147
+ export const DraggableRows = BasicTemplate.bind({})
148
+ DraggableRows.args = {
149
+ draggable: true,
150
+ }
151
+
152
+ const IndividualCellTemplate = (args) => (
153
+ <DataTable {...args}>
154
+ <DataTableHead>
155
+ <DataTableRow>
156
+ <DataTableColumnHeader>Header</DataTableColumnHeader>
157
+ <DataTableColumnHeader>Header</DataTableColumnHeader>
158
+ <DataTableColumnHeader>Header</DataTableColumnHeader>
159
+ <DataTableColumnHeader>Header</DataTableColumnHeader>
160
+ </DataTableRow>
161
+ </DataTableHead>
162
+ <DataTableBody>
163
+ <DataTableRow>
164
+ <DataTableCell tag="th">Active Cells</DataTableCell>
165
+ <DataTableCell>Inactive cell</DataTableCell>
166
+ <DataTableCell
167
+ active
168
+ onClick={() => {
169
+ console.log('You clicked on a DataTableCell')
170
+ }}
171
+ >
172
+ Acive Cell with onClick
173
+ </DataTableCell>
174
+ <DataTableCell>Inactive cell</DataTableCell>
175
+ </DataTableRow>
176
+ <DataTableRow>
177
+ <DataTableCell tag="th">Alignment</DataTableCell>
178
+ <DataTableCell align="left">Left</DataTableCell>
179
+ <DataTableCell align="center">Center</DataTableCell>
180
+ <DataTableCell align="right">Right</DataTableCell>
181
+ </DataTableRow>
182
+ <DataTableRow>
183
+ <DataTableCell tag="th">Built in formatting</DataTableCell>
184
+ <DataTableCell error>Error</DataTableCell>
185
+ <DataTableCell valid>Valid</DataTableCell>
186
+ <DataTableCell muted>Muted</DataTableCell>
187
+ </DataTableRow>
188
+ <DataTableRow>
189
+ <DataTableCell tag="th" backgroundColor="lightgreen">
190
+ Custom background (lightgreen)
191
+ </DataTableCell>
192
+ <DataTableCell backgroundColor="#eff">#eff</DataTableCell>
193
+ <DataTableCell active backgroundColor="yellow">
194
+ yellow
195
+ </DataTableCell>
196
+ <DataTableCell>None</DataTableCell>
197
+ </DataTableRow>
198
+ <DataTableRow selected>
199
+ <DataTableCell tag="th">
200
+ Custom background (on selected row )
201
+ </DataTableCell>
202
+ <DataTableCell backgroundColor="#eff">#eff</DataTableCell>
203
+ <DataTableCell backgroundColor="yellow">yellow</DataTableCell>
204
+ <DataTableCell>None</DataTableCell>
205
+ </DataTableRow>
206
+ </DataTableBody>
207
+ </DataTable>
208
+ )
209
+
210
+ export const CellStyling = IndividualCellTemplate.bind({})
211
+ CellStyling.args = {}
212
+
213
+ const ToolbarsTemplate = (args) => (
214
+ <>
215
+ <DataTableToolbar>
216
+ <p>Content</p>
217
+ </DataTableToolbar>
218
+ <DataTable {...args}>
219
+ <DataTableHead>
220
+ <DataTableRow>
221
+ <DataTableColumnHeader>First name</DataTableColumnHeader>
222
+ <DataTableColumnHeader>Last name</DataTableColumnHeader>
223
+ <DataTableColumnHeader>Incident date</DataTableColumnHeader>
224
+ <DataTableColumnHeader>Last updated</DataTableColumnHeader>
225
+ </DataTableRow>
226
+ </DataTableHead>
227
+ <DataTableBody>
228
+ <DataTableRow>
229
+ <DataTableCell>Onyekachukwu</DataTableCell>
230
+ <DataTableCell>Kariuki</DataTableCell>
231
+ <DataTableCell>02/06/2007</DataTableCell>
232
+ <DataTableCell>05/25/1972</DataTableCell>
233
+ </DataTableRow>
234
+ <DataTableRow>
235
+ <DataTableCell>Kwasi</DataTableCell>
236
+ <DataTableCell>Okafor</DataTableCell>
237
+ <DataTableCell>08/11/2010</DataTableCell>
238
+ <DataTableCell>02/26/1991</DataTableCell>
239
+ </DataTableRow>
240
+ <DataTableRow>
241
+ <DataTableCell>Siyabonga</DataTableCell>
242
+ <DataTableCell>Abiodun</DataTableCell>
243
+ <DataTableCell>07/21/1981</DataTableCell>
244
+ <DataTableCell>02/06/2007</DataTableCell>
245
+ </DataTableRow>
246
+ </DataTableBody>
247
+ </DataTable>
248
+ <DataTableToolbar position="bottom">
249
+ <p>Content (bottom)</p>
250
+ </DataTableToolbar>
251
+ </>
252
+ )
253
+ export const Toolbars = ToolbarsTemplate.bind({})
254
+ Toolbars.args = {}
255
+
256
+ const ExpandableContentTemplate = (args) => {
257
+ const [openRowIndex, setOpenRowIndex] = useState(null)
258
+ const toggleOpenRow = (index) =>
259
+ setOpenRowIndex(openRowIndex === index ? null : index)
260
+ const style = {
261
+ margin: 8,
262
+ padding: 4,
263
+ backgroundColor: 'lightblue',
264
+ }
265
+ const expandableContent = <div style={style}>More info about this row!</div>
266
+ return (
267
+ <DataTable {...args}>
268
+ <DataTableHead>
269
+ <DataTableRow>
270
+ <DataTableColumnHeader />
271
+ <DataTableColumnHeader>First name</DataTableColumnHeader>
272
+ <DataTableColumnHeader>Last name</DataTableColumnHeader>
273
+ <DataTableColumnHeader>Incident date</DataTableColumnHeader>
274
+ <DataTableColumnHeader>Last updated</DataTableColumnHeader>
275
+ </DataTableRow>
276
+ </DataTableHead>
277
+ <DataTableBody>
278
+ <DataTableRow
279
+ expanded={openRowIndex === 0}
280
+ onExpandToggle={(payload) => {
281
+ console.log(payload)
282
+ toggleOpenRow(0)
283
+ }}
284
+ expandableContent={expandableContent}
285
+ >
286
+ <DataTableCell>Onyekachukwu</DataTableCell>
287
+ <DataTableCell>Kariuki</DataTableCell>
288
+ <DataTableCell>02/06/2007</DataTableCell>
289
+ <DataTableCell>05/25/1972</DataTableCell>
290
+ </DataTableRow>
291
+ <DataTableRow
292
+ expanded={openRowIndex === 1}
293
+ onExpandToggle={() => toggleOpenRow(1)}
294
+ expandableContent={expandableContent}
295
+ >
296
+ <DataTableCell>Kwasi</DataTableCell>
297
+ <DataTableCell>Okafor</DataTableCell>
298
+ <DataTableCell>08/11/2010</DataTableCell>
299
+ <DataTableCell>02/26/1991</DataTableCell>
300
+ </DataTableRow>
301
+ <DataTableRow
302
+ expanded={openRowIndex === 2}
303
+ onExpandToggle={() => toggleOpenRow(2)}
304
+ expandableContent={expandableContent}
305
+ >
306
+ <DataTableCell>Siyabonga</DataTableCell>
307
+ <DataTableCell>Abiodun</DataTableCell>
308
+ <DataTableCell>07/21/1981</DataTableCell>
309
+ <DataTableCell>02/06/2007</DataTableCell>
310
+ </DataTableRow>
311
+ </DataTableBody>
312
+ </DataTable>
313
+ )
314
+ }
315
+ export const ExpandableContent = ExpandableContentTemplate.bind({})
316
+ ExpandableContent.args = {}
317
+
318
+ const SelectableRowsTemplate = (args) => {
319
+ const [selected, setSelected] = useState({ id_2: true })
320
+ const toggleSelected = ({ value, checked }) => {
321
+ setSelected({
322
+ ...selected,
323
+ [value]: checked,
324
+ })
325
+ }
326
+ const toggleAll = ({ checked }) => {
327
+ setSelected({
328
+ id_1: checked,
329
+ id_2: checked,
330
+ id_3: checked,
331
+ })
332
+ }
333
+ const allSelected = () =>
334
+ Object.values(selected).filter((value) => value).length === 3
335
+
336
+ return (
337
+ <DataTable {...args}>
338
+ <DataTableHead>
339
+ <DataTableRow>
340
+ <DataTableColumnHeader width="48px">
341
+ <Checkbox
342
+ checked={allSelected()}
343
+ onChange={toggleAll}
344
+ />
345
+ </DataTableColumnHeader>
346
+ <DataTableColumnHeader>First name</DataTableColumnHeader>
347
+ <DataTableColumnHeader>Last name</DataTableColumnHeader>
348
+ <DataTableColumnHeader>Incident date</DataTableColumnHeader>
349
+ <DataTableColumnHeader>Last updated</DataTableColumnHeader>
350
+ </DataTableRow>
351
+ </DataTableHead>
352
+ <DataTableBody>
353
+ <DataTableRow selected={!!selected.id_1}>
354
+ <DataTableCell width="48px">
355
+ <Checkbox
356
+ value="id_1"
357
+ checked={!!selected.id_1}
358
+ onChange={toggleSelected}
359
+ />
360
+ </DataTableCell>
361
+ <DataTableCell>Onyekachukwu</DataTableCell>
362
+ <DataTableCell>Kariuki</DataTableCell>
363
+ <DataTableCell>02/06/2007</DataTableCell>
364
+ <DataTableCell>05/25/1972</DataTableCell>
365
+ </DataTableRow>
366
+ <DataTableRow selected={!!selected.id_2}>
367
+ <DataTableCell width="48px">
368
+ <Checkbox
369
+ value="id_2"
370
+ checked={!!selected.id_2}
371
+ onChange={toggleSelected}
372
+ />
373
+ </DataTableCell>
374
+ <DataTableCell>Kwasi</DataTableCell>
375
+ <DataTableCell>Okafor</DataTableCell>
376
+ <DataTableCell>08/11/2010</DataTableCell>
377
+ <DataTableCell>02/26/1991</DataTableCell>
378
+ </DataTableRow>
379
+ <DataTableRow selected={!!selected.id_3}>
380
+ <DataTableCell width="48px">
381
+ <Checkbox
382
+ value="id_3"
383
+ checked={!!selected.id_3}
384
+ onChange={toggleSelected}
385
+ />
386
+ </DataTableCell>
387
+ <DataTableCell>Siyabonga</DataTableCell>
388
+ <DataTableCell>Abiodun</DataTableCell>
389
+ <DataTableCell>07/21/1981</DataTableCell>
390
+ <DataTableCell>02/06/2007</DataTableCell>
391
+ </DataTableRow>
392
+ </DataTableBody>
393
+ </DataTable>
394
+ )
395
+ }
396
+ export const SelectableRows = SelectableRowsTemplate.bind({})
397
+ SelectableRows.args = {}
398
+
399
+ const FixedHeaderTemplate = (args) => (
400
+ <DataTable {...args}>
401
+ <DataTableHead>
402
+ <DataTableRow>
403
+ <DataTableColumnHeader fixed top="0">
404
+ First name
405
+ </DataTableColumnHeader>
406
+ <DataTableColumnHeader fixed top="0">
407
+ Last name
408
+ </DataTableColumnHeader>
409
+ <DataTableColumnHeader fixed top="0">
410
+ Incident date
411
+ </DataTableColumnHeader>
412
+ <DataTableColumnHeader fixed top="0">
413
+ Last updated
414
+ </DataTableColumnHeader>
415
+ <DataTableColumnHeader fixed top="0">
416
+ Age
417
+ </DataTableColumnHeader>
418
+ <DataTableColumnHeader fixed top="0">
419
+ Registering unit
420
+ </DataTableColumnHeader>
421
+ <DataTableColumnHeader fixed top="0">
422
+ Assigned user
423
+ </DataTableColumnHeader>
424
+ <DataTableColumnHeader fixed top="0">
425
+ Status
426
+ </DataTableColumnHeader>
427
+ </DataTableRow>
428
+ </DataTableHead>
429
+ <DataTableBody>
430
+ <DataTableRow>
431
+ <DataTableCell>Onyekachukwu</DataTableCell>
432
+ <DataTableCell>Kariuki</DataTableCell>
433
+ <DataTableCell>02/06/2007</DataTableCell>
434
+ <DataTableCell>05/25/1972</DataTableCell>
435
+ <DataTableCell>66</DataTableCell>
436
+ <DataTableCell>Jawi</DataTableCell>
437
+ <DataTableCell>Sofie Hubert</DataTableCell>
438
+ <DataTableCell>Incomplete</DataTableCell>
439
+ </DataTableRow>
440
+ <DataTableRow>
441
+ <DataTableCell>Kwasi</DataTableCell>
442
+ <DataTableCell>Okafor</DataTableCell>
443
+ <DataTableCell>08/11/2010</DataTableCell>
444
+ <DataTableCell>02/26/1991</DataTableCell>
445
+ <DataTableCell>38</DataTableCell>
446
+ <DataTableCell>Mokassie MCHP</DataTableCell>
447
+ <DataTableCell>Dashonte Clarke</DataTableCell>
448
+ <DataTableCell>Complete</DataTableCell>
449
+ </DataTableRow>
450
+ <DataTableRow>
451
+ <DataTableCell>Siyabonga</DataTableCell>
452
+ <DataTableCell>Abiodun</DataTableCell>
453
+ <DataTableCell>07/21/1981</DataTableCell>
454
+ <DataTableCell>02/06/2007</DataTableCell>
455
+ <DataTableCell>98</DataTableCell>
456
+ <DataTableCell>Bathurst MCHP</DataTableCell>
457
+ <DataTableCell>Unassigned</DataTableCell>
458
+ <DataTableCell>Incomplete</DataTableCell>
459
+ </DataTableRow>
460
+ <DataTableRow>
461
+ <DataTableCell>Chiyembekezo</DataTableCell>
462
+ <DataTableCell>Okeke</DataTableCell>
463
+ <DataTableCell>01/23/1982</DataTableCell>
464
+ <DataTableCell>07/15/2003</DataTableCell>
465
+ <DataTableCell>2</DataTableCell>
466
+ <DataTableCell>Mayolla MCHP</DataTableCell>
467
+ <DataTableCell>Wan Gengxin</DataTableCell>
468
+ <DataTableCell>Incomplete</DataTableCell>
469
+ </DataTableRow>
470
+ <DataTableRow>
471
+ <DataTableCell>Mtendere</DataTableCell>
472
+ <DataTableCell>Afolayan</DataTableCell>
473
+ <DataTableCell>08/12/1994</DataTableCell>
474
+ <DataTableCell>05/12/1972</DataTableCell>
475
+ <DataTableCell>37</DataTableCell>
476
+ <DataTableCell>Gbangadu MCHP</DataTableCell>
477
+ <DataTableCell>Gvozden Boskovsky</DataTableCell>
478
+ <DataTableCell>Complete</DataTableCell>
479
+ </DataTableRow>
480
+ <DataTableRow>
481
+ <DataTableCell>Inyene</DataTableCell>
482
+ <DataTableCell>Okonkwo</DataTableCell>
483
+ <DataTableCell>04/01/1971</DataTableCell>
484
+ <DataTableCell>03/16/2000</DataTableCell>
485
+ <DataTableCell>70</DataTableCell>
486
+ <DataTableCell>Kunike Barina</DataTableCell>
487
+ <DataTableCell>Oscar de la Cavallería</DataTableCell>
488
+ <DataTableCell>Complete</DataTableCell>
489
+ </DataTableRow>
490
+ <DataTableRow>
491
+ <DataTableCell>Amaka</DataTableCell>
492
+ <DataTableCell>Pretorius</DataTableCell>
493
+ <DataTableCell>01/25/1996</DataTableCell>
494
+ <DataTableCell>09/15/1986</DataTableCell>
495
+ <DataTableCell>32</DataTableCell>
496
+ <DataTableCell>Bargbo</DataTableCell>
497
+ <DataTableCell>Alberto Raya</DataTableCell>
498
+ <DataTableCell>Incomplete</DataTableCell>
499
+ </DataTableRow>
500
+ <DataTableRow>
501
+ <DataTableCell>Meti</DataTableCell>
502
+ <DataTableCell>Abiodun</DataTableCell>
503
+ <DataTableCell>10/24/2010</DataTableCell>
504
+ <DataTableCell>07/26/1989</DataTableCell>
505
+ <DataTableCell>8</DataTableCell>
506
+ <DataTableCell>Majihun MCHP</DataTableCell>
507
+ <DataTableCell>Unassigned</DataTableCell>
508
+ <DataTableCell>Complete</DataTableCell>
509
+ </DataTableRow>
510
+ <DataTableRow>
511
+ <DataTableCell>Eshe</DataTableCell>
512
+ <DataTableCell>Okeke</DataTableCell>
513
+ <DataTableCell>01/31/1995</DataTableCell>
514
+ <DataTableCell>01/31/1995</DataTableCell>
515
+ <DataTableCell>63</DataTableCell>
516
+ <DataTableCell>Mambiama CHP</DataTableCell>
517
+ <DataTableCell>Shadrias Pearson</DataTableCell>
518
+ <DataTableCell>Incomplete</DataTableCell>
519
+ </DataTableRow>
520
+ <DataTableRow>
521
+ <DataTableCell>Obi</DataTableCell>
522
+ <DataTableCell>Okafor</DataTableCell>
523
+ <DataTableCell>06/07/1990</DataTableCell>
524
+ <DataTableCell>01/03/2006</DataTableCell>
525
+ <DataTableCell>28</DataTableCell>
526
+ <DataTableCell>Dalakuru CHP</DataTableCell>
527
+ <DataTableCell>Anatoliy Shcherbatykh</DataTableCell>
528
+ <DataTableCell>Incomplete</DataTableCell>
529
+ </DataTableRow>
530
+ </DataTableBody>
531
+ </DataTable>
532
+ )
533
+ export const FixedHeader = FixedHeaderTemplate.bind({})
534
+ FixedHeader.args = {
535
+ scrollHeight: '350px',
536
+ }
537
+
538
+ const FixedFirstColumnTemplate = (args) => (
539
+ <DataTable {...args}>
540
+ <DataTableHead>
541
+ <DataTableRow>
542
+ <DataTableColumnHeader fixed top="0" left="0">
543
+ First name
544
+ </DataTableColumnHeader>
545
+ <DataTableColumnHeader>Last name</DataTableColumnHeader>
546
+ <DataTableColumnHeader>Incident date</DataTableColumnHeader>
547
+ <DataTableColumnHeader>Last updated</DataTableColumnHeader>
548
+ <DataTableColumnHeader>Age</DataTableColumnHeader>
549
+ <DataTableColumnHeader>Registering unit</DataTableColumnHeader>
550
+ <DataTableColumnHeader>Assigned user</DataTableColumnHeader>
551
+ <DataTableColumnHeader>Status</DataTableColumnHeader>
552
+ </DataTableRow>
553
+ </DataTableHead>
554
+ <DataTableBody>
555
+ <DataTableRow>
556
+ <DataTableCell fixed left="0">
557
+ Onyekachukwu
558
+ </DataTableCell>
559
+ <DataTableCell>Kariuki</DataTableCell>
560
+ <DataTableCell>02/06/2007</DataTableCell>
561
+ <DataTableCell>05/25/1972</DataTableCell>
562
+ <DataTableCell>66</DataTableCell>
563
+ <DataTableCell>Jawi</DataTableCell>
564
+ <DataTableCell>Sofie Hubert</DataTableCell>
565
+ <DataTableCell>Incomplete</DataTableCell>
566
+ </DataTableRow>
567
+ <DataTableRow>
568
+ <DataTableCell fixed left="0">
569
+ Kwasi
570
+ </DataTableCell>
571
+ <DataTableCell>Okafor</DataTableCell>
572
+ <DataTableCell>08/11/2010</DataTableCell>
573
+ <DataTableCell>02/26/1991</DataTableCell>
574
+ <DataTableCell>38</DataTableCell>
575
+ <DataTableCell>Mokassie MCHP</DataTableCell>
576
+ <DataTableCell>Dashonte Clarke</DataTableCell>
577
+ <DataTableCell>Complete</DataTableCell>
578
+ </DataTableRow>
579
+ <DataTableRow>
580
+ <DataTableCell fixed left="0">
581
+ Siyabonga
582
+ </DataTableCell>
583
+ <DataTableCell>Abiodun</DataTableCell>
584
+ <DataTableCell>07/21/1981</DataTableCell>
585
+ <DataTableCell>02/06/2007</DataTableCell>
586
+ <DataTableCell>98</DataTableCell>
587
+ <DataTableCell>Bathurst MCHP</DataTableCell>
588
+ <DataTableCell>Unassigned</DataTableCell>
589
+ <DataTableCell>Incomplete</DataTableCell>
590
+ </DataTableRow>
591
+ <DataTableRow>
592
+ <DataTableCell fixed left="0">
593
+ Chiyembekezo
594
+ </DataTableCell>
595
+ <DataTableCell>Okeke</DataTableCell>
596
+ <DataTableCell>01/23/1982</DataTableCell>
597
+ <DataTableCell>07/15/2003</DataTableCell>
598
+ <DataTableCell>2</DataTableCell>
599
+ <DataTableCell>Mayolla MCHP</DataTableCell>
600
+ <DataTableCell>Wan Gengxin</DataTableCell>
601
+ <DataTableCell>Incomplete</DataTableCell>
602
+ </DataTableRow>
603
+ <DataTableRow>
604
+ <DataTableCell fixed left="0">
605
+ Mtendere
606
+ </DataTableCell>
607
+ <DataTableCell>Afolayan</DataTableCell>
608
+ <DataTableCell>08/12/1994</DataTableCell>
609
+ <DataTableCell>05/12/1972</DataTableCell>
610
+ <DataTableCell>37</DataTableCell>
611
+ <DataTableCell>Gbangadu MCHP</DataTableCell>
612
+ <DataTableCell>Gvozden Boskovsky</DataTableCell>
613
+ <DataTableCell>Complete</DataTableCell>
614
+ </DataTableRow>
615
+ <DataTableRow>
616
+ <DataTableCell fixed left="0">
617
+ Inyene
618
+ </DataTableCell>
619
+ <DataTableCell>Okonkwo</DataTableCell>
620
+ <DataTableCell>04/01/1971</DataTableCell>
621
+ <DataTableCell>03/16/2000</DataTableCell>
622
+ <DataTableCell>70</DataTableCell>
623
+ <DataTableCell>Kunike Barina</DataTableCell>
624
+ <DataTableCell>Oscar de la Cavallería</DataTableCell>
625
+ <DataTableCell>Complete</DataTableCell>
626
+ </DataTableRow>
627
+ <DataTableRow>
628
+ <DataTableCell fixed left="0">
629
+ Amaka
630
+ </DataTableCell>
631
+ <DataTableCell>Pretorius</DataTableCell>
632
+ <DataTableCell>01/25/1996</DataTableCell>
633
+ <DataTableCell>09/15/1986</DataTableCell>
634
+ <DataTableCell>32</DataTableCell>
635
+ <DataTableCell>Bargbo</DataTableCell>
636
+ <DataTableCell>Alberto Raya</DataTableCell>
637
+ <DataTableCell>Incomplete</DataTableCell>
638
+ </DataTableRow>
639
+ <DataTableRow>
640
+ <DataTableCell fixed left="0">
641
+ Meti
642
+ </DataTableCell>
643
+ <DataTableCell>Abiodun</DataTableCell>
644
+ <DataTableCell>10/24/2010</DataTableCell>
645
+ <DataTableCell>07/26/1989</DataTableCell>
646
+ <DataTableCell>8</DataTableCell>
647
+ <DataTableCell>Majihun MCHP</DataTableCell>
648
+ <DataTableCell>Unassigned</DataTableCell>
649
+ <DataTableCell>Complete</DataTableCell>
650
+ </DataTableRow>
651
+ <DataTableRow>
652
+ <DataTableCell fixed left="0">
653
+ Eshe
654
+ </DataTableCell>
655
+ <DataTableCell>Okeke</DataTableCell>
656
+ <DataTableCell>01/31/1995</DataTableCell>
657
+ <DataTableCell>01/31/1995</DataTableCell>
658
+ <DataTableCell>63</DataTableCell>
659
+ <DataTableCell>Mambiama CHP</DataTableCell>
660
+ <DataTableCell>Shadrias Pearson</DataTableCell>
661
+ <DataTableCell>Incomplete</DataTableCell>
662
+ </DataTableRow>
663
+ <DataTableRow>
664
+ <DataTableCell fixed left="0">
665
+ Obi
666
+ </DataTableCell>
667
+ <DataTableCell>Okafor</DataTableCell>
668
+ <DataTableCell>06/07/1990</DataTableCell>
669
+ <DataTableCell>01/03/2006</DataTableCell>
670
+ <DataTableCell>28</DataTableCell>
671
+ <DataTableCell>Dalakuru CHP</DataTableCell>
672
+ <DataTableCell>Anatoliy Shcherbatykh</DataTableCell>
673
+ <DataTableCell>Incomplete</DataTableCell>
674
+ </DataTableRow>
675
+ </DataTableBody>
676
+ </DataTable>
677
+ )
678
+ export const FixedFirstColumn = FixedFirstColumnTemplate.bind({})
679
+ FixedFirstColumn.args = {
680
+ scrollWidth: '500px',
681
+ }
682
+
683
+ const FixedHeaderAndTwoColumnsTemplate = (args) => (
684
+ <DataTable {...args}>
685
+ <DataTableHead>
686
+ <DataTableRow>
687
+ <DataTableColumnHeader fixed top="0" left="0" width="120px">
688
+ First name
689
+ </DataTableColumnHeader>
690
+ <DataTableColumnHeader fixed top="0" left="120px">
691
+ Last name
692
+ </DataTableColumnHeader>
693
+ <DataTableColumnHeader fixed top="0">
694
+ Incident date
695
+ </DataTableColumnHeader>
696
+ <DataTableColumnHeader fixed top="0">
697
+ Last updated
698
+ </DataTableColumnHeader>
699
+ <DataTableColumnHeader fixed top="0">
700
+ Age
701
+ </DataTableColumnHeader>
702
+ <DataTableColumnHeader fixed top="0">
703
+ Registering unit
704
+ </DataTableColumnHeader>
705
+ <DataTableColumnHeader fixed top="0">
706
+ Assigned user
707
+ </DataTableColumnHeader>
708
+ <DataTableColumnHeader fixed top="0">
709
+ Status
710
+ </DataTableColumnHeader>
711
+ </DataTableRow>
712
+ </DataTableHead>
713
+ <DataTableBody>
714
+ <DataTableRow>
715
+ <DataTableCell fixed left="0" width="120px">
716
+ Onyekachukwu
717
+ </DataTableCell>
718
+ <DataTableCell fixed left="120px">
719
+ Kariuki
720
+ </DataTableCell>
721
+ <DataTableCell>02/06/2007</DataTableCell>
722
+ <DataTableCell>05/25/1972</DataTableCell>
723
+ <DataTableCell>66</DataTableCell>
724
+ <DataTableCell>Jawi</DataTableCell>
725
+ <DataTableCell>Sofie Hubert</DataTableCell>
726
+ <DataTableCell>Incomplete</DataTableCell>
727
+ </DataTableRow>
728
+ <DataTableRow>
729
+ <DataTableCell fixed left="0" width="120px">
730
+ Kwasi
731
+ </DataTableCell>
732
+ <DataTableCell fixed left="120px">
733
+ Okafor
734
+ </DataTableCell>
735
+ <DataTableCell>08/11/2010</DataTableCell>
736
+ <DataTableCell>02/26/1991</DataTableCell>
737
+ <DataTableCell>38</DataTableCell>
738
+ <DataTableCell>Mokassie MCHP</DataTableCell>
739
+ <DataTableCell>Dashonte Clarke</DataTableCell>
740
+ <DataTableCell>Complete</DataTableCell>
741
+ </DataTableRow>
742
+ <DataTableRow>
743
+ <DataTableCell fixed left="0" width="120px">
744
+ Siyabonga
745
+ </DataTableCell>
746
+ <DataTableCell fixed left="120px">
747
+ Abiodun
748
+ </DataTableCell>
749
+ <DataTableCell>07/21/1981</DataTableCell>
750
+ <DataTableCell>02/06/2007</DataTableCell>
751
+ <DataTableCell>98</DataTableCell>
752
+ <DataTableCell>Bathurst MCHP</DataTableCell>
753
+ <DataTableCell>Unassigned</DataTableCell>
754
+ <DataTableCell>Incomplete</DataTableCell>
755
+ </DataTableRow>
756
+ <DataTableRow>
757
+ <DataTableCell fixed left="0" width="120px">
758
+ Chiyembekezo
759
+ </DataTableCell>
760
+ <DataTableCell fixed left="120px">
761
+ Okeke
762
+ </DataTableCell>
763
+ <DataTableCell>01/23/1982</DataTableCell>
764
+ <DataTableCell>07/15/2003</DataTableCell>
765
+ <DataTableCell>2</DataTableCell>
766
+ <DataTableCell>Mayolla MCHP</DataTableCell>
767
+ <DataTableCell>Wan Gengxin</DataTableCell>
768
+ <DataTableCell>Incomplete</DataTableCell>
769
+ </DataTableRow>
770
+ <DataTableRow>
771
+ <DataTableCell fixed left="0" width="120px">
772
+ Mtendere
773
+ </DataTableCell>
774
+ <DataTableCell fixed left="120px">
775
+ Afolayan
776
+ </DataTableCell>
777
+ <DataTableCell>08/12/1994</DataTableCell>
778
+ <DataTableCell>05/12/1972</DataTableCell>
779
+ <DataTableCell>37</DataTableCell>
780
+ <DataTableCell>Gbangadu MCHP</DataTableCell>
781
+ <DataTableCell>Gvozden Boskovsky</DataTableCell>
782
+ <DataTableCell>Complete</DataTableCell>
783
+ </DataTableRow>
784
+ <DataTableRow>
785
+ <DataTableCell fixed left="0" width="120px">
786
+ Inyene
787
+ </DataTableCell>
788
+ <DataTableCell fixed left="120px">
789
+ Okonkwo
790
+ </DataTableCell>
791
+ <DataTableCell>04/01/1971</DataTableCell>
792
+ <DataTableCell>03/16/2000</DataTableCell>
793
+ <DataTableCell>70</DataTableCell>
794
+ <DataTableCell>Kunike Barina</DataTableCell>
795
+ <DataTableCell>Oscar de la Cavallería</DataTableCell>
796
+ <DataTableCell>Complete</DataTableCell>
797
+ </DataTableRow>
798
+ <DataTableRow>
799
+ <DataTableCell fixed left="0" width="120px">
800
+ Amaka
801
+ </DataTableCell>
802
+ <DataTableCell fixed left="120px">
803
+ Pretorius
804
+ </DataTableCell>
805
+ <DataTableCell>01/25/1996</DataTableCell>
806
+ <DataTableCell>09/15/1986</DataTableCell>
807
+ <DataTableCell>32</DataTableCell>
808
+ <DataTableCell>Bargbo</DataTableCell>
809
+ <DataTableCell>Alberto Raya</DataTableCell>
810
+ <DataTableCell>Incomplete</DataTableCell>
811
+ </DataTableRow>
812
+ <DataTableRow>
813
+ <DataTableCell fixed left="0" width="120px">
814
+ Meti
815
+ </DataTableCell>
816
+ <DataTableCell fixed left="120px">
817
+ Abiodun
818
+ </DataTableCell>
819
+ <DataTableCell>10/24/2010</DataTableCell>
820
+ <DataTableCell>07/26/1989</DataTableCell>
821
+ <DataTableCell>8</DataTableCell>
822
+ <DataTableCell>Majihun MCHP</DataTableCell>
823
+ <DataTableCell>Unassigned</DataTableCell>
824
+ <DataTableCell>Complete</DataTableCell>
825
+ </DataTableRow>
826
+ <DataTableRow>
827
+ <DataTableCell fixed left="0" width="120px">
828
+ Eshe
829
+ </DataTableCell>
830
+ <DataTableCell fixed left="120px">
831
+ Okeke
832
+ </DataTableCell>
833
+ <DataTableCell>01/31/1995</DataTableCell>
834
+ <DataTableCell>01/31/1995</DataTableCell>
835
+ <DataTableCell>63</DataTableCell>
836
+ <DataTableCell>Mambiama CHP</DataTableCell>
837
+ <DataTableCell>Shadrias Pearson</DataTableCell>
838
+ <DataTableCell>Incomplete</DataTableCell>
839
+ </DataTableRow>
840
+ <DataTableRow>
841
+ <DataTableCell fixed left="0" width="120px">
842
+ Obi
843
+ </DataTableCell>
844
+ <DataTableCell fixed left="120px">
845
+ Okafor
846
+ </DataTableCell>
847
+ <DataTableCell>06/07/1990</DataTableCell>
848
+ <DataTableCell>01/03/2006</DataTableCell>
849
+ <DataTableCell>28</DataTableCell>
850
+ <DataTableCell>Dalakuru CHP</DataTableCell>
851
+ <DataTableCell>Anatoliy Shcherbatykh</DataTableCell>
852
+ <DataTableCell>Incomplete</DataTableCell>
853
+ </DataTableRow>
854
+ </DataTableBody>
855
+ </DataTable>
856
+ )
857
+
858
+ export const FixedHeaderAndTwoColumns = FixedHeaderAndTwoColumnsTemplate.bind(
859
+ {}
860
+ )
861
+ FixedHeaderAndTwoColumns.args = {
862
+ layout: 'fixed',
863
+ width: '1000px',
864
+ scrollWidth: '500px',
865
+ scrollHeight: '400px',
866
+ }
867
+
868
+ const ScrollingDataTableWithToolbarsTemplate = (args) => (
869
+ <Box width="500px">
870
+ <DataTableToolbar>
871
+ <p>Content</p>
872
+ </DataTableToolbar>
873
+ <DataTable
874
+ {...args}
875
+ layout="fixed"
876
+ width="1000px"
877
+ scrollWidth="500px"
878
+ scrollHeight="400px"
879
+ >
880
+ <DataTableHead>
881
+ <DataTableRow>
882
+ <DataTableColumnHeader fixed top="0" left="0" width="120px">
883
+ First name
884
+ </DataTableColumnHeader>
885
+ <DataTableColumnHeader fixed top="0" left="120px">
886
+ Last name
887
+ </DataTableColumnHeader>
888
+ <DataTableColumnHeader fixed top="0">
889
+ Incident date
890
+ </DataTableColumnHeader>
891
+ <DataTableColumnHeader fixed top="0">
892
+ Last updated
893
+ </DataTableColumnHeader>
894
+ <DataTableColumnHeader fixed top="0">
895
+ Age
896
+ </DataTableColumnHeader>
897
+ <DataTableColumnHeader fixed top="0">
898
+ Registering unit
899
+ </DataTableColumnHeader>
900
+ <DataTableColumnHeader fixed top="0">
901
+ Assigned user
902
+ </DataTableColumnHeader>
903
+ <DataTableColumnHeader fixed top="0">
904
+ Status
905
+ </DataTableColumnHeader>
906
+ </DataTableRow>
907
+ </DataTableHead>
908
+ <DataTableBody>
909
+ <DataTableRow>
910
+ <DataTableCell fixed left="0" width="120px">
911
+ Onyekachukwu
912
+ </DataTableCell>
913
+ <DataTableCell fixed left="120px">
914
+ Kariuki
915
+ </DataTableCell>
916
+ <DataTableCell>02/06/2007</DataTableCell>
917
+ <DataTableCell>05/25/1972</DataTableCell>
918
+ <DataTableCell>66</DataTableCell>
919
+ <DataTableCell>Jawi</DataTableCell>
920
+ <DataTableCell>Sofie Hubert</DataTableCell>
921
+ <DataTableCell>Incomplete</DataTableCell>
922
+ </DataTableRow>
923
+ <DataTableRow>
924
+ <DataTableCell fixed left="0" width="120px">
925
+ Kwasi
926
+ </DataTableCell>
927
+ <DataTableCell fixed left="120px">
928
+ Okafor
929
+ </DataTableCell>
930
+ <DataTableCell>08/11/2010</DataTableCell>
931
+ <DataTableCell>02/26/1991</DataTableCell>
932
+ <DataTableCell>38</DataTableCell>
933
+ <DataTableCell>Mokassie MCHP</DataTableCell>
934
+ <DataTableCell>Dashonte Clarke</DataTableCell>
935
+ <DataTableCell>Complete</DataTableCell>
936
+ </DataTableRow>
937
+ <DataTableRow>
938
+ <DataTableCell fixed left="0" width="120px">
939
+ Siyabonga
940
+ </DataTableCell>
941
+ <DataTableCell fixed left="120px">
942
+ Abiodun
943
+ </DataTableCell>
944
+ <DataTableCell>07/21/1981</DataTableCell>
945
+ <DataTableCell>02/06/2007</DataTableCell>
946
+ <DataTableCell>98</DataTableCell>
947
+ <DataTableCell>Bathurst MCHP</DataTableCell>
948
+ <DataTableCell>Unassigned</DataTableCell>
949
+ <DataTableCell>Incomplete</DataTableCell>
950
+ </DataTableRow>
951
+ <DataTableRow>
952
+ <DataTableCell fixed left="0" width="120px">
953
+ Chiyembekezo
954
+ </DataTableCell>
955
+ <DataTableCell fixed left="120px">
956
+ Okeke
957
+ </DataTableCell>
958
+ <DataTableCell>01/23/1982</DataTableCell>
959
+ <DataTableCell>07/15/2003</DataTableCell>
960
+ <DataTableCell>2</DataTableCell>
961
+ <DataTableCell>Mayolla MCHP</DataTableCell>
962
+ <DataTableCell>Wan Gengxin</DataTableCell>
963
+ <DataTableCell>Incomplete</DataTableCell>
964
+ </DataTableRow>
965
+ <DataTableRow>
966
+ <DataTableCell fixed left="0" width="120px">
967
+ Mtendere
968
+ </DataTableCell>
969
+ <DataTableCell fixed left="120px">
970
+ Afolayan
971
+ </DataTableCell>
972
+ <DataTableCell>08/12/1994</DataTableCell>
973
+ <DataTableCell>05/12/1972</DataTableCell>
974
+ <DataTableCell>37</DataTableCell>
975
+ <DataTableCell>Gbangadu MCHP</DataTableCell>
976
+ <DataTableCell>Gvozden Boskovsky</DataTableCell>
977
+ <DataTableCell>Complete</DataTableCell>
978
+ </DataTableRow>
979
+ <DataTableRow>
980
+ <DataTableCell fixed left="0" width="120px">
981
+ Inyene
982
+ </DataTableCell>
983
+ <DataTableCell fixed left="120px">
984
+ Okonkwo
985
+ </DataTableCell>
986
+ <DataTableCell>04/01/1971</DataTableCell>
987
+ <DataTableCell>03/16/2000</DataTableCell>
988
+ <DataTableCell>70</DataTableCell>
989
+ <DataTableCell>Kunike Barina</DataTableCell>
990
+ <DataTableCell>Oscar de la Cavallería</DataTableCell>
991
+ <DataTableCell>Complete</DataTableCell>
992
+ </DataTableRow>
993
+ <DataTableRow>
994
+ <DataTableCell fixed left="0" width="120px">
995
+ Amaka
996
+ </DataTableCell>
997
+ <DataTableCell fixed left="120px">
998
+ Pretorius
999
+ </DataTableCell>
1000
+ <DataTableCell>01/25/1996</DataTableCell>
1001
+ <DataTableCell>09/15/1986</DataTableCell>
1002
+ <DataTableCell>32</DataTableCell>
1003
+ <DataTableCell>Bargbo</DataTableCell>
1004
+ <DataTableCell>Alberto Raya</DataTableCell>
1005
+ <DataTableCell>Incomplete</DataTableCell>
1006
+ </DataTableRow>
1007
+ <DataTableRow>
1008
+ <DataTableCell fixed left="0" width="120px">
1009
+ Meti
1010
+ </DataTableCell>
1011
+ <DataTableCell fixed left="120px">
1012
+ Abiodun
1013
+ </DataTableCell>
1014
+ <DataTableCell>10/24/2010</DataTableCell>
1015
+ <DataTableCell>07/26/1989</DataTableCell>
1016
+ <DataTableCell>8</DataTableCell>
1017
+ <DataTableCell>Majihun MCHP</DataTableCell>
1018
+ <DataTableCell>Unassigned</DataTableCell>
1019
+ <DataTableCell>Complete</DataTableCell>
1020
+ </DataTableRow>
1021
+ <DataTableRow>
1022
+ <DataTableCell fixed left="0" width="120px">
1023
+ Eshe
1024
+ </DataTableCell>
1025
+ <DataTableCell fixed left="120px">
1026
+ Okeke
1027
+ </DataTableCell>
1028
+ <DataTableCell>01/31/1995</DataTableCell>
1029
+ <DataTableCell>01/31/1995</DataTableCell>
1030
+ <DataTableCell>63</DataTableCell>
1031
+ <DataTableCell>Mambiama CHP</DataTableCell>
1032
+ <DataTableCell>Shadrias Pearson</DataTableCell>
1033
+ <DataTableCell>Incomplete</DataTableCell>
1034
+ </DataTableRow>
1035
+ <DataTableRow>
1036
+ <DataTableCell fixed left="0" width="120px">
1037
+ Obi
1038
+ </DataTableCell>
1039
+ <DataTableCell fixed left="120px">
1040
+ Okafor
1041
+ </DataTableCell>
1042
+ <DataTableCell>06/07/1990</DataTableCell>
1043
+ <DataTableCell>01/03/2006</DataTableCell>
1044
+ <DataTableCell>28</DataTableCell>
1045
+ <DataTableCell>Dalakuru CHP</DataTableCell>
1046
+ <DataTableCell>Anatoliy Shcherbatykh</DataTableCell>
1047
+ <DataTableCell>Incomplete</DataTableCell>
1048
+ </DataTableRow>
1049
+ </DataTableBody>
1050
+ </DataTable>
1051
+ <DataTableToolbar position="bottom">
1052
+ <p>Content (bottom)</p>
1053
+ </DataTableToolbar>
1054
+ </Box>
1055
+ )
1056
+
1057
+ export const ScrollingDataTableWithToolbars =
1058
+ ScrollingDataTableWithToolbarsTemplate.bind({})
1059
+ ScrollingDataTableWithToolbars.args = {
1060
+ layout: 'fixed',
1061
+ width: '1000px',
1062
+ scrollWidth: '500px',
1063
+ scrollHeight: '400px',
1064
+ }
1065
+
1066
+ const ColumnHeaderSortingTemplate = (args) => {
1067
+ const rows = [
1068
+ {
1069
+ firstName: 'Onyekachukwu',
1070
+ lastName: 'Kariuki',
1071
+ },
1072
+ {
1073
+ firstName: 'Kwasi',
1074
+ lastName: 'Okafor',
1075
+ },
1076
+ {
1077
+ firstName: 'Siyabonga',
1078
+ lastName: 'Abiodun',
1079
+ },
1080
+ ]
1081
+ const [{ column, direction }, setSortInstructions] = useState({
1082
+ column: 'firstName',
1083
+ direction: 'default',
1084
+ })
1085
+ const getSortDirection = (columnName) =>
1086
+ columnName === column ? direction : 'default'
1087
+ const onSortIconClick = ({ name, direction }) => {
1088
+ setSortInstructions({
1089
+ column: name,
1090
+ direction,
1091
+ })
1092
+ }
1093
+ return (
1094
+ <DataTable {...args}>
1095
+ <DataTableHead>
1096
+ <DataTableRow>
1097
+ <DataTableColumnHeader
1098
+ onSortIconClick={onSortIconClick}
1099
+ sortDirection={getSortDirection('firstName')}
1100
+ name={'firstName'}
1101
+ sortIconTitle="Sort by first name"
1102
+ >
1103
+ First name
1104
+ </DataTableColumnHeader>
1105
+ <DataTableColumnHeader
1106
+ onSortIconClick={onSortIconClick}
1107
+ sortDirection={getSortDirection('lastName')}
1108
+ name={'lastName'}
1109
+ sortIconTitle="Sort by last name"
1110
+ >
1111
+ Last name
1112
+ </DataTableColumnHeader>
1113
+ </DataTableRow>
1114
+ </DataTableHead>
1115
+ <DataTableBody>
1116
+ {rows
1117
+ .sort((a, b) => {
1118
+ const strA = a[column]
1119
+ const strB = b[column]
1120
+
1121
+ if (
1122
+ (direction === 'asc' && strA < strB) ||
1123
+ (direction === 'desc' && strA > strB)
1124
+ ) {
1125
+ return -1
1126
+ }
1127
+ if (
1128
+ (direction === 'desc' && strA < strB) ||
1129
+ (direction === 'asc' && strA > strB)
1130
+ ) {
1131
+ return 1
1132
+ }
1133
+
1134
+ return 0
1135
+ })
1136
+ .map(({ firstName, lastName }) => (
1137
+ <DataTableRow key={firstName + lastName}>
1138
+ <DataTableCell>{firstName}</DataTableCell>
1139
+ <DataTableCell>{lastName}</DataTableCell>
1140
+ </DataTableRow>
1141
+ ))}
1142
+ </DataTableBody>
1143
+ </DataTable>
1144
+ )
1145
+ }
1146
+
1147
+ export const ColumnHeaderSorting = ColumnHeaderSortingTemplate.bind({})
1148
+ ColumnHeaderSorting.args = {}
1149
+
1150
+ const InlineFilteringTemplate = (args) => {
1151
+ const rows = [
1152
+ {
1153
+ firstName: 'Onyekachukwu',
1154
+ lastName: 'Kariuki',
1155
+ },
1156
+ {
1157
+ firstName: 'Kwasi',
1158
+ lastName: 'Okafor',
1159
+ },
1160
+ {
1161
+ firstName: 'Siyabonga',
1162
+ lastName: 'Abiodun',
1163
+ },
1164
+ ]
1165
+ const [{ column, value }, setFilter] = useState({
1166
+ column: null,
1167
+ value: '',
1168
+ })
1169
+ const onFilterIconClick = ({ name, show }) => {
1170
+ setFilter({
1171
+ column: show ? name : null,
1172
+ value: '',
1173
+ })
1174
+ }
1175
+ const onFilterInputChange = ({ value }) => {
1176
+ setFilter({
1177
+ column: column,
1178
+ value,
1179
+ })
1180
+ }
1181
+
1182
+ return (
1183
+ <DataTable {...args}>
1184
+ <DataTableHead>
1185
+ <DataTableRow>
1186
+ <DataTableColumnHeader
1187
+ onFilterIconClick={onFilterIconClick}
1188
+ name="firstName"
1189
+ showFilter={column === 'firstName'}
1190
+ filter={
1191
+ <Input
1192
+ dense
1193
+ onChange={onFilterInputChange}
1194
+ name="firstName"
1195
+ value={value}
1196
+ />
1197
+ }
1198
+ >
1199
+ First name
1200
+ </DataTableColumnHeader>
1201
+ <DataTableColumnHeader
1202
+ onFilterIconClick={onFilterIconClick}
1203
+ name="lastName"
1204
+ showFilter={column === 'lastName'}
1205
+ filter={
1206
+ <Input
1207
+ dense
1208
+ onChange={onFilterInputChange}
1209
+ name="lastName"
1210
+ value={value}
1211
+ />
1212
+ }
1213
+ >
1214
+ Last name
1215
+ </DataTableColumnHeader>
1216
+ </DataTableRow>
1217
+ </DataTableHead>
1218
+ <DataTableBody>
1219
+ {rows
1220
+ .filter((row) => {
1221
+ if (!column || !value) {
1222
+ return true
1223
+ }
1224
+ return row[column]
1225
+ .toUpperCase()
1226
+ .includes(value.toUpperCase())
1227
+ })
1228
+ .map(({ firstName, lastName }) => (
1229
+ <DataTableRow key={firstName + lastName}>
1230
+ <DataTableCell>{firstName}</DataTableCell>
1231
+ <DataTableCell>{lastName}</DataTableCell>
1232
+ </DataTableRow>
1233
+ ))}
1234
+ </DataTableBody>
1235
+ </DataTable>
1236
+ )
1237
+ }
1238
+
1239
+ export const InlineFiltering = InlineFilteringTemplate.bind({})
1240
+ InlineFiltering.args = {
1241
+ layout: 'fixed',
1242
+ }
1243
+
1244
+ const LongCellContentTemplate = ({ large }) => (
1245
+ <DataTable>
1246
+ <DataTableHead>
1247
+ <DataTableRow>
1248
+ <DataTableColumnHeader
1249
+ large={large}
1250
+ onSortIconClick={() => {}}
1251
+ sortDirection="asc"
1252
+ name="first"
1253
+ >
1254
+ FIRST - Lorem ipsum dolor sit amet, consectetur adipisicing
1255
+ elit. Eligendi non quis exercitationem culpa nesciunt nihil
1256
+ aut nostrum explicabo reprehenderit optio amet ab temporibus
1257
+ asperiores quasi cupiditate. Voluptatum ducimus voluptates
1258
+ voluptas?
1259
+ </DataTableColumnHeader>
1260
+ <DataTableColumnHeader
1261
+ large={large}
1262
+ onFilterIconClick={() => {}}
1263
+ name="firstName"
1264
+ showFilter={true}
1265
+ filter={
1266
+ <Input
1267
+ dense
1268
+ onChange={() => {}}
1269
+ name="firstName"
1270
+ value="Filter value"
1271
+ />
1272
+ }
1273
+ >
1274
+ SECOND - Lorem ipsum dolor sit amet, consectetur adipisicing
1275
+ elit. Eligendi non quis exercitationem culpa nesciunt nihil
1276
+ aut nostrum explicabo reprehenderit optio amet ab temporibus
1277
+ asperiores quasi cupiditate. Voluptatum ducimus voluptates
1278
+ voluptas?
1279
+ </DataTableColumnHeader>
1280
+ <DataTableColumnHeader
1281
+ large={large}
1282
+ onSortIconClick={() => {}}
1283
+ sortDirection="asc"
1284
+ name="third"
1285
+ >
1286
+ Third (short)
1287
+ </DataTableColumnHeader>
1288
+ <DataTableColumnHeader
1289
+ large={large}
1290
+ onSortIconClick={() => {}}
1291
+ sortDirection="asc"
1292
+ name="fourth"
1293
+ >
1294
+ Fourth - Lorem ipsum dolor sit amet, consectetur adipisicing
1295
+ elit. Eligendi non quis exercitationem culpa nesciunt nihil
1296
+ aut nostrum explicabo reprehenderit optio amet ab temporibus
1297
+ asperiores quasi cupiditate. Voluptatum ducimus voluptates
1298
+ voluptas?
1299
+ </DataTableColumnHeader>
1300
+ </DataTableRow>
1301
+ </DataTableHead>
1302
+ <DataTableBody>
1303
+ <DataTableRow>
1304
+ <DataTableCell large={large}>
1305
+ FIRST - Lorem ipsum dolor sit amet, consectetur adipisicing
1306
+ elit. Eligendi non quis exercitationem culpa nesciunt nihil
1307
+ aut nostrum explicabo reprehenderit optio amet ab temporibus
1308
+ asperiores quasi cupiditate. Voluptatum ducimus voluptates
1309
+ voluptas?
1310
+ </DataTableCell>
1311
+ <DataTableCell large={large}>
1312
+ SECOND - Lorem ipsum dolor sit amet, consectetur adipisicing
1313
+ elit. Eligendi non quis exercitationem culpa nesciunt nihil
1314
+ aut nostrum explicabo reprehenderit optio amet ab temporibus
1315
+ asperiores quasi cupiditate. Voluptatum ducimus voluptates
1316
+ voluptas?
1317
+ </DataTableCell>
1318
+ <DataTableCell large={large}>Third (short)</DataTableCell>
1319
+ <DataTableCell large={large}>
1320
+ Fourth - Lorem ipsum dolor sit amet, consectetur adipisicing
1321
+ elit. Eligendi non quis exercitationem culpa nesciunt nihil
1322
+ aut nostrum explicabo reprehenderit optio amet ab temporibus
1323
+ asperiores quasi cupiditate. Voluptatum ducimus voluptates
1324
+ voluptas?
1325
+ </DataTableCell>
1326
+ </DataTableRow>
1327
+ </DataTableBody>
1328
+ </DataTable>
1329
+ )
1330
+
1331
+ export const LongCellContent = LongCellContentTemplate.bind({})
1332
+
1333
+ export const LongCellContentLargeCells = LongCellContentTemplate.bind({})
1334
+ LongCellContentLargeCells.args = {
1335
+ large: 'true',
1336
+ }
1337
+
1338
+ export const RTL = (args) => (
1339
+ <div dir="rtl">
1340
+ <BasicTemplate {...args} />
1341
+ </div>
1342
+ )