diff options
Diffstat (limited to 'ui/js/common.js')
-rw-r--r-- | ui/js/common.js | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/ui/js/common.js b/ui/js/common.js index cd696caa9e4..bad37ea49a6 100644 --- a/ui/js/common.js +++ b/ui/js/common.js @@ -361,7 +361,16 @@ function PopUp(action, parameters, { .then(function(resp) { if ('error' in resp) { overlay.setProperties({ - content: makeMessageBox('bad', resp.error.messages, resp.error.title, false) + title: resp.header !== undefined ? resp.header : '', + content: makeMessageBox('bad', resp.error.messages, resp.error.title, false), + buttons: [ + { + 'title': t('Cancel'), + 'class': 'btn-alt js-cancel', + 'cancel': true, + 'action': function() {} + } + ] }); } else { @@ -401,6 +410,26 @@ function PopUp(action, parameters, { overlay.recoverFocus(); overlay.containFocus(); + }) + .fail((resp) => { + const error = resp.responseJSON !== undefined && resp.responseJSON.error !== undefined + ? resp.responseJSON.error + : {title: t('Unexpected server error.')}; + + overlay.setProperties({ + content: makeMessageBox('bad', error.messages, error.title, false), + buttons: [ + { + 'title': t('Cancel'), + 'class': 'btn-alt js-cancel', + 'cancel': true, + 'action': function() {} + } + ] + }); + + overlay.recoverFocus(); + overlay.containFocus(); }); addToOverlaysStack(overlay); @@ -522,15 +551,18 @@ function closeDialogHandler(event) { * @return {object|undefined|null} Overlay object, if found. */ function removeFromOverlaysStack(dialogueid, return_focus) { - var overlay = null; - if (return_focus !== false) { return_focus = true; } - overlay = overlays_stack.removeById(dialogueid); + const overlay = overlays_stack.removeById(dialogueid); + if (overlay && return_focus) { - jQuery(overlay.element).focus(); + if (overlay.element !== undefined) { + const element = overlay.element instanceof jQuery ? overlay.element[0] : overlay.element; + + element.focus({preventScroll: true}); + } } // Remove event listener. |