@@ -167,23 +167,34 @@ export class IgxGridNavigationService {
167167 }
168168
169169 public movePreviousEditable ( rowIndex : number , currentColumnVisibleIndex : number ) {
170- const prevEditableColumnIndex = this . findNextEditable ( MoveDirection . LEFT , currentColumnVisibleIndex - 1 ) ;
170+ let prevEditableColumnIndex = this . findNextEditable ( MoveDirection . LEFT , currentColumnVisibleIndex - 1 ) ;
171171 if ( prevEditableColumnIndex === - 1 ) {
172- // TODO: make gridAPI visible for internal use and remove cast to any
173- ( this . grid as any ) . gridAPI . submit_value ( ) ;
174- if ( this . grid . rowEditTabs . length ) { this . grid . rowEditTabs . last . element . nativeElement . focus ( ) ; }
175- return ;
172+ if ( this . grid . rowEditTabs . length ) {
173+ // TODO: make gridAPI visible for internal use and remove cast to any
174+ ( this . grid as any ) . gridAPI . submit_value ( ) ;
175+ this . grid . rowEditTabs . last . element . nativeElement . focus ( ) ;
176+ return ;
177+ } else {
178+ // In case when row edit template is empty select last editable cell
179+ prevEditableColumnIndex = this . grid . lastEditableColumnIndex ;
180+ }
181+
176182 }
177183 this . focusEditableTarget ( rowIndex , prevEditableColumnIndex ) ;
178184 }
179185
180186 public moveNextEditable ( rowIndex : number , currentColumnVisibleIndex : number ) {
181- const nextEditableColumnIndex = this . findNextEditable ( MoveDirection . RIGHT , currentColumnVisibleIndex + 1 ) ;
187+ let nextEditableColumnIndex = this . findNextEditable ( MoveDirection . RIGHT , currentColumnVisibleIndex + 1 ) ;
182188 if ( nextEditableColumnIndex === - 1 ) {
183- // TODO: make gridAPI visible for internal use and remove cast to any
184- ( this . grid as any ) . gridAPI . submit_value ( ) ;
185- if ( this . grid . rowEditTabs . length ) { this . grid . rowEditTabs . first . element . nativeElement . focus ( ) ; }
186- return ;
189+ if ( this . grid . rowEditTabs . length ) {
190+ // TODO: make gridAPI visible for internal use and remove cast to any
191+ ( this . grid as any ) . gridAPI . submit_value ( ) ;
192+ this . grid . rowEditTabs . first . element . nativeElement . focus ( ) ;
193+ return ;
194+ } else {
195+ // In case when row edit template is empty select first editable cell
196+ nextEditableColumnIndex = this . grid . firstEditableColumnIndex ;
197+ }
187198 }
188199 this . focusEditableTarget ( rowIndex , nextEditableColumnIndex ) ;
189200 }
0 commit comments