diff --git a/addons/web/static/src/js/views/control_panel/control_panel_view.js b/addons/web/static/src/js/views/control_panel/control_panel_view.js index 0d842c4182d..381e5dcf7e5 100644 --- a/addons/web/static/src/js/views/control_panel/control_panel_view.js +++ b/addons/web/static/src/js/views/control_panel/control_panel_view.js @@ -197,6 +197,9 @@ var ControlPanelView = Factory.extend({ var groupNumber = 1; _.each(preFilters, function (preFilter) { + if (preFilter.attrs && preFilter.attrs.invisible) { + return; + } if (preFilter.tag !== currentTag || _.contains(['separator', 'field'], preFilter.tag)) { if (currentGroup.length) { if (currentTag === 'groupBy') { diff --git a/addons/web/static/tests/views/control_panel_tests.js b/addons/web/static/tests/views/control_panel_tests.js index 513cdb32e08..08cc1391719 100644 --- a/addons/web/static/tests/views/control_panel_tests.js +++ b/addons/web/static/tests/views/control_panel_tests.js @@ -330,5 +330,28 @@ QUnit.module('Views', { "there should be two groups of a single field" ); }); + + QUnit.module('Control Panel Rendering'); + + QUnit.test('invisible filters are not rendered', async function (assert) { + assert.expect(2); + var controlPanel = await createControlPanel({ + model: 'partner', + arch: "" + + "" + + "" + + "", + data: this.data, + searchMenuTypes: ['filter'], + context: { + search_disable_custom_filters: true, + }, + }); + testUtils.dom.click(controlPanel.$('.o_filters_menu_button')); + assert.containsOnce(controlPanel, '.o_menu_item a:contains("A")'); + assert.containsNone(controlPanel, '.o_menu_item a:contains("B")'); + + controlPanel.destroy(); + }); }); });