From 36036540068fa14aa655cc7c9aff8dcbfbb3f578 Mon Sep 17 00:00:00 2001 From: yograj tandel Date: Thu, 18 Mar 2021 07:19:38 +0000 Subject: [PATCH] [FIX] web: broken listview dropdown on state_selection Before this commit: when clicking on an editable state_selection widget in listview, the dropdown is not displayed. this is happening because overflow of cell was hidden. After this commit: when clicking on an editable state_selection widget in listview, the dropdown is displayed. change overflow to visible for state_selection column. Also fixed the issue when selecting option from state_selection widget row was get edited or if it is not editable listview then view is swithed to form view, it is because of event propagation which we stopped here. Task - 2485883 closes odoo/odoo#68129 Signed-off-by: Simon Genin (ges@odoo) Co-authored-by: Mohammed Shekha --- addons/web/static/src/legacy/js/fields/basic_fields.js | 3 +++ addons/web/static/src/legacy/scss/list_view.scss | 2 +- addons/web/static/tests/legacy/fields/basic_fields_tests.js | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/legacy/js/fields/basic_fields.js b/addons/web/static/src/legacy/js/fields/basic_fields.js index 179d2771686..5ce2d004537 100644 --- a/addons/web/static/src/legacy/js/fields/basic_fields.js +++ b/addons/web/static/src/legacy/js/fields/basic_fields.js @@ -2682,6 +2682,9 @@ var StateSelectionWidget = AbstractField.extend({ */ _setSelection: function (ev) { ev.preventDefault(); + if (this.mode !== 'edit') { + ev.stopPropagation(); + } var $item = $(ev.currentTarget); var value = String($item.data('value')); this._setValue(value); diff --git a/addons/web/static/src/legacy/scss/list_view.scss b/addons/web/static/src/legacy/scss/list_view.scss index 2215183aa29..857e0cbd80b 100644 --- a/addons/web/static/src/legacy/scss/list_view.scss +++ b/addons/web/static/src/legacy/scss/list_view.scss @@ -28,7 +28,7 @@ } } tbody > tr > td:not(.o_list_record_selector) { - &:not(.o_handle_cell):not(.o_list_button) { + &:not(.o_handle_cell):not(.o_list_button):not(.o_state_selection_cell) { @include o-text-overflow(table-cell); &.o_list_text { white-space: pre-wrap; diff --git a/addons/web/static/tests/legacy/fields/basic_fields_tests.js b/addons/web/static/tests/legacy/fields/basic_fields_tests.js index aaf227863b5..668834bb189 100644 --- a/addons/web/static/tests/legacy/fields/basic_fields_tests.js +++ b/addons/web/static/tests/legacy/fields/basic_fields_tests.js @@ -6501,7 +6501,7 @@ QUnit.module('basic_fields', { }); QUnit.test('state_selection widget in editable list view', async function (assert) { - assert.expect(32); + assert.expect(33); var list = await createView({ View: ListView, @@ -6542,6 +6542,7 @@ QUnit.module('basic_fields', { "should still have one green status"); assert.containsNone(list, '.dropdown-menu.state:visible', "there should not be a dropdown"); + assert.containsNone(list, 'tr.o_selected_row', 'should not be in edit mode'); // switch to edit mode and check the result $cell = list.$('tbody td.o_state_selection_cell').first();