diff --git a/addons/web/static/src/search/search_model.js b/addons/web/static/src/search/search_model.js
index 9576b143ab2..d367210c042 100644
--- a/addons/web/static/src/search/search_model.js
+++ b/addons/web/static/src/search/search_model.js
@@ -1384,6 +1384,7 @@ export class SearchModel extends EventBus {
return {
controlPanel: "controlPanel" in display ? display.controlPanel : {},
searchPanel:
+ this.sections.size &&
(!this.view.type || viewTypes.includes(this.view.type)) &&
("searchPanel" in display ? display.searchPanel : true),
};
diff --git a/addons/web/static/tests/search/search_panel_tests.js b/addons/web/static/tests/search/search_panel_tests.js
index 77b594b590e..8f4b42a25c7 100644
--- a/addons/web/static/tests/search/search_panel_tests.js
+++ b/addons/web/static/tests/search/search_panel_tests.js
@@ -101,7 +101,7 @@ const makeTestComponent = ({ onWillStart, onWillUpdateProps } = {}) => {
TestComponent.components = { FilterMenu, GroupByMenu, SearchPanel };
TestComponent.template = xml`
-
+
`;
@@ -282,7 +282,29 @@ QUnit.module("Search", (hooks) => {
searchViewId: false,
display: { searchPanel: false },
});
- assert.doesNotHaveClass(comp.el, "o_component_with_search_panel");
+ assert.containsNone(comp, ".o_search_panel");
+ assert.deepEqual(getDomain(), []); // initial domain
+ });
+
+ QUnit.test("basic rendering of a component with empty search panel", async (assert) => {
+ assert.expect(2);
+
+ serverData.views["partner,false,search"] = ``;
+
+ const { TestComponent, getDomain } = makeTestComponent();
+ const comp = await makeWithSearch({
+ serverData,
+ async mockRPC(route, { method, model }) {
+ if (/search_panel_/.test(method || route)) {
+ assert.step(`${method || route} on ${model}`);
+ }
+ },
+ Component: TestComponent,
+ resModel: "partner",
+ searchViewId: false,
+ });
+
+ assert.containsNone(comp, ".o_search_panel");
assert.deepEqual(getDomain(), []); // initial domain
});
@@ -299,7 +321,6 @@ QUnit.module("Search", (hooks) => {
Component: TestComponent,
resModel: "partner",
searchViewId: false,
- view: { type: "kanban" },
});
assert.containsOnce(comp, ".o_search_panel");