diff --git a/addons/web/static/src/js/views/pivot/pivot_controller.js b/addons/web/static/src/js/views/pivot/pivot_controller.js index 723d52aa25c..1138778156a 100644 --- a/addons/web/static/src/js/views/pivot/pivot_controller.js +++ b/addons/web/static/src/js/views/pivot/pivot_controller.js @@ -173,7 +173,7 @@ odoo.define('web.PivotController', function (require) { if (ev.target.closest('.o_pivot_measures_list')) { ev.preventDefault(); ev.stopPropagation(); - const field = $target.data('field'); + const field = ev.target.dataset.field; if (field) { this.update({ measure: field }); } diff --git a/addons/web/static/tests/views/pivot_tests.js b/addons/web/static/tests/views/pivot_tests.js index 6fd8aaf4e92..ebcd2b69902 100644 --- a/addons/web/static/tests/views/pivot_tests.js +++ b/addons/web/static/tests/views/pivot_tests.js @@ -2333,6 +2333,32 @@ QUnit.module('Views', { pivot.destroy(); }); + QUnit.test('Click on the measure list but not on a menu item', async function (assert) { + assert.expect(2); + + const pivot = await createView({ + View: PivotView, + model: "partner", + data: this.data, + arch: ``, + }); + + // open the "Measures" menu + await testUtils.dom.click(pivot.el.querySelector('.o_cp_buttons button')); + + // click on the divider in the "Measures" menu does not crash + await testUtils.dom.click(pivot.el.querySelector('.o_pivot_measures_list .dropdown-divider')); + // the menu should still be open + assert.isVisible(pivot.el.querySelector('.o_pivot_measures_list')); + + // click on the measure list but not on a menu item or the separator + await testUtils.dom.click(pivot.el.querySelector('.o_pivot_measures_list')); + // the menu should still be open + assert.isVisible(pivot.el.querySelector('.o_pivot_measures_list')); + + pivot.destroy(); + }); + QUnit.test('Navigation list view for a group and back with breadcrumbs', async function (assert) { assert.expect(16); // create an action manager to test the interactions with the search view