@@ -249,56 +249,184 @@ const TableTemplate: StoryFn<typeof TableComponent> = ({ ...args }) => {
249
249
} ;
250
250
251
251
export const NormalTable : StoryFn < typeof TableComponent > = ( { ...args } ) => {
252
+ const ref = useRef < HTMLDivElement > ( null ) ;
252
253
return (
253
- < Box padding = "spacing.5" overflow = "auto" minHeight = "400px" >
254
- < TableComponent
255
- { ...args }
256
- data = { data }
257
- defaultSelectedIds = { [ '1' , '3' ] }
258
- onSelectionChange = { console . log }
259
- isFirstColumnSticky
260
- height = "100%"
261
- selectionType = "multiple"
262
- // eslint-disable-next-line react/jsx-no-duplicate-props
263
- onSelectionChange = { ( { selectedIds } ) => {
264
- console . log ( selectedIds ) ;
265
- // setSelectedItems(data.nodes.filter((node) => selectedIds.includes(node.id)));
266
- } }
267
- toolbar = {
268
- < TableToolbar title = "Showing 1-10 [Items]" selectedTitle = "Showing 1-10 [Items]" >
269
- < TableToolbarActions >
270
- < Button variant = "secondary" marginRight = "spacing.2" >
271
- Export
272
- </ Button >
273
- < Button > Refund</ Button >
274
- </ TableToolbarActions >
275
- </ TableToolbar >
276
- }
277
- sortFunctions = { {
278
- ID : ( array ) => array . sort ( ( a , b ) => Number ( a . id ) - Number ( b . id ) ) ,
279
- AMOUNT : ( array ) => array . sort ( ( a , b ) => a . amount - b . amount ) ,
280
- PAYMENT_ID : ( array ) => array . sort ( ( a , b ) => a . paymentId . localeCompare ( b . paymentId ) ) ,
281
- DATE : ( array ) => array . sort ( ( a , b ) => a . date . getTime ( ) - b . date . getTime ( ) ) ,
282
- STATUS : ( array ) => array . sort ( ( a , b ) => a . status . localeCompare ( b . status ) ) ,
283
- } }
284
- >
285
- { ( tableData ) => (
286
- < >
287
- < TableHeader >
288
- < TableHeaderRow >
289
- < TableHeaderCell headerKey = "PAYMENT_ID" > ID</ TableHeaderCell >
290
- < TableHeaderCell headerKey = "AMOUNT" > Amount</ TableHeaderCell >
291
- < TableHeaderCell headerKey = "ACCOUNT" > Account</ TableHeaderCell >
292
- < TableHeaderCell headerKey = "DATE" > Date</ TableHeaderCell >
293
- < TableHeaderCell headerKey = "METHOD" > Method</ TableHeaderCell >
294
- < TableHeaderCell headerKey = "STATUS" > Status</ TableHeaderCell >
295
- </ TableHeaderRow >
296
- </ TableHeader >
297
- < TableBody >
298
- { tableData . map ( ( tableItem , index ) => (
254
+ < Box >
255
+ Normal Table-
256
+ < Box padding = "spacing.5" overflow = "auto" minHeight = "400px" >
257
+ < TableComponent
258
+ { ...args }
259
+ data = { data }
260
+ defaultSelectedIds = { [ '1' , '3' ] }
261
+ onSelectionChange = { console . log }
262
+ isFirstColumnSticky
263
+ height = "100%"
264
+ selectionType = "multiple"
265
+ // eslint-disable-next-line react/jsx-no-duplicate-props
266
+ onSelectionChange = { ( { selectedIds } ) => {
267
+ console . log ( selectedIds ) ;
268
+ // setSelectedItems(data.nodes.filter((node) => selectedIds.includes(node.id)));
269
+ } }
270
+ toolbar = {
271
+ < TableToolbar title = "Showing 1-10 [Items]" selectedTitle = "Showing 1-10 [Items]" >
272
+ < TableToolbarActions >
273
+ < Button variant = "secondary" marginRight = "spacing.2" >
274
+ Export
275
+ </ Button >
276
+ < Button > Refund</ Button >
277
+ </ TableToolbarActions >
278
+ </ TableToolbar >
279
+ }
280
+ sortFunctions = { {
281
+ ID : ( array ) => array . sort ( ( a , b ) => Number ( a . id ) - Number ( b . id ) ) ,
282
+ AMOUNT : ( array ) => array . sort ( ( a , b ) => a . amount - b . amount ) ,
283
+ PAYMENT_ID : ( array ) => array . sort ( ( a , b ) => a . paymentId . localeCompare ( b . paymentId ) ) ,
284
+ DATE : ( array ) => array . sort ( ( a , b ) => a . date . getTime ( ) - b . date . getTime ( ) ) ,
285
+ STATUS : ( array ) => array . sort ( ( a , b ) => a . status . localeCompare ( b . status ) ) ,
286
+ } }
287
+ >
288
+ { ( tableData ) => (
289
+ < >
290
+ < TableHeader >
291
+ < TableHeaderRow >
292
+ < TableHeaderCell headerKey = "PAYMENT_ID" > ID</ TableHeaderCell >
293
+ < TableHeaderCell headerKey = "AMOUNT" > Amount</ TableHeaderCell >
294
+ < TableHeaderCell headerKey = "ACCOUNT" > Account</ TableHeaderCell >
295
+ < TableHeaderCell headerKey = "DATE" > Date</ TableHeaderCell >
296
+ < TableHeaderCell headerKey = "METHOD" > Method</ TableHeaderCell >
297
+ < TableHeaderCell headerKey = "STATUS" > Status</ TableHeaderCell >
298
+ </ TableHeaderRow >
299
+ </ TableHeader >
300
+ < TableBody >
301
+ { tableData . map ( ( tableItem , index ) => (
302
+ < TableRow
303
+ key = { index }
304
+ item = { tableItem }
305
+ hoverActions = {
306
+ < >
307
+ < Button variant = "tertiary" size = "xsmall" >
308
+ View Details
309
+ </ Button >
310
+ < IconButton
311
+ icon = { CheckIcon }
312
+ isHighlighted
313
+ accessibilityLabel = "Approve"
314
+ onClick = { ( ) => {
315
+ console . log ( 'Approved' , tableItem . id ) ;
316
+ } }
317
+ />
318
+ < IconButton
319
+ icon = { CloseIcon }
320
+ isHighlighted
321
+ accessibilityLabel = "Reject"
322
+ onClick = { ( ) => {
323
+ console . log ( 'Rejected' , tableItem . id ) ;
324
+ } }
325
+ />
326
+ </ >
327
+ }
328
+ onClick = { ( ) => {
329
+ console . log ( 'where' ) ;
330
+ } }
331
+ >
332
+ < TableCell >
333
+ < Code size = "medium" > { tableItem . paymentId } </ Code >
334
+ </ TableCell >
335
+ < TableEditableCell
336
+ accessibilityLabel = "Amount"
337
+ placeholder = "Enter text"
338
+ successText = "Amount is valid"
339
+ />
340
+ < TableCell > { tableItem . account } </ TableCell >
341
+ < TableCell >
342
+ { tableItem . date ?. toLocaleDateString ( 'en-IN' , {
343
+ year : 'numeric' ,
344
+ month : '2-digit' ,
345
+ day : '2-digit' ,
346
+ } ) }
347
+ </ TableCell >
348
+ < TableCell > { tableItem . method } </ TableCell >
349
+ < TableCell >
350
+ < Badge
351
+ size = "medium"
352
+ color = {
353
+ tableItem . status === 'Completed'
354
+ ? 'positive'
355
+ : tableItem . status === 'Pending'
356
+ ? 'notice'
357
+ : tableItem . status === 'Failed'
358
+ ? 'negative'
359
+ : 'primary'
360
+ }
361
+ >
362
+ { tableItem . status }
363
+ </ Badge >
364
+ </ TableCell >
365
+ </ TableRow >
366
+ ) ) }
367
+ </ TableBody >
368
+ </ >
369
+ ) }
370
+ </ TableComponent >
371
+ </ Box >
372
+ Virtualized Table-
373
+ < Box padding = "spacing.5" ref = { ref } minHeight = "400px" >
374
+ < > total rows : { nodes . length } </ >
375
+ < TableComponent
376
+ { ...args }
377
+ data = { data }
378
+ onSelectionChange = { console . log }
379
+ selectionType = "multiple"
380
+ // height="500px"
381
+ // width="800px"
382
+ toolbar = {
383
+ < TableToolbar title = "Showing 1-10 [Items]" selectedTitle = "Showing 1-10 [Items]" >
384
+ < TableToolbarActions >
385
+ < Button variant = "secondary" marginRight = "spacing.2" >
386
+ Export
387
+ </ Button >
388
+ < Button > Refund</ Button >
389
+ </ TableToolbarActions >
390
+ </ TableToolbar >
391
+ }
392
+ sortFunctions = { {
393
+ ID : ( array ) => array . sort ( ( a , b ) => Number ( a . id ) - Number ( b . id ) ) ,
394
+ AMOUNT : ( array ) => array . sort ( ( a , b ) => a . amount - b . amount ) ,
395
+ PAYMENT_ID : ( array ) => array . sort ( ( a , b ) => a . paymentId . localeCompare ( b . paymentId ) ) ,
396
+ DATE : ( array ) => array . sort ( ( a , b ) => a . date . getTime ( ) - b . date . getTime ( ) ) ,
397
+ STATUS : ( array ) => array . sort ( ( a , b ) => a . status . localeCompare ( b . status ) ) ,
398
+ } }
399
+ ref = { ref }
400
+ isVirtualized
401
+ defaultSelectedIds = { [ '1' , '3' ] }
402
+ >
403
+ { ( tableData ) => (
404
+ < TableVirtulized
405
+ tableData = { tableData }
406
+ rowHeight = { ( item , index ) => {
407
+ // header height and row height
408
+ return index === 0 ? 50 : 57.5 ;
409
+ } }
410
+ // header={()=>{}}
411
+ header = { ( ) => (
412
+ < TableHeader >
413
+ < TableHeaderRow >
414
+ < TableHeaderCell headerKey = "PAYMENT_ID" > ID</ TableHeaderCell >
415
+ < TableHeaderCell headerKey = "AMOUNT" > Amount</ TableHeaderCell >
416
+ < TableHeaderCell headerKey = "ACCOUNT" > Account</ TableHeaderCell >
417
+ < TableHeaderCell headerKey = "DATE" > Date</ TableHeaderCell >
418
+ < TableHeaderCell headerKey = "METHOD" > Method</ TableHeaderCell >
419
+ < TableHeaderCell headerKey = "STATUS" > Status </ TableHeaderCell >
420
+ </ TableHeaderRow >
421
+ </ TableHeader >
422
+ ) }
423
+ body = { ( tableItem , index ) => (
299
424
< TableRow
300
425
key = { index }
301
426
item = { tableItem }
427
+ onClick = { ( ) => {
428
+ console . log ( 'where' ) ;
429
+ } }
302
430
hoverActions = {
303
431
< >
304
432
< Button variant = "tertiary" size = "xsmall" >
@@ -322,9 +450,6 @@ export const NormalTable: StoryFn<typeof TableComponent> = ({ ...args }) => {
322
450
/>
323
451
</ >
324
452
}
325
- onClick = { ( ) => {
326
- console . log ( 'where' ) ;
327
- } }
328
453
>
329
454
< TableCell >
330
455
< Code size = "medium" > { tableItem . paymentId } </ Code >
@@ -360,11 +485,11 @@ export const NormalTable: StoryFn<typeof TableComponent> = ({ ...args }) => {
360
485
</ Badge >
361
486
</ TableCell >
362
487
</ TableRow >
363
- ) ) }
364
- </ TableBody >
365
- </ >
366
- ) }
367
- </ TableComponent >
488
+ ) }
489
+ / >
490
+ ) }
491
+ </ TableComponent >
492
+ </ Box >
368
493
</ Box >
369
494
) ;
370
495
} ;
0 commit comments