@@ -648,19 +648,34 @@ describe('AnalyticalTable', () => {
648
648
649
649
it ( 'useIndeterminateRowSelection - select subRows' , ( ) => {
650
650
const indeterminateChange = cy . spy ( ) . as ( 'onIndeterminateChangeSpy' ) ;
651
- cy . mount (
652
- < AnalyticalTable
653
- selectionMode = { AnalyticalTableSelectionMode . MultiSelect }
654
- data = { dataTree }
655
- columns = { columns }
656
- isTreeTable
657
- tableHooks = { [ AnalyticalTableHooks . useIndeterminateRowSelection ( indeterminateChange ) ] }
658
- reactTableOptions = { { selectSubRows : true } }
659
- />
660
- ) ;
651
+ const TestComp = ( props ) => {
652
+ const [ selectedRowIds , setSelectedRowIds ] = useState ( { } ) ;
653
+ return (
654
+ < >
655
+ < AnalyticalTable
656
+ selectionMode = { AnalyticalTableSelectionMode . MultiSelect }
657
+ data = { dataTree }
658
+ columns = { columns }
659
+ isTreeTable
660
+ tableHooks = { [ AnalyticalTableHooks . useIndeterminateRowSelection ( indeterminateChange ) ] }
661
+ reactTableOptions = { { selectSubRows : true } }
662
+ onRowSelect = { ( e ) => {
663
+ setSelectedRowIds ( e . detail . selectedRowIds ) ;
664
+ } }
665
+ { ...props }
666
+ />
667
+ < p data-testid = "selectedRows" > { JSON . stringify ( selectedRowIds ) } </ p >
668
+ </ >
669
+ ) ;
670
+ } ;
671
+ cy . mount ( < TestComp /> ) ;
661
672
662
673
// select all
663
674
cy . get ( '[data-column-id="__ui5wcr__internal_selection_column"]' ) . click ( ) ;
675
+ cy . findByTestId ( 'selectedRows' ) . should (
676
+ 'have.text' ,
677
+ '{"0":true,"1":true,"0.0":true,"0.0.0":true,"0.0.0.0":true,"0.0.0.1":true,"0.0.0.2":true,"0.0.0.3":true,"0.0.1":true,"0.0.1.0":true,"0.0.1.1":true,"0.0.1.2":true,"0.0.1.3":true,"0.0.2":true,"0.0.2.0":true,"0.0.2.1":true,"0.0.2.2":true,"0.0.2.3":true,"0.0.3":true,"0.0.3.0":true,"0.0.3.1":true,"0.0.3.2":true,"0.0.3.3":true,"0.1":true,"0.1.0":true,"0.1.0.0":true,"0.1.0.1":true,"0.1.0.2":true,"0.1.0.3":true,"0.1.1":true,"0.1.1.0":true,"0.1.1.1":true,"0.1.1.2":true,"0.1.1.3":true,"0.1.2":true,"0.1.2.0":true,"0.1.2.1":true,"0.1.2.2":true,"0.1.2.3":true,"0.1.3":true,"0.1.3.0":true,"0.1.3.1":true,"0.1.3.2":true,"0.1.3.3":true,"0.2":true,"0.2.0":true,"0.2.0.0":true,"0.2.0.1":true,"0.2.0.2":true,"0.2.0.3":true,"0.2.1":true,"0.2.1.0":true,"0.2.1.1":true,"0.2.1.2":true,"0.2.1.3":true,"0.2.2":true,"0.2.2.0":true,"0.2.2.1":true,"0.2.2.2":true,"0.2.2.3":true,"0.2.3":true,"0.2.3.0":true,"0.2.3.1":true,"0.2.3.2":true,"0.2.3.3":true,"0.3":true,"0.3.0":true,"0.3.0.0":true,"0.3.0.1":true,"0.3.0.2":true,"0.3.0.3":true,"0.3.1":true,"0.3.1.0":true,"0.3.1.1":true,"0.3.1.2":true,"0.3.1.3":true,"0.3.2":true,"0.3.2.0":true,"0.3.2.1":true,"0.3.2.2":true,"0.3.2.3":true,"0.3.3":true,"0.3.3.0":true,"0.3.3.1":true,"0.3.3.2":true,"0.3.3.3":true,"1.0":true,"1.0.0":true,"1.0.0.0":true,"1.0.0.1":true,"1.0.0.2":true,"1.0.0.3":true,"1.0.1":true,"1.0.1.0":true,"1.0.1.1":true,"1.0.1.2":true,"1.0.1.3":true,"1.0.2":true,"1.0.2.0":true,"1.0.2.1":true,"1.0.2.2":true,"1.0.2.3":true,"1.0.3":true,"1.0.3.0":true,"1.0.3.1":true,"1.0.3.2":true,"1.0.3.3":true,"1.1":true,"1.1.0":true,"1.1.0.0":true,"1.1.0.1":true,"1.1.0.2":true,"1.1.0.3":true,"1.1.1":true,"1.1.1.0":true,"1.1.1.1":true,"1.1.1.2":true,"1.1.1.3":true,"1.1.2":true,"1.1.2.0":true,"1.1.2.1":true,"1.1.2.2":true,"1.1.2.3":true,"1.1.3":true,"1.1.3.0":true,"1.1.3.1":true,"1.1.3.2":true,"1.1.3.3":true,"1.2":true,"1.2.0":true,"1.2.0.0":true,"1.2.0.1":true,"1.2.0.2":true,"1.2.0.3":true,"1.2.1":true,"1.2.1.0":true,"1.2.1.1":true,"1.2.1.2":true,"1.2.1.3":true,"1.2.2":true,"1.2.2.0":true,"1.2.2.1":true,"1.2.2.2":true,"1.2.2.3":true,"1.2.3":true,"1.2.3.0":true,"1.2.3.1":true,"1.2.3.2":true,"1.2.3.3":true,"1.3":true,"1.3.0":true,"1.3.0.0":true,"1.3.0.1":true,"1.3.0.2":true,"1.3.0.3":true,"1.3.1":true,"1.3.1.0":true,"1.3.1.1":true,"1.3.1.2":true,"1.3.1.3":true,"1.3.2":true,"1.3.2.0":true,"1.3.2.1":true,"1.3.2.2":true,"1.3.2.3":true,"1.3.3":true,"1.3.3.0":true,"1.3.3.1":true,"1.3.3.2":true,"1.3.3.3":true}'
678
+ ) ;
664
679
665
680
// expand
666
681
cy . get ( '[aria-rowindex="2"] > [aria-colindex="2"] > [title="Expand Node"] > [ui5-icon]' ) . click ( ) ;
@@ -670,6 +685,10 @@ describe('AnalyticalTable', () => {
670
685
// deselect row
671
686
cy . findByText ( 'Wiggins Cotton' ) . click ( ) ;
672
687
cy . get ( '@onIndeterminateChangeSpy' ) . should ( 'have.callCount' , 1 ) ;
688
+ cy . findByTestId ( 'selectedRows' ) . should (
689
+ 'have.text' ,
690
+ '{"0":true,"1":true,"0.0":true,"0.0.0":true,"0.0.0.0":true,"0.0.0.1":true,"0.0.0.2":true,"0.0.0.3":true,"0.0.1":true,"0.0.1.0":true,"0.0.1.1":true,"0.0.1.2":true,"0.0.1.3":true,"0.0.2":true,"0.0.2.0":true,"0.0.2.1":true,"0.0.2.2":true,"0.0.2.3":true,"0.0.3":true,"0.0.3.0":true,"0.0.3.1":true,"0.0.3.2":true,"0.0.3.3":true,"0.1":true,"0.1.0":true,"0.1.0.0":true,"0.1.0.1":true,"0.1.0.2":true,"0.1.0.3":true,"0.1.1":true,"0.1.1.0":true,"0.1.1.1":true,"0.1.1.2":true,"0.1.1.3":true,"0.1.2":true,"0.1.2.0":true,"0.1.2.1":true,"0.1.2.2":true,"0.1.2.3":true,"0.1.3":true,"0.1.3.0":true,"0.1.3.1":true,"0.1.3.2":true,"0.1.3.3":true,"0.2":true,"0.2.0":true,"0.2.0.0":true,"0.2.0.1":true,"0.2.0.2":true,"0.2.0.3":true,"0.2.1":true,"0.2.1.0":true,"0.2.1.1":true,"0.2.1.2":true,"0.2.1.3":true,"0.2.2":true,"0.2.2.0":true,"0.2.2.1":true,"0.2.2.2":true,"0.2.2.3":true,"0.2.3":true,"0.2.3.0":true,"0.2.3.1":true,"0.2.3.2":true,"0.2.3.3":true,"0.3":true,"0.3.0":true,"0.3.0.0":true,"0.3.0.1":true,"0.3.0.2":true,"0.3.0.3":true,"0.3.1":true,"0.3.1.0":true,"0.3.1.1":true,"0.3.1.2":true,"0.3.1.3":true,"0.3.2":true,"0.3.2.0":true,"0.3.2.1":true,"0.3.2.2":true,"0.3.2.3":true,"0.3.3":true,"0.3.3.0":true,"0.3.3.1":true,"0.3.3.2":true,"0.3.3.3":true,"1.0":true,"1.0.0":true,"1.0.0.1":true,"1.0.0.2":true,"1.0.0.3":true,"1.0.1":true,"1.0.1.0":true,"1.0.1.1":true,"1.0.1.2":true,"1.0.1.3":true,"1.0.2":true,"1.0.2.0":true,"1.0.2.1":true,"1.0.2.2":true,"1.0.2.3":true,"1.0.3":true,"1.0.3.0":true,"1.0.3.1":true,"1.0.3.2":true,"1.0.3.3":true,"1.1":true,"1.1.0":true,"1.1.0.0":true,"1.1.0.1":true,"1.1.0.2":true,"1.1.0.3":true,"1.1.1":true,"1.1.1.0":true,"1.1.1.1":true,"1.1.1.2":true,"1.1.1.3":true,"1.1.2":true,"1.1.2.0":true,"1.1.2.1":true,"1.1.2.2":true,"1.1.2.3":true,"1.1.3":true,"1.1.3.0":true,"1.1.3.1":true,"1.1.3.2":true,"1.1.3.3":true,"1.2":true,"1.2.0":true,"1.2.0.0":true,"1.2.0.1":true,"1.2.0.2":true,"1.2.0.3":true,"1.2.1":true,"1.2.1.0":true,"1.2.1.1":true,"1.2.1.2":true,"1.2.1.3":true,"1.2.2":true,"1.2.2.0":true,"1.2.2.1":true,"1.2.2.2":true,"1.2.2.3":true,"1.2.3":true,"1.2.3.0":true,"1.2.3.1":true,"1.2.3.2":true,"1.2.3.3":true,"1.3":true,"1.3.0":true,"1.3.0.0":true,"1.3.0.1":true,"1.3.0.2":true,"1.3.0.3":true,"1.3.1":true,"1.3.1.0":true,"1.3.1.1":true,"1.3.1.2":true,"1.3.1.3":true,"1.3.2":true,"1.3.2.0":true,"1.3.2.1":true,"1.3.2.2":true,"1.3.2.3":true,"1.3.3":true,"1.3.3.0":true,"1.3.3.1":true,"1.3.3.2":true,"1.3.3.3":true}'
691
+ ) ;
673
692
674
693
cy . get ( '[aria-rowindex="4"] > [aria-colindex="1"] [ui5-checkbox]' ) . should ( 'have.attr' , 'indeterminate' , 'true' ) ;
675
694
cy . get ( '[aria-rowindex="3"] > [aria-colindex="1"] [ui5-checkbox]' ) . should ( 'have.attr' , 'indeterminate' , 'true' ) ;
@@ -688,6 +707,7 @@ describe('AnalyticalTable', () => {
688
707
// select leaf row
689
708
cy . findByText ( 'Wiggins Cotton' ) . click ( ) ;
690
709
cy . get ( '@onIndeterminateChangeSpy' ) . should ( 'have.callCount' , 3 ) ;
710
+ cy . findByTestId ( 'selectedRows' ) . should ( 'have.text' , '{"1.0.0.0":true}' ) ;
691
711
692
712
cy . get ( '[aria-rowindex="4"] > [aria-colindex="1"] [ui5-checkbox]' ) . should ( 'have.attr' , 'indeterminate' , 'true' ) ;
693
713
cy . get ( '[aria-rowindex="3"] > [aria-colindex="1"] [ui5-checkbox]' ) . should ( 'have.attr' , 'indeterminate' , 'true' ) ;
@@ -719,6 +739,21 @@ describe('AnalyticalTable', () => {
719
739
'indeterminate' ,
720
740
'true'
721
741
) ;
742
+
743
+ // deselect all
744
+ cy . get ( '[data-column-id="__ui5wcr__internal_selection_column"]' ) . click ( ) ;
745
+ cy . get ( '[data-column-id="__ui5wcr__internal_selection_column"]' ) . click ( ) ;
746
+
747
+ // select parent row by selecting sub rows
748
+ cy . findByText ( 'Wiggins Cotton' ) . click ( ) ;
749
+ cy . findByText ( 'Herring Flores' ) . click ( ) ;
750
+ cy . findByText ( 'Allen Kidd' ) . click ( ) ;
751
+ cy . findByTestId ( 'selectedRows' ) . should ( 'have.text' , '{"1.0.0.0":true,"1.0.0.1":true,"1.0.0.2":true}' ) ;
752
+ cy . findByText ( 'Selma Kaufman' ) . click ( ) ;
753
+ cy . findByTestId ( 'selectedRows' ) . should (
754
+ 'have.text' ,
755
+ '{"1.0.0.0":true,"1.0.0.1":true,"1.0.0.2":true,"1.0.0.3":true,"1.0.0":true}'
756
+ ) ;
722
757
} ) ;
723
758
724
759
it ( 'useIndeterminateRowSelection' , ( ) => {
0 commit comments