From 47acba560a8954f10bfa97b28daf90047005fdf1 Mon Sep 17 00:00:00 2001 From: Bruno Boi Date: Fri, 11 Jun 2021 12:50:48 +0000 Subject: [PATCH] [FIX] web: open menus in new tab Before this commit, menus in navbar and clickable elements on the home menu were not openable in a new tab through a ctrl-click or through the middlemouse button. In order to achieve that, we now use default behavior of elements. As such default behaviour would conflict with clicks, a global click handler is added in the WebClient constructor which stops the click event propagation under these specific circumstances (ctrl-click inside an element). Besides this work, it has been found that the root element should not always be a
as it was, but sometimes it has to be another HTML element in order to comply with the W3C specs. E.g. a component as a first level child of an -
+ diff --git a/addons/web/static/src/core/dropdown/dropdown_item.xml b/addons/web/static/src/core/dropdown/dropdown_item.xml index e1b9103e3b7..f1533698cf6 100644 --- a/addons/web/static/src/core/dropdown/dropdown_item.xml +++ b/addons/web/static/src/core/dropdown/dropdown_item.xml @@ -2,10 +2,13 @@ -
  • - - - +
  • +
  • diff --git a/addons/web/static/src/legacy/scss/navbar.scss b/addons/web/static/src/legacy/scss/navbar.scss index b946ef19d76..220e17c6f3b 100644 --- a/addons/web/static/src/legacy/scss/navbar.scss +++ b/addons/web/static/src/legacy/scss/navbar.scss @@ -93,6 +93,12 @@ } } + .o_nav_entry { + padding: 0; + @extend %-main-navbar-entry-base; + @extend %-main-navbar-entry-padding; + } + .o_dropdown .o_dropdown_menu, .dropdown-menu { margin-top: 0; border-top: 0; @@ -100,7 +106,9 @@ } .o_dropdown_menu_group_entry { - padding-left: $o-dropdown-hpadding * 1.5; + > *:first-child { + padding-left: $o-dropdown-hpadding * 1.5; + } + .o_dropdown_item:not(.o_dropdown_menu_group_entry) { margin-top: .8em; @@ -150,7 +158,7 @@ font-weight: $-backend-font-weight-bold; @include hover() { - background-color: transparent; + background: none; } } @@ -158,10 +166,6 @@ display: flex; grid-area: sections; - > .o_dropdown_item { - @extend %-main-navbar-entry-padding; - } - .o_more_dropdown_section_group { padding: $-backend-entry-vpadding $-backend-entry-hpadding; margin-top: .8em; diff --git a/addons/web/static/src/webclient/navbar/navbar.js b/addons/web/static/src/webclient/navbar/navbar.js index d90abd68e7a..73d2aa98de3 100644 --- a/addons/web/static/src/webclient/navbar/navbar.js +++ b/addons/web/static/src/webclient/navbar/navbar.js @@ -173,6 +173,14 @@ export class NavBar extends Component { this.menuService.selectMenu(menu); } } + + getMenuItemHref(payload) { + const parts = [`menu_id=${payload.id}`]; + if (payload.action) { + parts.push(`action=${payload.action.split(",")[1]}`); + } + return "#" + parts.join("&"); + } } NavBar.template = "web.NavBar"; NavBar.components = { MenuDropdown, MenuItem }; diff --git a/addons/web/static/src/webclient/navbar/navbar.xml b/addons/web/static/src/webclient/navbar/navbar.xml index db4e8fa1d07..81564d4794d 100644 --- a/addons/web/static/src/webclient/navbar/navbar.xml +++ b/addons/web/static/src/webclient/navbar/navbar.xml @@ -3,19 +3,25 @@
    -