diff --git a/addons/web/static/src/legacy/js/control_panel/custom_filter_item.js b/addons/web/static/src/legacy/js/control_panel/custom_filter_item.js index 2fd044d161a..10128a9345c 100644 --- a/addons/web/static/src/legacy/js/control_panel/custom_filter_item.js +++ b/addons/web/static/src/legacy/js/control_panel/custom_filter_item.js @@ -125,8 +125,13 @@ odoo.define('web.CustomFilterItem', function (require) { } break; case 'selection': - const [firstValue] = this.fields[condition.field].selection[0]; - condition.value = firstValue; + if (this.fields[condition.field].selection.length) { + const [firstValue] = this.fields[condition.field].selection[0]; + condition.value = firstValue; + } + else { + condition.value = ""; + } break; default: condition.value = ""; diff --git a/addons/web/static/tests/legacy/control_panel/custom_filter_item_tests.js b/addons/web/static/tests/legacy/control_panel/custom_filter_item_tests.js index a2919905d09..e51a968b6dc 100644 --- a/addons/web/static/tests/legacy/control_panel/custom_filter_item_tests.js +++ b/addons/web/static/tests/legacy/control_panel/custom_filter_item_tests.js @@ -195,6 +195,36 @@ odoo.define('web.filter_menu_generator_tests', function (require) { await testUtils.fields.editSelect(target.querySelector('.o_generator_menu_value select'), 'white'); await cpHelpers.applyFilter(target); }); + QUnit.test('selection field: no value', async function (assert) { + assert.expect(2); + + this.fields.color.selection = []; + let expectedFilters; + class MockedSearchModel extends ActionModel { + dispatch(method, ...args) { + assert.strictEqual(method, 'createNewFilters'); + const preFilters = args[0]; + assert.deepEqual(preFilters, expectedFilters); + } + } + const searchModel = new MockedSearchModel(); + const cfi = await createComponent(CustomFilterItem, { + props: { + fields: this.fields, + }, + env: { searchModel }, + }); + + // Default value + expectedFilters = [{ + description: 'Color is ""', + domain: '[["color","=",""]]', + type: 'filter', + }]; + await toggleAddCustomFilterStandalone(cfi); + await testUtils.fields.editSelect(cfi.el.querySelector('.o_generator_menu_field'), 'color'); + await cpHelpers.applyFilter(cfi); + }) QUnit.test('adding a simple filter works', async function (assert) { assert.expect(7);