From 5879e40445f0176d545b4a50f7f7ec33b2e171c8 Mon Sep 17 00:00:00 2001 From: Benjamin Vray Date: Tue, 30 Jun 2020 13:23:17 +0000 Subject: [PATCH] [IMP] website, *: add new footer effect options *: web Part of https://github.com/odoo/odoo/pull/49142 task-2229551 Co-authored-by: qsm-odoo --- addons/web/static/src/scss/base_frontend.scss | 3 +++ .../src/js/content/snippets.animation.js | 22 +++++++++++++++++++ .../static/src/scss/primary_variables.scss | 1 + addons/website/static/src/scss/website.scss | 18 +++++++++++++++ addons/website/views/snippets/snippets.xml | 11 ++++++++++ addons/website/views/website_templates.xml | 7 ++++++ 6 files changed, 62 insertions(+) diff --git a/addons/web/static/src/scss/base_frontend.scss b/addons/web/static/src/scss/base_frontend.scss index 1175ab2c990..f1c341a89f9 100644 --- a/addons/web/static/src/scss/base_frontend.scss +++ b/addons/web/static/src/scss/base_frontend.scss @@ -1,5 +1,8 @@ // Frontend general #wrapwrap { + // The z-index is useful to prevent that children with a negative z-index + // go behind the wrapwrap (we create a new stacking context). + z-index: 0; position: relative; display: flex; flex-flow: column nowrap; diff --git a/addons/website/static/src/js/content/snippets.animation.js b/addons/website/static/src/js/content/snippets.animation.js index 0cb7334af64..48afbe0db65 100644 --- a/addons/website/static/src/js/content/snippets.animation.js +++ b/addons/website/static/src/js/content/snippets.animation.js @@ -967,6 +967,28 @@ registry.ScrollButton = registry.anchorSlide.extend({ }, }); +registry.FooterSlideout = publicWidget.Widget.extend({ + selector: '#wrapwrap:has(.o_footer_slideout)', + disabledInEditableMode: false, + + /** + * @override + */ + async start() { + const $main = this.$('> main'); + const slideoutEffect = $main.outerHeight() >= $(window).outerHeight(); + this.el.classList.toggle('o_footer_effect_enable', slideoutEffect); + return this._super(...arguments); + }, + /** + * @override + */ + destroy() { + this._super(...arguments); + this.el.classList.remove('o_footer_effect_enable'); + }, +}); + return { Widget: publicWidget.Widget, Animation: Animation, diff --git a/addons/website/static/src/scss/primary_variables.scss b/addons/website/static/src/scss/primary_variables.scss index a3c4cbba5dd..2fd572c69f6 100644 --- a/addons/website/static/src/scss/primary_variables.scss +++ b/addons/website/static/src/scss/primary_variables.scss @@ -255,6 +255,7 @@ $o-base-website-values-palette: ( 'btn-secondary-outline': false, 'header-template': 'logo_menu', 'footer-template': 'products_contacts_about_us', + 'footer-effect': null, // null / 'slideout_slide_hover' / 'slideout_shadow' ); $o-website-values-palettes: ( ( diff --git a/addons/website/static/src/scss/website.scss b/addons/website/static/src/scss/website.scss index 1c4daea78ca..ac2f9a31a18 100644 --- a/addons/website/static/src/scss/website.scss +++ b/addons/website/static/src/scss/website.scss @@ -863,6 +863,24 @@ header { } } +@if index(('slideout_slide_hover', 'slideout_shadow'), o-website-value('footer-effect')) { + @include media-breakpoint-up(lg) { + #wrapwrap.o_footer_effect_enable { + > main { + background-color: $body-bg; + @if o-website-value('footer-effect') == 'slideout_shadow' { + box-shadow: $box-shadow; + } + } + > footer { + @include o-position-absolute(0, 0, 0, 0); + position: sticky; + z-index: -1; + } + } + } +} + // Copyright .o_footer_copyright { diff --git a/addons/website/views/snippets/snippets.xml b/addons/website/views/snippets/snippets.xml index a6074432768..6b71320c7b1 100644 --- a/addons/website/views/snippets/snippets.xml +++ b/addons/website/views/snippets/snippets.xml @@ -554,6 +554,17 @@ data-customize-website-variable="address_logo" string="Address - Logo"/> + + + + +
+ + +