From 741b79cfccd86a3287df983bba2cc994052d3301 Mon Sep 17 00:00:00 2001 From: luvi Date: Mon, 3 Jan 2022 10:43:29 +0000 Subject: [PATCH] [IMP] web: trim keywords in the search bar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the search field is used to query an element, the value is trimmed to remove unnecessary spaces before and after the actual keywords. This eliminates the annoyance of a search having no result because of a space that was left (for example when copy- pasting some text). A test has been added to check if a value has been trimmed when the text input contains spaces. closes odoo/odoo#82193 Signed-off-by: Géry Debongnie --- addons/web/static/src/search/search_model.js | 5 ++- .../static/tests/search/search_bar_tests.js | 32 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/search/search_model.js b/addons/web/static/src/search/search_model.js index 21e161c79a1..5a5e720e0a1 100644 --- a/addons/web/static/src/search/search_model.js +++ b/addons/web/static/src/search/search_model.js @@ -1517,7 +1517,10 @@ export class SearchModel extends EventBus { const domains = autocompleteValues.map(({ label, value, operator }) => { let domain; if (field.filterDomain) { - domain = new Domain(field.filterDomain).toList({ self: label, raw_value: value }); + domain = new Domain(field.filterDomain).toList({ + self: label.trim(), + raw_value: value, + }); } else { domain = [[field.fieldName, operator, value]]; } diff --git a/addons/web/static/tests/search/search_bar_tests.js b/addons/web/static/tests/search/search_bar_tests.js index c18a4edec2a..c3d901c3564 100644 --- a/addons/web/static/tests/search/search_bar_tests.js +++ b/addons/web/static/tests/search/search_bar_tests.js @@ -659,6 +659,38 @@ QUnit.module("Search", (hooks) => { assert.deepEqual(getDomain(controlPanel), [["bool", "=", false]]); }); + QUnit.test("the search value is trimmed to remove unnecessary spaces", async function (assert) { + const controlPanel = await makeWithSearch({ + serverData, + resModel: "partner", + Component: ControlPanel, + searchMenuTypes: [], + searchViewId: false, + searchViewArch: ` + + + + `, + }); + await editSearch(controlPanel, "bar"); + await validateSearch(controlPanel); + + assert.deepEqual(getDomain(controlPanel), [["foo", "ilike", "bar"]]); + + await removeFacet(controlPanel); + + assert.deepEqual(getDomain(controlPanel), []); + + await editSearch(controlPanel, " bar "); + await validateSearch(controlPanel); + + assert.deepEqual( + getDomain(controlPanel), + [["foo", "ilike", "bar"]], + "the value has been trimmed" + ); + }); + QUnit.test("reference fields are supported in search view", async function (assert) { assert.expect(4);