summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/web/static/src/js/views/list/list_editable_renderer.js2
-rw-r--r--addons/web/static/tests/views/list_tests.js32
2 files changed, 33 insertions, 1 deletions
diff --git a/addons/web/static/src/js/views/list/list_editable_renderer.js b/addons/web/static/src/js/views/list/list_editable_renderer.js
index 2122e00ed0c..a3c47684991 100644
--- a/addons/web/static/src/js/views/list/list_editable_renderer.js
+++ b/addons/web/static/src/js/views/list/list_editable_renderer.js
@@ -1817,7 +1817,7 @@ ListRenderer.include({
// ignore clicks if there is a modal, except if the list is in the last
// (active) modal
- var $modal = $('.modal:last');
+ var $modal = $('body > .modal:last');
if ($modal.length) {
var $listModal = this.$el.closest('.modal');
if ($modal.prop('id') !== $listModal.prop('id')) {
diff --git a/addons/web/static/tests/views/list_tests.js b/addons/web/static/tests/views/list_tests.js
index 8c0348c7e5c..6e142dff2ff 100644
--- a/addons/web/static/tests/views/list_tests.js
+++ b/addons/web/static/tests/views/list_tests.js
@@ -8245,6 +8245,38 @@ QUnit.module('Views', {
form.destroy();
});
+ QUnit.test('editable list alongside html field: click out to unselect the row', async function (assert) {
+ assert.expect(5);
+
+ const form = await createView({
+ View: FormView,
+ model: 'foo',
+ data: this.data,
+ arch: `
+ <form>
+ <field name="text" widget="html"/>
+ <field name="o2m">
+ <tree editable="bottom">
+ <field name="display_name"/>
+ </tree>
+ </field>
+ </form>`,
+ });
+
+ assert.containsNone(form, '.o_data_row');
+
+ await testUtils.dom.click(form.$('.o_field_x2many_list_row_add > a'));
+ assert.containsOnce(form, '.o_data_row');
+ assert.hasClass(form.$('.o_data_row'), 'o_selected_row');
+
+ // click outside to unselect the row
+ await testUtils.dom.click(document.body);
+ assert.containsOnce(form, '.o_data_row');
+ assert.doesNotHaveClass(form.$('.o_data_row'), 'o_selected_row');
+
+ form.destroy();
+ });
+
QUnit.test('list grouped by date:month', async function (assert) {
assert.expect(1);