From b607744d8e86c8a2a9d8532c13d1d60325cc8f8a Mon Sep 17 00:00:00 2001 From: Cocographique Date: Fri, 21 Aug 2020 11:12:27 +0000 Subject: [PATCH] [IMP] website, *: add 'hamburger full' header template *: website_sale, website_sale_wishlist Part of https://github.com/odoo/odoo/pull/56427 task-2264627 X-original-commit: 0b265a6564133b40e1b3090f736a0af24900188a Co-authored-by: qsm-odoo --- addons/website/models/theme_models.py | 1 + .../src/js/content/snippets.animation.js | 19 +++++ addons/website/static/src/scss/website.scss | 76 ++++++++++++++++-- addons/website/views/snippets/snippets.xml | 5 +- addons/website/views/website_templates.xml | 79 ++++++++++++++++++- addons/website_sale/views/templates.xml | 10 +++ .../views/website_sale_wishlist_template.xml | 10 +++ 7 files changed, 193 insertions(+), 7 deletions(-) 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 @@ + + + + - + + + + + +