diff --git a/package.json b/package.json index a02bc584b4..03af5b8601 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,9 @@ "version": "0.13.0-SNAPSHOT", "homepage": "http://angular-ui.github.io/bootstrap/", "dependencies": {}, + "scripts":{ + "test": "grunt" + }, "repository": { "type": "git", "url": "https://github.com/angular-ui/bootstrap.git" diff --git a/src/modal/modal.js b/src/modal/modal.js index b2a3e3f4d0..a4a9cab756 100644 --- a/src/modal/modal.js +++ b/src/modal/modal.js @@ -251,6 +251,11 @@ angular.module('ui.bootstrap.modal', []) } $document.bind('keydown', function (evt) { + + if (evt.isDefaultPrevented()) { + return evt; + } + var modal; if (evt.which === 27) { diff --git a/src/modal/test/modal.spec.js b/src/modal/test/modal.spec.js index c1d5fe4c29..c85be2e33f 100644 --- a/src/modal/test/modal.spec.js +++ b/src/modal/test/modal.spec.js @@ -238,6 +238,32 @@ describe('$modal', function () { expect($document).toHaveModalsOpen(0); }); + it('should not close on ESC if event.preventDefault() was issued', function () { + var modal = open({template: '
' }); + expect($document).toHaveModalsOpen(1); + + var button = angular.element('button').bind('keydown', preventKeyDown); + + triggerKeyDown(button, 27); + $timeout.flush(); + $rootScope.$digest(); + + expect($document).toHaveModalsOpen(1); + + button.unbind('keydown', preventKeyDown); + + triggerKeyDown(button, 27); + $timeout.flush(); + $rootScope.$digest(); + + expect($document).toHaveModalsOpen(0); + + + function preventKeyDown(evt) { + evt.preventDefault(); + } + }); + it('should support closing on backdrop click', function () { var modal = open({template: '
Content
'});