diff --git a/addons/web/static/src/legacy/js/control_panel/search_bar.js b/addons/web/static/src/legacy/js/control_panel/search_bar.js index 833b5eb8563..53358df6a07 100644 --- a/addons/web/static/src/legacy/js/control_panel/search_bar.js +++ b/addons/web/static/src/legacy/js/control_panel/search_bar.js @@ -275,7 +275,7 @@ odoo.define('web.SearchBar', function (require) { // - Selection sources // - "no result" items if (source.active) { - const labelValue = source.label || this.state.inputValue; + const labelValue = source.label || this.state.inputValue.trim(); this.model.dispatch('addAutoCompletionValues', { filterId: source.filterId, value: "value" in source ? source.value : this._parseWithSource(labelValue, source), diff --git a/addons/web/static/tests/legacy/control_panel/search_bar_tests.js b/addons/web/static/tests/legacy/control_panel/search_bar_tests.js index 61c54935266..075f103ca6f 100644 --- a/addons/web/static/tests/legacy/control_panel/search_bar_tests.js +++ b/addons/web/static/tests/legacy/control_panel/search_bar_tests.js @@ -251,6 +251,38 @@ QUnit.module("Search Bar (legacy)", (hooks) => { "a", "There should be a field facet with label 'a'"); }); + QUnit.test('autocomplete input is trimmed', async function (assert) { + assert.expect(3); + + let searchReadCount = 0; + const webClient = await createWebClient({ + serverData, + mockRPC: (route, args) => { + if (route === '/web/dataset/search_read') { + switch (searchReadCount) { + case 0: + // Done on loading + break; + case 1: + assert.deepEqual(args.domain, [["foo", "ilike", "a"]]); + break; + } + searchReadCount++; + } + } + }); + await doAction(webClient, 1); + + const searchInput = target.querySelector('.o_searchview_input'); + await testUtils.fields.editInput(searchInput, 'a '); + assert.containsN(target, '.o_searchview_autocomplete li', 2, + "there should be 2 result for 'a' in search bar autocomplete"); + + await testUtils.dom.triggerEvent(searchInput, 'keydown', {key: 'Enter'}); + assert.strictEqual(target.querySelector('.o_searchview_input_container .o_facet_values').innerText.trim(), + "a", "There should be a field facet with label 'a'"); + }); + QUnit.test('select an autocomplete field with `context` key', async function (assert) { assert.expect(9);