@@ -92,7 +92,7 @@ export class FocusManager {
9292 if ( e . target instanceof HTMLElement ) {
9393 const focusableNode = this . findNearestFocusableElement ( e . target ) ;
9494 if ( focusableNode && focusableNode . element . contains ( e . target ) ) {
95- this . setActiveNode ( focusableNode ) ;
95+ this . setActiveNode ( focusableNode , true ) ;
9696 this . setOutline ( false ) ;
9797 }
9898 }
@@ -173,7 +173,7 @@ export class FocusManager {
173173 }
174174
175175 if ( options . activate ) {
176- this . setActiveNode ( newNode ) ;
176+ this . setActiveNode ( newNode , false ) ;
177177 }
178178 }
179179
@@ -208,13 +208,13 @@ export class FocusManager {
208208 this . cursor . set ( undefined ) ;
209209 }
210210
211- private setActiveNode ( node ?: FocusableNode ) : boolean {
211+ private setActiveNode ( node ?: FocusableNode , skipScroll ?: boolean ) : boolean {
212212 if ( ! node ) return false ;
213213 const previousNode = this . currentNode ;
214214
215215 if ( ! node . options . focusable ) return false ;
216216
217- this . focusElement ( node . element ) ;
217+ this . focusElement ( node . element , skipScroll ) ;
218218 this . cursor . set ( node . element ) ;
219219
220220 if ( node === this . currentNode ) return true ;
@@ -944,7 +944,7 @@ export class FocusManager {
944944 }
945945 }
946946
947- focusElement ( element : HTMLElement ) : void {
947+ focusElement ( element : HTMLElement , skipScroll ?: boolean ) : void {
948948 if ( ! element || ! element . isConnected ) return ;
949949
950950 if ( element . tabIndex !== - 1 ) {
@@ -955,7 +955,9 @@ export class FocusManager {
955955 activeElement . blur ( ) ;
956956 }
957957 }
958- scrollIntoViewIfNeeded ( element ) ;
958+ if ( ! skipScroll ) {
959+ scrollIntoViewIfNeeded ( element ) ;
960+ }
959961 }
960962
961963 // ============================================
0 commit comments