diff --git a/frontend-js/src/main/js/gui/ContextMenu.js b/frontend-js/src/main/js/gui/ContextMenu.js index 4bae539d2eb0f682a10a0b741e29a7cbe2c75b7c..86ef13636fdff442d76495dcc0bbe2d8406bc3e7 100644 --- a/frontend-js/src/main/js/gui/ContextMenu.js +++ b/frontend-js/src/main/js/gui/ContextMenu.js @@ -24,7 +24,12 @@ function ContextMenu(params) { self.MIN_SHOW_TIME = 2000; self._documentClickListener = function (e) { - if (e.target.className.indexOf("dropdown-link") === -1) { + var className = e.target.className; + if (typeof className === 'string' || className instanceof String) { + if (className.indexOf("dropdown-link") === -1) { + self.hide(e.timeStamp - self.MIN_SHOW_TIME); + } + } else { self.hide(e.timeStamp - self.MIN_SHOW_TIME); } }; diff --git a/frontend-js/src/test/js/gui/ContextMentu-test.js b/frontend-js/src/test/js/gui/ContextMentu-test.js index c1779f35e268d560462e5a3d78b545a18696fbb1..2c40461755a2950f4ca9740c09f8242c1250c4a1 100644 --- a/frontend-js/src/test/js/gui/ContextMentu-test.js +++ b/frontend-js/src/test/js/gui/ContextMentu-test.js @@ -8,25 +8,25 @@ var chai = require('chai'); var assert = chai.assert; var logger = require('../logger'); -describe('ContextMenu', function() { +describe('ContextMenu', function () { - it('constructor', function() { + it('constructor', function () { var map = helper.createCustomMap(); new ContextMenu({ - element : testDiv, - customMap : map + element: testDiv, + customMap: map }); assert.equal(logger.getWarnings().length, 0); }); - it('open', function() { + it('open', function () { var map = helper.createCustomMap(); var menu = new ContextMenu({ - element : testDiv, - customMap : map + element: testDiv, + customMap: map }); var event = document.createEvent('MouseEvent'); @@ -34,16 +34,31 @@ describe('ContextMenu', function() { assert.equal(logger.getWarnings().length, 0); }); - it('hide', function() { + it('hide', function () { var map = helper.createCustomMap(); var menu = new ContextMenu({ - element : testDiv, - customMap : map + element: testDiv, + customMap: map }); menu.hide(); assert.equal(logger.getWarnings().length, 0); + return menu.destroy(); + }); + + it('documentClickListener', function () { + var map = helper.createCustomMap(); + + var menu = new ContextMenu({ + element: testDiv, + customMap: map + }); + + menu._documentClickListener({target: {className: {}}}); + + return menu.destroy(); + }); });