[FIX] web: reload view when pressing enter in search bar
Before the control panel refactoring, whenever a user pressed ENTER in the search bar (with no text), the current view was reloaded. This untested behaviour was changed (not on purpose) with that refactoring: instead of reloading, the search view add a useless filter in the list of facets. We restore the previous behaviour in this commit. closes odoo/odoo#30503
This commit is contained in:
@@ -16,6 +16,7 @@ var ControlPanelController = mvc.Controller.extend({
|
||||
new_groupBy: '_onNewGroupBy',
|
||||
activate_time_range: '_onActivateTimeRange',
|
||||
autocompletion_filter: '_onAutoCompletionFilter',
|
||||
reload: '_onReload',
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -229,6 +230,14 @@ var ControlPanelController = mvc.Controller.extend({
|
||||
this.model.createNewGroupBy(ev.data);
|
||||
this._reportNewQueryAndRender();
|
||||
},
|
||||
/**
|
||||
* @private
|
||||
* @param {OdooEvent} ev
|
||||
*/
|
||||
_onReload: function (ev) {
|
||||
ev.stopPropagation();
|
||||
this.trigger_up('search', this.model.getQuery());
|
||||
},
|
||||
});
|
||||
|
||||
return ControlPanelController;
|
||||
|
||||
@@ -216,6 +216,11 @@ var SearchBar = Widget.extend({
|
||||
this.trigger_up('facet_removed');
|
||||
}
|
||||
break;
|
||||
case $.ui.keyCode.ENTER:
|
||||
if (this.$input.val() === '') {
|
||||
this.trigger_up('reload');
|
||||
}
|
||||
break;
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
@@ -55,7 +55,10 @@ return Widget.extend({
|
||||
}
|
||||
});
|
||||
this.$input.on('keypress', function (ev) {
|
||||
self.search_string = self.search_string + String.fromCharCode(ev.which);
|
||||
if (ev.which > 31 && ev.which !== 127) {
|
||||
// we filter control character out of the search string
|
||||
self.search_string = self.search_string + String.fromCharCode(ev.which);
|
||||
}
|
||||
if (self.search_string.length) {
|
||||
self.searching = true;
|
||||
var search_string = self.search_string;
|
||||
|
||||
@@ -3807,6 +3807,7 @@ QUnit.module('ActionManager', {
|
||||
actionManager.doAction(3);
|
||||
|
||||
var $searchInput = $('.o_searchview input');
|
||||
$searchInput.val('m');
|
||||
$searchInput.trigger($.Event('keypress', {key: 'm', which: 109, keyCode: 109}));
|
||||
$searchInput.trigger($.Event('keydown', {key: 'Enter', which: 13, keyCode: 13}));
|
||||
|
||||
@@ -3815,6 +3816,7 @@ QUnit.module('ActionManager', {
|
||||
|
||||
// Triggering the do_search above will kill the current searchview Input
|
||||
$searchInput = $('.o_searchview input');
|
||||
$searchInput.val('o');
|
||||
$searchInput.trigger($.Event('keypress', {key: 'o', which: 111, keyCode: 111}));
|
||||
|
||||
// We have something in the input of the search view. Making the search_read
|
||||
|
||||
@@ -2,7 +2,6 @@ odoo.define('web.search_view_tests', function (require) {
|
||||
"use strict";
|
||||
|
||||
var FormView = require('web.FormView');
|
||||
var ListView = require('web.ListView');
|
||||
var testUtils = require('web.test_utils');
|
||||
|
||||
var createActionManager = testUtils.createActionManager;
|
||||
@@ -1027,6 +1026,7 @@ QUnit.module('Search View', {
|
||||
assert.strictEqual(searchRead, 1, "there should be 1 search_read");
|
||||
|
||||
// 'r' key to filter on bar "First Record"
|
||||
$('.o_searchview_input').val('r');
|
||||
$('.o_searchview_input').trigger($.Event('keypress', { which: 82, keyCode: 82 }));
|
||||
$('.o_searchview_input').trigger($.Event('keydown', { which: $.ui.keyCode.DOWN, keyCode: $.ui.keyCode.DOWN }));
|
||||
$('.o_searchview_input').trigger($.Event('keydown', { which: $.ui.keyCode.RIGHT, keyCode: $.ui.keyCode.RIGHT }));
|
||||
@@ -1038,6 +1038,7 @@ QUnit.module('Search View', {
|
||||
assert.strictEqual(searchRead, 2, "there should be 2 search_read");
|
||||
|
||||
// 'r' key to filter on bar "Second Record"
|
||||
$('.o_searchview_input').val('r');
|
||||
$('.o_searchview_input').trigger($.Event('keypress', { which: 82, keyCode: 82 }));
|
||||
$('.o_searchview_input').trigger($.Event('keydown', { which: $.ui.keyCode.DOWN, keyCode: $.ui.keyCode.DOWN }));
|
||||
$('.o_searchview_input').trigger($.Event('keydown', { which: $.ui.keyCode.RIGHT, keyCode: $.ui.keyCode.RIGHT }));
|
||||
@@ -1052,6 +1053,36 @@ QUnit.module('Search View', {
|
||||
actionManager.destroy();
|
||||
});
|
||||
|
||||
QUnit.test('no search text triggers a reload', function (assert) {
|
||||
assert.expect(2);
|
||||
var rpcs = 0;
|
||||
var actionManager = createActionManager({
|
||||
actions: this.actions,
|
||||
archs: this.archs,
|
||||
data: this.data,
|
||||
mockRPC: function () {
|
||||
rpcs++;
|
||||
return this._super.apply(this, arguments);
|
||||
},
|
||||
});
|
||||
|
||||
actionManager.doAction(10);
|
||||
rpcs = 0;
|
||||
$('.o_searchview_input').trigger($.Event('keydown', {
|
||||
which: $.ui.keyCode.ENTER,
|
||||
keyCode: $.ui.keyCode.ENTER,
|
||||
}));
|
||||
$('.o_searchview_input').trigger($.Event('keyup', {
|
||||
which: $.ui.keyCode.ENTER,
|
||||
keyCode: $.ui.keyCode.ENTER,
|
||||
}));
|
||||
|
||||
assert.containsNone(actionManager, '.o_searchview_facet_label');
|
||||
assert.strictEqual(rpcs, 2, "should have reloaded");
|
||||
|
||||
actionManager.destroy();
|
||||
});
|
||||
|
||||
QUnit.module('TimeRangeMenu');
|
||||
|
||||
QUnit.test('time range menu stays hidden', function (assert) {
|
||||
|
||||
Reference in New Issue
Block a user