@@ -195,7 +195,7 @@ angular.module('ui.bootstrap.modal', [])
195195 }
196196 } ) ;
197197
198- function removeModalWindow ( modalInstance ) {
198+ function removeModalWindow ( modalInstance , elementToReceiveFocus ) {
199199
200200 var body = $document . find ( 'body' ) . eq ( 0 ) ;
201201 var modalWindow = openedWindows . get ( modalInstance ) . value ;
@@ -208,6 +208,13 @@ angular.module('ui.bootstrap.modal', [])
208208 body . toggleClass ( OPENED_MODAL_CLASS , openedWindows . length ( ) > 0 ) ;
209209 checkRemoveBackdrop ( ) ;
210210 } ) ;
211+
212+ //move focus to specified element if available, or else to body
213+ if ( elementToReceiveFocus && elementToReceiveFocus . focus ) {
214+ elementToReceiveFocus . focus ( ) ;
215+ } else {
216+ body . focus ( ) ;
217+ }
211218 }
212219
213220 function checkRemoveBackdrop ( ) {
@@ -318,8 +325,7 @@ angular.module('ui.bootstrap.modal', [])
318325 var modalWindow = openedWindows . get ( modalInstance ) ;
319326 if ( modalWindow && broadcastClosing ( modalWindow , result , true ) ) {
320327 modalWindow . value . deferred . resolve ( result ) ;
321- removeModalWindow ( modalInstance ) ;
322- modalWindow . value . modalOpener . focus ( ) ;
328+ removeModalWindow ( modalInstance , modalWindow . value . modalOpener ) ;
323329 return true ;
324330 }
325331 return ! modalWindow ;
@@ -329,8 +335,7 @@ angular.module('ui.bootstrap.modal', [])
329335 var modalWindow = openedWindows . get ( modalInstance ) ;
330336 if ( modalWindow && broadcastClosing ( modalWindow , reason , false ) ) {
331337 modalWindow . value . deferred . reject ( reason ) ;
332- removeModalWindow ( modalInstance ) ;
333- modalWindow . value . modalOpener . focus ( ) ;
338+ removeModalWindow ( modalInstance , modalWindow . value . modalOpener ) ;
334339 return true ;
335340 }
336341 return ! modalWindow ;
0 commit comments