@@ -366,21 +366,43 @@ describe('AnalyticalTable', () => {
366
366
cy . findByTestId ( 'payloadHelper' ) . should ( 'have.text' , '4{"0":true,"1":true,"0.2":true,"0.2.0":true}' ) ;
367
367
} ) ;
368
368
369
- it ( 'programmatic and user selection' , ( ) => {
370
- const data = generateMoreData ( 20 ) ;
369
+ it ( 'programmatic and user selection + filtering' , ( ) => {
370
+ const data = [
371
+ ...generateMoreData ( 20 ) ,
372
+ {
373
+ name : `Name-7` ,
374
+ age : 22 ,
375
+ friend : {
376
+ name : `FriendName-X` ,
377
+ age : 22 + 10
378
+ }
379
+ }
380
+ ] ;
371
381
const TestComp = ( { onRowSelect } : PropTypes ) => {
372
382
const [ selectedRowIds , setSelectedRowIds ] = useState ( { } ) ;
373
383
const [ selectedFlatRows , setSelectedFlatRows ] = useState ( [ ] ) ;
374
384
const [ selectedRowIdsCb , setSelectedRowIdsCb ] = useState ( { } ) ;
385
+ const [ allRowsSelected , setAllRowsSelected ] = useState ( false ) ;
386
+ const [ globalFilterVal , setGlobalFilterVal ] = useState ( '' ) ;
375
387
return (
376
388
< >
377
389
< Button onClick = { ( ) => setSelectedRowIds ( { 2 : true , 3 : false } ) } > Set selected rows</ Button >
390
+ < input
391
+ data-testid = "input"
392
+ value = { globalFilterVal }
393
+ onInput = { ( e ) => {
394
+ setGlobalFilterVal ( e . target . value ) ;
395
+ } }
396
+ />
378
397
< AnalyticalTable
398
+ filterable
379
399
data = { data }
380
400
columns = { columns }
401
+ globalFilterValue = { globalFilterVal }
381
402
onRowSelect = { ( e ) => {
382
403
setSelectedFlatRows ( e . detail . selectedFlatRows . map ( ( item ) => item . id ) ) ;
383
404
setSelectedRowIdsCb ( e . detail . selectedRowIds ) ;
405
+ setAllRowsSelected ( e . detail . allRowsSelected ) ;
384
406
onRowSelect ( e ) ;
385
407
} }
386
408
selectionMode = { AnalyticalTableSelectionMode . MultiSelect }
@@ -392,6 +414,10 @@ describe('AnalyticalTable', () => {
392
414
< p >
393
415
"e.detail.selectedRowIds:"< span data-testid = "payloadRowsById" > { JSON . stringify ( selectedRowIdsCb ) } </ span >
394
416
</ p >
417
+ < p >
418
+ "e.detail.allRowsSelected:"
419
+ < span data-testid = "payloadAllRowsSelected" > { `${ allRowsSelected } ` } </ span >
420
+ </ p >
395
421
</ >
396
422
) ;
397
423
} ;
@@ -404,13 +430,97 @@ describe('AnalyticalTable', () => {
404
430
cy . findByText ( 'Name-5' ) . click ( ) ;
405
431
cy . findByTestId ( 'payload' ) . should ( 'have.text' , '["0","1"]' ) ;
406
432
cy . findByTestId ( 'payloadRowsById' ) . should ( 'have.text' , '{"0":true,"1":true}' ) ;
433
+ cy . findByTestId ( 'payloadAllRowsSelected' ) . should ( 'have.text' , 'false' ) ;
407
434
cy . get ( '@onRowSelectSpy' ) . should ( 'have.callCount' , 4 ) ;
408
435
409
436
cy . findByText ( 'Set selected rows' ) . click ( ) ;
410
437
cy . get ( '@onRowSelectSpy' ) . should ( 'have.callCount' , 4 ) ;
411
438
cy . findByText ( 'Name-1' ) . click ( ) ;
439
+ cy . get ( '@onRowSelectSpy' ) . should ( 'have.callCount' , 5 ) ;
412
440
cy . findByTestId ( 'payload' ) . should ( 'have.text' , '["1","2"]' ) ;
413
441
cy . findByTestId ( 'payloadRowsById' ) . should ( 'have.text' , '{"1":true,"2":true,"3":false}' ) ;
442
+ cy . findByTestId ( 'payloadAllRowsSelected' ) . should ( 'have.text' , 'false' ) ;
443
+
444
+ cy . get ( '[data-row-index="0"][data-column-index="0"]' ) . click ( ) ;
445
+ cy . get ( '@onRowSelectSpy' ) . should ( 'have.callCount' , 6 ) ;
446
+ cy . findByTestId ( 'payload' ) . should (
447
+ 'have.text' ,
448
+ '["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"]'
449
+ ) ;
450
+ cy . findByTestId ( 'payloadRowsById' ) . should (
451
+ 'have.text' ,
452
+ '{"0":true,"1":true,"2":true,"3":true,"4":true,"5":true,"6":true,"7":true,"8":true,"9":true,"10":true,"11":true,"12":true,"13":true,"14":true,"15":true,"16":true,"17":true,"18":true,"19":true,"20":true}'
453
+ ) ;
454
+ cy . findByTestId ( 'payloadAllRowsSelected' ) . should ( 'have.text' , 'true' ) ;
455
+
456
+ cy . get ( '[data-row-index="0"][data-column-index="0"]' ) . click ( ) ;
457
+
458
+ cy . findByText ( 'Name-0' ) . click ( ) ;
459
+ cy . findByText ( 'Name-1' ) . click ( ) ;
460
+ cy . findByText ( 'Name-5' ) . click ( ) ;
461
+ cy . findByText ( 'Name' ) . click ( ) ;
462
+ cy . get ( '[ui5-li-custom]' ) . shadow ( ) . get ( '[ui5-input]' ) . typeIntoUi5Input ( '7{enter}' ) ;
463
+ cy . findByTestId ( 'payload' ) . should ( 'have.text' , '["0","1","5"]' ) ;
464
+ cy . findByTestId ( 'payloadRowsById' ) . should ( 'have.text' , '{"0":true,"1":true,"5":true}' ) ;
465
+ cy . findByTestId ( 'payloadAllRowsSelected' ) . should ( 'have.text' , 'false' ) ;
466
+
467
+ cy . get ( '[data-row-index="0"][data-column-index="0"]' ) . click ( ) ;
468
+ cy . get ( '@onRowSelectSpy' ) . should ( 'have.callCount' , 11 ) ;
469
+ cy . findByTestId ( 'payload' ) . should ( 'have.text' , '["0","1","5","7","17","20"]' ) ;
470
+ cy . findByTestId ( 'payloadRowsById' ) . should ( 'have.text' , '{"0":true,"1":true,"5":true,"7":true,"17":true,"20":true}' ) ;
471
+ cy . findByTestId ( 'payloadAllRowsSelected' ) . should ( 'have.text' , 'false' ) ;
472
+
473
+ cy . findByText ( 'Name' ) . click ( ) ;
474
+ cy . get ( '[ui5-li-custom]' ) . shadow ( ) . get ( '[ui5-input]' ) . typeIntoUi5Input ( '{selectall}{backspace}{enter}' ) ;
475
+ cy . get ( '[data-row-index="0"][data-column-index="0"]' ) . click ( ) ;
476
+ cy . findByText ( 'Name-17' ) . click ( { force : true } ) ;
477
+ cy . findByText ( 'Name' ) . click ( ) ;
478
+ cy . get ( '[ui5-li-custom]' ) . shadow ( ) . get ( '[ui5-input]' ) . typeIntoUi5Input ( '7{enter}' ) ;
479
+ cy . findByTestId ( 'payload' ) . should (
480
+ 'have.text' ,
481
+ '["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","18","19","20"]'
482
+ ) ;
483
+ cy . findByTestId ( 'payloadRowsById' ) . should (
484
+ 'have.text' ,
485
+ '{"0":true,"1":true,"2":true,"3":true,"4":true,"5":true,"6":true,"7":true,"8":true,"9":true,"10":true,"11":true,"12":true,"13":true,"14":true,"15":true,"16":true,"18":true,"19":true,"20":true}'
486
+ ) ;
487
+ cy . findByTestId ( 'payloadAllRowsSelected' ) . should ( 'have.text' , 'false' ) ;
488
+ cy . findByText ( 'Name-17' ) . click ( ) ;
489
+ cy . findByTestId ( 'payload' ) . should (
490
+ 'have.text' ,
491
+ '["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"]'
492
+ ) ;
493
+ cy . findByTestId ( 'payloadRowsById' ) . should (
494
+ 'have.text' ,
495
+ '{"0":true,"1":true,"2":true,"3":true,"4":true,"5":true,"6":true,"7":true,"8":true,"9":true,"10":true,"11":true,"12":true,"13":true,"14":true,"15":true,"16":true,"17":true,"18":true,"19":true,"20":true}'
496
+ ) ;
497
+ cy . findByTestId ( 'payloadAllRowsSelected' ) . should ( 'have.text' , 'true' ) ;
498
+
499
+ cy . findByText ( 'Name' ) . click ( ) ;
500
+ cy . get ( '[ui5-li-custom]' ) . shadow ( ) . get ( '[ui5-input]' ) . typeIntoUi5Input ( '{selectall}{backspace}{enter}' ) ;
501
+
502
+ cy . findByText ( 'Name-17' ) . click ( { force : true } ) ;
503
+ cy . findByTestId ( 'input' ) . type ( '7{enter}' ) ;
504
+ cy . findByTestId ( 'payload' ) . should (
505
+ 'have.text' ,
506
+ '["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","18","19","20"]'
507
+ ) ;
508
+ cy . findByTestId ( 'payloadRowsById' ) . should (
509
+ 'have.text' ,
510
+ '{"0":true,"1":true,"2":true,"3":true,"4":true,"5":true,"6":true,"7":true,"8":true,"9":true,"10":true,"11":true,"12":true,"13":true,"14":true,"15":true,"16":true,"18":true,"19":true,"20":true}'
511
+ ) ;
512
+ cy . findByTestId ( 'payloadAllRowsSelected' ) . should ( 'have.text' , 'false' ) ;
513
+ cy . findByText ( 'Name-17' ) . click ( ) ;
514
+ cy . findByTestId ( 'payload' ) . should (
515
+ 'have.text' ,
516
+ '["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"]'
517
+ ) ;
518
+ cy . findByTestId ( 'payloadRowsById' ) . should (
519
+ 'have.text' ,
520
+ '{"0":true,"1":true,"2":true,"3":true,"4":true,"5":true,"6":true,"7":true,"8":true,"9":true,"10":true,"11":true,"12":true,"13":true,"14":true,"15":true,"16":true,"17":true,"18":true,"19":true,"20":true}'
521
+ ) ;
522
+ cy . findByTestId ( 'payloadAllRowsSelected' ) . should ( 'have.text' , 'true' ) ;
523
+ cy . get ( '@onRowSelectSpy' ) . should ( 'have.callCount' , 16 ) ;
414
524
} ) ;
415
525
416
526
it ( 'row & header height' , ( ) => {
0 commit comments