From 53992eb6ea91a1ac5aabe86b983f558f42fd275f Mon Sep 17 00:00:00 2001 From: Prakash Prajapati Date: Wed, 19 Jan 2022 12:28:01 +0000 Subject: [PATCH] [FIX] web_enterprise: close the burger menu on the new dialog When the wizard (new dialog) is opened on the burger menu item, the burger menu does not close. The burger menu appears on the wizard. It is fixed. Reproduction Steps -Installed project application -Reporting -> Burndown Chart task-2739646 closes odoo/odoo#90721 X-original-commit: 69821a67ca04d9aa5bb040d93e491c7f75b67232 Related: odoo/enterprise#27027 Signed-off-by: Laurent Stukkens (ltu) --- .../src/webclient/burger_menu/burger_menu.js | 5 +-- .../static/tests/mobile/burger_menu_tests.js | 35 +++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) 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"); +});