From a7fb02e3fa59fbf116da11b1784a1e13fadf28c9 Mon Sep 17 00:00:00 2001 From: Bruno Boi Date: Wed, 24 Aug 2022 11:32:20 +0000 Subject: [PATCH] [FIX] web: autocomplete should keep input value on search more MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Before this commit When searching more in an autocomplete component, the input value is emptied before opening the Search More dialog. # After this commit The input value keeps its content when the Search More dialog opens. closes odoo/odoo#98639 Signed-off-by: Michaƫl Mattiello --- addons/web/static/src/core/autocomplete/autocomplete.js | 6 ++---- addons/web/static/src/views/fields/relational_utils.js | 4 +++- .../web/static/tests/views/fields/many2one_field_tests.js | 3 +-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/addons/web/static/src/core/autocomplete/autocomplete.js b/addons/web/static/src/core/autocomplete/autocomplete.js index d863dd259a5..87a14958cfe 100644 --- a/addons/web/static/src/core/autocomplete/autocomplete.js +++ b/addons/web/static/src/core/autocomplete/autocomplete.js @@ -117,17 +117,15 @@ export class AutoComplete extends Component { ); } selectOption(indices, params = {}) { - this.inputRef.el.value = ""; - this.forceValFromProp = true; - const option = this.sources[indices[0]].options[indices[1]]; if (option.unselectable) { + this.inputRef.el.value = ""; return; } + this.forceValFromProp = true; this.props.onSelect(option, { ...params, - inputValue: this.inputRef.el.value.trim(), input: this.inputRef.el, }); this.close(); diff --git a/addons/web/static/src/views/fields/relational_utils.js b/addons/web/static/src/views/fields/relational_utils.js index 5a8942bdee8..26d1ace3f1e 100644 --- a/addons/web/static/src/views/fields/relational_utils.js +++ b/addons/web/static/src/views/fields/relational_utils.js @@ -167,7 +167,9 @@ export class Many2XAutocomplete extends owl.Component { }, fieldString, onClose: () => { - autoCompleteContainer.el.querySelector("input").focus(); + const autoCompleteInput = autoCompleteContainer.el.querySelector("input"); + autoCompleteInput.value = ""; + autoCompleteInput.focus(); }, }); diff --git a/addons/web/static/tests/views/fields/many2one_field_tests.js b/addons/web/static/tests/views/fields/many2one_field_tests.js index de9afc0c2a1..58a0e44b2d6 100644 --- a/addons/web/static/tests/views/fields/many2one_field_tests.js +++ b/addons/web/static/tests/views/fields/many2one_field_tests.js @@ -612,8 +612,6 @@ QUnit.module("Fields", (hooks) => { ); QUnit.test("many2ones in form views with search more", async function (assert) { - assert.expect(3); - for (let i = 5; i < 11; i++) { serverData.models.partner.records.push({ id: i, display_name: `Partner ${i}` }); } @@ -654,6 +652,7 @@ QUnit.module("Fields", (hooks) => { await selectDropdownItem(target, "trululu", "Search More..."); assert.strictEqual($("tr.o_data_row").length, 9, "should display 9 records"); + assert.equal(target.querySelector(".o_field_widget[name=trululu] input").value, "aaa"); const modal = target.querySelector(".modal");