[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: Quentin Smetz (qsm) <qsm@odoo.com>
This commit is contained in:
@@ -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();
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user