diff --git a/addons/website/models/theme_models.py b/addons/website/models/theme_models.py
index a55ef2c9e4e..c1c9ccbdda3 100644
--- a/addons/website/models/theme_models.py
+++ b/addons/website/models/theme_models.py
@@ -193,6 +193,7 @@ class Theme(models.AbstractModel):
self.disable_view('website.template_header_boxed')
self.disable_view('website.template_header_centered_logo')
self.disable_view('website.template_header_image')
+ self.disable_view('website.template_header_hamburger_full')
# Reinitialize footer templates
self.enable_view('website.footer_custom')
diff --git a/addons/website/static/src/js/content/snippets.animation.js b/addons/website/static/src/js/content/snippets.animation.js
index 7de8fbef029..a68e8555c1d 100644
--- a/addons/website/static/src/js/content/snippets.animation.js
+++ b/addons/website/static/src/js/content/snippets.animation.js
@@ -978,6 +978,25 @@ registry.FooterSlideout = publicWidget.Widget.extend({
},
});
+registry.HeaderHamburgerFull = publicWidget.Widget.extend({
+ selector: 'header:has(.o_header_hamburger_full_toggler):not(:has(.o_offcanvas_menu_toggler))',
+ events: {
+ 'click .o_header_hamburger_full_toggler': '_onToggleClick',
+ },
+
+ //--------------------------------------------------------------------------
+ // Handlers
+ //--------------------------------------------------------------------------
+
+ /**
+ * @private
+ */
+ _onToggleClick() {
+ document.body.classList.add('overflow-hidden');
+ setTimeout(() => $(window).trigger('scroll'), 100);
+ },
+});
+
return {
Widget: publicWidget.Widget,
Animation: Animation,
diff --git a/addons/website/static/src/scss/website.scss b/addons/website/static/src/scss/website.scss
index b901ecabb97..0d5fb8a161d 100644
--- a/addons/website/static/src/scss/website.scss
+++ b/addons/website/static/src/scss/website.scss
@@ -823,17 +823,28 @@ header {
@if $-off-canvas-hamburger {
#top_menu_collapse {
- flex-direction: if($-hamburger-left, row, row-reverse);
&.collapsing, &.show {
@include o-position-absolute(0, 0, 0, 0);
position: fixed;
- display: flex;
- align-items: stretch;
z-index: $zindex-sticky;
transition: none;
transform: none;
+ &, & > .o_header_collapsed_content_wrapper {
+ // TODO improve: ugly code to reset a potential wrapper
+ display: flex !important;
+ flex-flow: if($-hamburger-left, row, row-reverse) nowrap !important;
+ align-items: stretch !important;
+ justify-content: flex-start !important;
+ }
+ > .o_header_collapsed_content_wrapper {
+ // TODO improve: ugly code to reset a potential wrapper
+ max-width: none !important;
+ padding: 0 !important;
+ margin: 0 !important;
+ }
+
.o_offcanvas_menu_backdrop {
@include o-position-absolute(0, 0, 0, 0);
opacity: .2;
@@ -843,12 +854,13 @@ header {
#top_menu {
flex: 0 0 auto !important;
overflow: auto;
- flex-wrap: nowrap;
+ flex-flow: column nowrap !important;
@if $-hamburger-center {
width: 100%;
max-width: none;
} @else {
max-width: 560px;
+ text-align: left !important;
}
min-width: 250px;
margin: 0 !important;
@@ -871,6 +883,13 @@ header {
.nav-item, .dropdown-menu {
text-align: inherit;
}
+ .nav-item, .nav-link {
+ margin: 0 !important;
+ }
+
+ .navbar-toggler {
+ display: block !important;
+ }
// Open all dropdowns
.dropdown-toggle {
@@ -895,7 +914,7 @@ header {
.o_connected_user header:not(.o_header_is_scrolled) &,
.o_connected_user header.o_header_affixed & {
- padding-top: $o-navbar-height;
+ padding-top: $o-navbar-height !important;
}
}
&.collapsing #top_menu {
@@ -997,6 +1016,53 @@ header {
width: 50%;
}
}
+} @else if o-website-value('header-template') == 'hamburger-full' {
+ @if not $-off-canvas-hamburger {
+ @include media-breakpoint-up(md) {
+ #wrapwrap {
+ $o-hamburger-full-navbar-height: $o-theme-navbar-logo-height + ($navbar-padding-y * 2);
+ > header {
+ .navbar-collapse {
+ > .container {
+ height: calc(100vh - #{$o-navbar-height} - #{$o-hamburger-full-navbar-height});
+ transition: height .3s ease;
+ }
+ .nav-link {
+ padding-right: $nav-link-padding-x;
+ padding-left: $nav-link-padding-x;
+ }
+ .dropdown-menu {
+ position: absolute;
+ }
+ }
+ &:not(.o_header_affixed) {
+ position: sticky;
+ top: 0;
+ right: 0;
+ bottom: auto;
+ left: 0;
+ z-index: $zindex-fixed;
+ }
+ &.o_header_affixed {
+ transform: none !important;
+ }
+ }
+ > main {
+ > :first-child:not(#wrap), #wrap > :first-child {
+ &::before {
+ content: "";
+ display: block;
+ width: 100%;
+ margin-top: $o-hamburger-full-navbar-height;
+ }
+ }
+ }
+ }
+ #oe_main_menu_navbar ~ #wrapwrap > header {
+ top: $o-navbar-height;
+ }
+ }
+ }
}
// Mega menu
diff --git a/addons/website/views/snippets/snippets.xml b/addons/website/views/snippets/snippets.xml
index f09a8ec82e2..ed7d7b6ad1e 100644
--- a/addons/website/views/snippets/snippets.xml
+++ b/addons/website/views/snippets/snippets.xml
@@ -602,6 +602,9 @@
Image
+ Hamburger Full
@@ -633,7 +636,7 @@
data-customize-website-views="">Default
Off-Canvas
+ data-customize-website-views="website.option_header_off_canvas, website.option_header_off_canvas_template_header_hamburger, website.option_header_off_canvas_template_header_sidebar, website.option_header_off_canvas_template_header_hamburger_full">Off-Canvas
Text
diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml
index f3d02bcd1b3..8e6b9e2e4bc 100644
--- a/addons/website/views/website_templates.xml
+++ b/addons/website/views/website_templates.xml
@@ -1004,6 +1004,80 @@
+
+
+
+
-
+
+
+
+
diff --git a/addons/website_sale_wishlist/views/website_sale_wishlist_template.xml b/addons/website_sale_wishlist/views/website_sale_wishlist_template.xml
index 73f82f90ccc..25f2558a203 100644
--- a/addons/website_sale_wishlist/views/website_sale_wishlist_template.xml
+++ b/addons/website_sale_wishlist/views/website_sale_wishlist_template.xml
@@ -152,6 +152,16 @@
+
+
Shop Wishlist