@@ -195,7 +195,7 @@ angular.module('ui.bootstrap.modal', [])
195
195
}
196
196
} ) ;
197
197
198
- function removeModalWindow ( modalInstance ) {
198
+ function removeModalWindow ( modalInstance , elementToReceiveFocus ) {
199
199
200
200
var body = $document . find ( 'body' ) . eq ( 0 ) ;
201
201
var modalWindow = openedWindows . get ( modalInstance ) . value ;
@@ -208,6 +208,13 @@ angular.module('ui.bootstrap.modal', [])
208
208
body . toggleClass ( OPENED_MODAL_CLASS , openedWindows . length ( ) > 0 ) ;
209
209
checkRemoveBackdrop ( ) ;
210
210
} ) ;
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
+ }
211
218
}
212
219
213
220
function checkRemoveBackdrop ( ) {
@@ -318,8 +325,7 @@ angular.module('ui.bootstrap.modal', [])
318
325
var modalWindow = openedWindows . get ( modalInstance ) ;
319
326
if ( modalWindow && broadcastClosing ( modalWindow , result , true ) ) {
320
327
modalWindow . value . deferred . resolve ( result ) ;
321
- removeModalWindow ( modalInstance ) ;
322
- modalWindow . value . modalOpener . focus ( ) ;
328
+ removeModalWindow ( modalInstance , modalWindow . value . modalOpener ) ;
323
329
return true ;
324
330
}
325
331
return ! modalWindow ;
@@ -329,8 +335,7 @@ angular.module('ui.bootstrap.modal', [])
329
335
var modalWindow = openedWindows . get ( modalInstance ) ;
330
336
if ( modalWindow && broadcastClosing ( modalWindow , reason , false ) ) {
331
337
modalWindow . value . deferred . reject ( reason ) ;
332
- removeModalWindow ( modalInstance ) ;
333
- modalWindow . value . modalOpener . focus ( ) ;
338
+ removeModalWindow ( modalInstance , modalWindow . value . modalOpener ) ;
334
339
return true ;
335
340
}
336
341
return ! modalWindow ;
0 commit comments