@@ -842,6 +842,94 @@ describe('Row Pinning #grid', () => {
842842 } ) ;
843843 } ) ;
844844
845+ describe ( ' Cell Editing' , ( ) => {
846+
847+ beforeEach ( ( ) => {
848+ fix = TestBed . createComponent ( GridRowPinningComponent ) ;
849+ fix . detectChanges ( ) ;
850+ // enable cell editing for column
851+ grid = fix . componentInstance . instance ;
852+ grid . getColumnByName ( 'CompanyName' ) . editable = true ;
853+ } ) ;
854+
855+ it ( 'should enter edit mode for the next editable cell when tabbing.' , ( ) => {
856+ const gridContent = GridFunctions . getGridContent ( fix ) ;
857+ grid . getRowByIndex ( 0 ) . pin ( ) ;
858+ fix . detectChanges ( ) ;
859+ grid . getRowByIndex ( 3 ) . pin ( ) ;
860+ fix . detectChanges ( ) ;
861+
862+ const firstEditable = grid . getCellByColumn ( 0 , 'CompanyName' ) ;
863+ const secondEditable = grid . getCellByColumn ( 1 , 'CompanyName' ) ;
864+ const thirdEditable = grid . getCellByColumn ( 3 , 'CompanyName' ) ;
865+ const fourthEditable = grid . getCellByColumn ( 5 , 'CompanyName' ) ;
866+
867+ // enter edit mode for pinned row
868+ UIInteractions . simulateDoubleClickAndSelectEvent ( firstEditable ) ;
869+ fix . detectChanges ( ) ;
870+
871+ expect ( firstEditable . editMode ) . toBeTruthy ( ) ;
872+
873+ // press tab on edited cell
874+ UIInteractions . triggerEventHandlerKeyDown ( 'tab' , gridContent ) ;
875+ fix . detectChanges ( ) ;
876+
877+ expect ( firstEditable . editMode ) . toBeFalsy ( ) ;
878+ expect ( secondEditable . editMode ) . toBeTruthy ( ) ;
879+
880+ // press tab on edited cell
881+ UIInteractions . triggerEventHandlerKeyDown ( 'tab' , gridContent ) ;
882+ fix . detectChanges ( ) ;
883+
884+ expect ( secondEditable . editMode ) . toBeFalsy ( ) ;
885+ expect ( thirdEditable . editMode ) . toBeTruthy ( ) ;
886+
887+ UIInteractions . triggerEventHandlerKeyDown ( 'tab' , gridContent ) ;
888+ fix . detectChanges ( ) ;
889+
890+ expect ( thirdEditable . editMode ) . toBeFalsy ( ) ;
891+ expect ( fourthEditable . editMode ) . toBeTruthy ( ) ;
892+ } ) ;
893+ it ( 'should enter edit mode for the previous editable cell when shift+tabbing.' , ( ) => {
894+ const gridContent = GridFunctions . getGridContent ( fix ) ;
895+ grid . getRowByIndex ( 0 ) . pin ( ) ;
896+ fix . detectChanges ( ) ;
897+ grid . getRowByIndex ( 3 ) . pin ( ) ;
898+ fix . detectChanges ( ) ;
899+
900+ const firstEditable = grid . getCellByColumn ( 0 , 'CompanyName' ) ;
901+ const secondEditable = grid . getCellByColumn ( 1 , 'CompanyName' ) ;
902+ const thirdEditable = grid . getCellByColumn ( 3 , 'CompanyName' ) ;
903+ const fourthEditable = grid . getCellByColumn ( 5 , 'CompanyName' ) ;
904+
905+ // enter edit mode for unpinned row
906+ UIInteractions . simulateDoubleClickAndSelectEvent ( fourthEditable ) ;
907+ fix . detectChanges ( ) ;
908+
909+ expect ( fourthEditable . editMode ) . toBeTruthy ( ) ;
910+ // press shift+tab on edited cell
911+ UIInteractions . triggerEventHandlerKeyDown ( 'tab' , gridContent , false , true ) ;
912+ fix . detectChanges ( ) ;
913+
914+ expect ( fourthEditable . editMode ) . toBeFalsy ( ) ;
915+ expect ( thirdEditable . editMode ) . toBeTruthy ( ) ;
916+
917+ // press shift+tab on edited cell
918+ UIInteractions . triggerEventHandlerKeyDown ( 'tab' , gridContent , false , true ) ;
919+ fix . detectChanges ( ) ;
920+
921+ expect ( thirdEditable . editMode ) . toBeFalsy ( ) ;
922+ expect ( secondEditable . editMode ) . toBeTruthy ( ) ;
923+
924+ // press shift+tab on edited cell
925+ UIInteractions . triggerEventHandlerKeyDown ( 'tab' , gridContent , false , true ) ;
926+ fix . detectChanges ( ) ;
927+
928+ expect ( secondEditable . editMode ) . toBeFalsy ( ) ;
929+ expect ( firstEditable . editMode ) . toBeTruthy ( ) ;
930+ } ) ;
931+ } ) ;
932+
845933 describe ( ' Navigation' , ( ) => {
846934 let gridContent : DebugElement ;
847935
0 commit comments