Skip to content
Snippets Groups Projects
Commit afb3c28f authored by qsm-odoo's avatar qsm-odoo
Browse files

[FIX] web: restore modal backdrops click behavior

Since https://github.com/odoo/odoo/commit/2ad49ec93e39ae5d59ccc17884408870e1c86c5e

,
all dialogs were able to be closed by clicking on the backdrop which was
not a desired behavior.

Indeed, the 'backdrop' option of the BS component was misused.

closes odoo/odoo#35300

Signed-off-by: default avatarQuentin Smetz (qsm) <qsm@odoo.com>
parent a86795e6
Branches
Tags
No related merge requests found
......@@ -53,8 +53,8 @@ var Dialog = Widget.extend({
* @param {jQueryElement} [options.$parentNode]
* Element in which dialog will be appended, by default it will be
* in the body
* @param {boolean} [options.backdrop=true]
* Whether modal rendered with backdrop or not
* @param {boolean|string} [options.backdrop='static']
* The kind of modal backdrop to use (see BS documentation)
* @param {boolean} [options.renderHeader=true]
* Whether or not the dialog should be rendered with header
* @param {boolean} [options.renderFooter=true]
......@@ -75,7 +75,7 @@ var Dialog = Widget.extend({
buttons: [{text: _t("Ok"), close: true}],
technical: true,
$parentNode: false,
backdrop: true,
backdrop: 'static',
renderHeader: true,
renderFooter: true,
});
......
......@@ -3,6 +3,7 @@ odoo.define('web.widget_tests', function (require) {
var AjaxService = require('web.AjaxService');
var core = require('web.core');
var Dialog = require('web.Dialog');
var QWeb = require('web.QWeb');
var Widget = require('web.Widget');
var testUtils = require('web.test_utils');
......@@ -482,6 +483,24 @@ QUnit.module('core', {}, function () {
assert.verifySteps(['destroy'], "child should have been detroyed only once");
});
QUnit.module('Widgets, Dialog');
QUnit.test("don't close dialog on backdrop click", async function (assert) {
assert.expect(3);
var dialog = new Dialog(null);
dialog.open();
await dialog.opened();
assert.strictEqual($('.modal.show').length, 1, "a dialog should have opened");
var $backdrop = $('.modal-backdrop');
assert.strictEqual($backdrop.length, 1, "the dialog should have a modal backdrop");
testUtils.dom.click('.modal.show'); // Click on backdrop is in fact a direct click on the .modal element
assert.strictEqual($('.modal.show').length, 1, "the dialog should still be opened");
dialog.close();
});
});
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment