diff --git a/addons/web/static/src/webclient/burger_menu/burger_menu.js b/addons/web/static/src/webclient/burger_menu/burger_menu.js index d0110f9ca2d..bd944b4edd8 100644 --- a/addons/web/static/src/webclient/burger_menu/burger_menu.js +++ b/addons/web/static/src/webclient/burger_menu/burger_menu.js @@ -61,8 +61,9 @@ export class BurgerMenu extends Component { _toggleUserMenu() { this.state.isUserMenuOpened = !this.state.isUserMenuOpened; } - _onMenuClicked(menu) { - this.menuRepo.selectMenu(menu); + async _onMenuClicked(menu) { + await this.menuRepo.selectMenu(menu); + this._closeBurger(); } _onSwipeStart(ev) { this.swipeStartX = ev.changedTouches[0].clientX; diff --git a/addons/web/static/tests/mobile/burger_menu_tests.js b/addons/web/static/tests/mobile/burger_menu_tests.js index bae36669050..889c53d2f2e 100644 --- a/addons/web/static/tests/mobile/burger_menu_tests.js +++ b/addons/web/static/tests/mobile/burger_menu_tests.js @@ -122,3 +122,38 @@ QUnit.test("Burger menu closes when an action is requested", async (assert) => { assert.containsNone(document.body, ".o_burger_menu"); assert.containsOnce(document.body, ".o_kanban_view"); }); + +QUnit.test("Burger menu closes when click on menu item", async (assert) => { + serverData.actions[1].target = 'new'; + serverData.menus[1].children = [99]; + serverData.menus[99] = { + id: 99, + children: [], + name: "SubMenu", + appID: 1, + actionID: 1, + xmlid: "", + webIconData: undefined, + webIcon: false, + }; + await createWebClient({ serverData }); + await click(document.body, ".o_navbar_apps_menu .dropdown-toggle"); + await legacyExtraNextTick(); + await click(document.body, ".o_app:nth-of-type(2)"); + await legacyExtraNextTick(); + + assert.containsNone(document.body, ".o_burger_menu"); + + await click(document.body, ".o_mobile_menu_toggle"); + assert.containsOnce(document.body, ".o_burger_menu"); + assert.strictEqual( + document.body.querySelector( + ".o_burger_menu .o_burger_menu_app .o_menu_sections .dropdown-item" + ).textContent, + "SubMenu" + ); + await click(document.body, ".o_burger_menu .o_burger_menu_app .o_menu_sections .dropdown-item"); + await legacyExtraNextTick(); + await legacyExtraNextTick(); + assert.containsNone(document.body, ".o_burger_menu"); +});