From 69fb136a4840fdfc21a74a285a9548cbbe22b240 Mon Sep 17 00:00:00 2001 From: sri-odoo Date: Wed, 13 Mar 2019 11:07:20 +0000 Subject: [PATCH] [FIX] website_slides: styling fullscreen mode Since the fullscreen widget has been revamped, it needed to be pixel perfect. This commit cleans the CSS and DOM structure in order to optimize and sublime it. Task-1941250 --- .../src/js/slides_course_fullscreen_player.js | 26 +-- .../src/scss/slides_slide_fullscreen.scss | 152 ++++++++----- .../static/src/scss/website_slides.scss | 6 +- .../static/src/xml/slide_quiz.xml | 2 +- .../website_slides_templates_homepage.xml | 4 +- ...ite_slides_templates_lesson_fullscreen.xml | 209 +++++++++--------- .../views/website_slides_templates.xml | 7 +- 7 files changed, 227 insertions(+), 179 deletions(-) diff --git a/addons/website_slides/static/src/js/slides_course_fullscreen_player.js b/addons/website_slides/static/src/js/slides_course_fullscreen_player.js index 3a8d0165a52..a83df8a01cd 100644 --- a/addons/website_slides/static/src/js/slides_course_fullscreen_player.js +++ b/addons/website_slides/static/src/js/slides_course_fullscreen_player.js @@ -177,11 +177,11 @@ odoo.define('website_slides.fullscreen', function (require) { * Greens up the bullet when the slide is completed * * @public - * @param {*} slide_id + * @param {Integer} slideId */ setSlideCompleted: function (slideId) { var $elem = this.$('.fa-circle-thin[data-slide-id="'+slideId+'"]'); - $elem.removeClass('fa-circle-thin').addClass('fa-check-circle text-success'); + $elem.removeClass('fa-circle-thin').addClass('fa-check-circle text-success bg-white o_wslides_slide_completed rounded-circle'); }, /** * Updates the progressbar whenever a lesson is completed @@ -235,6 +235,8 @@ odoo.define('website_slides.fullscreen', function (require) { * @param {*} ev */ _onClickTab: function (ev) { + ev.stopPropagation(); + ev.preventDefault(); var $elem = $(ev.currentTarget); var isQuiz = $elem.data('isQuiz'); var slideID = parseInt($elem.data('id')); @@ -250,12 +252,8 @@ odoo.define('website_slides.fullscreen', function (require) { _onChangeCurrentSlide: function () { var slide = this.get('slideEntry'); this.$('.o_wslides_fs_sidebar_list_item.active').removeClass('active'); - var selector = '.o_wslides_fs_sidebar_list_item[data-id='+slide.id+']'; - if (slide.isQuiz) { - selector += '[data-is-quiz="1"]'; - } else { - selector += '[data-is-quiz!="1"]'; - } + var selector = '.o_wslides_fs_sidebar_list_item[data-id='+slide.id+'][data-is-quiz!="1"]'; + this.$(selector).addClass('active'); this.trigger_up('change_slide', this.get('slideEntry')); }, @@ -291,7 +289,6 @@ odoo.define('website_slides.fullscreen', function (require) { }, custom_events: { 'change_slide': '_onChangeSlideRequest', - 'toggle_sidebar': '_onToggleSidebar', 'slide_completed': '_onSlideCompleted', 'quiz_completed': '_onSlideCompleted', 'slide_go_next': '_onSlideGoToNext', @@ -425,7 +422,6 @@ odoo.define('website_slides.fullscreen', function (require) { var slide = this.get('slide'); var $content = this.$('.o_wslides_fs_content'); $content.empty(); - $content.removeClass('bg-white'); // webpage case // display quiz slide, or quiz attached to a slide if (slide.type === 'quiz' || slide.isQuiz) { @@ -440,8 +436,9 @@ odoo.define('website_slides.fullscreen', function (require) { this.videoPlayer = new VideoPlayer(this, slide); return this.videoPlayer.appendTo($content); } else if (slide.type === 'webpage'){ - $(slide.htmlContent).appendTo($content); - $content.addClass('bg-white'); + var $wpContainer = $('
').addClass('o_wslide_fs_webpage_content bg-white block w-100 overflow-auto'); + $(slide.htmlContent).appendTo($wpContainer); + $content.append($wpContainer); } return $.when(); }, @@ -480,7 +477,7 @@ odoo.define('website_slides.fullscreen', function (require) { * * @private */ - _onChangeSlide: function (){ + _onChangeSlide: function () { var self = this; var slide = this.get('slide'); return this._fetchSlideContent().then(function() { // update title and render content @@ -534,8 +531,7 @@ odoo.define('website_slides.fullscreen', function (require) { */ _onClickToggleSidebar: function (ev){ ev.preventDefault(); - this.$('.o_wslides_fs_sidebar').toggleClass('d-none'); - this.$('.o_wslides_fs_content').toggleClass('col-10').toggleClass('col-12'); + this.$('.o_wslides_fs_sidebar').toggleClass('o_wslides_fs_sidebar_hidden'); this.$('.o_wslides_fs_toggle_sidebar').toggleClass('active'); }, }); diff --git a/addons/website_slides/static/src/scss/slides_slide_fullscreen.scss b/addons/website_slides/static/src/scss/slides_slide_fullscreen.scss index 3868ad873cb..b377c7c3ca2 100644 --- a/addons/website_slides/static/src/scss/slides_slide_fullscreen.scss +++ b/addons/website_slides/static/src/scss/slides_slide_fullscreen.scss @@ -1,79 +1,126 @@ -$slides-bg-fullscreen: #313A44; -$slides-bg-fullscreen-dark: darken($slides-bg-fullscreen,5%); -$slides-bg-fullscreen-darker: darken($slides-bg-fullscreen,10%); +$o-wslides-color-bg: desaturate(map-get($grays, "200"), 80%); +$o-wslides-color-dark1: #47525f; +$o-wslides-color-dark2: #1f262d; +$o-wslides-color-dark3: #101216; +$o-wslides-fs-side-width: 300px; + +$o-wslides-tabs-height: 36px; -$slides-text: #8A8F93; .o_wslides_fs_main { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; + @include o-position-absolute(0,0,0,0); z-index: 2000; - color: $slides-text; .o_wslides_slide_fs_header { - background-color: $slides-bg-fullscreen; + background-image: linear-gradient(120deg, $o-wslides-color-dark1, $o-wslides-color-dark2); + padding-bottom: 3px; height: 50px; - } - .o_wslides_fs_container { - height: calc(100% - 50px); - background-color: $slides-bg-fullscreen; - } + > div > a { + background-color: rgba($o-wslides-color-dark3, 0.5); + @include o-hover-text-color(rgba(white, 0.8), white); + text-decoration: none!important; - .o_wslides_fs_sidebar { - transition: all .2s ease-in; - overflow: auto; - - .o_wslides_fs_sidebar_header { - color: $slides-text; - .progress { - height: 5px; + + a { + margin-left: 1px; } - } - .o_wslides_fs_sidebar_section { - background-color: $slides-bg-fullscreen-dark; - border: none; - border-radius: 0; + &:hover { + background-color: rgba($o-wslides-color-dark3, 0.2); + } - .card-body { - color: $slides-text; - } - } - - .o_wslides_fs_sidebar_list{ - li:hover, - li.active { - cursor: pointer; - background-color: $slides-bg-fullscreen-darker; - } - li { - color: $slides-text; - } - li.active{ - border-left: 2px solid $primary; + &.active{ + background-color: transparent; color: #fff; } } } - .o_wslides_fs_content { - background-color: $slides-bg-fullscreen-dark; + .o_wslides_fs_container { + background-color: $o-wslides-color-dark2; } - .o_wslides_fs_content_no_sidebar { - max-width: 100%; - width: 100%; + .o_wslides_fs_content { + transition: all .2s ease-in; + } + + .o_wslides_fs_sidebar { + transition: all .2s ease-in; + background-image: linear-gradient(160deg, $o-wslides-color-dark1, $o-wslides-color-dark2); + box-shadow: 5px 0 15px rgba(black, 0.2); + position: relative; + + .o_wslides_fs_sidebar_content { + min-width: $o-wslides-fs-side-width; + transition: all .2s ease-in; + } + + .o_wslides_fs_toggle_sidebar { + @include o-position-absolute(0, auto, 0, 100%); + width: 700px; + background: rgba(black, 0.2); + } + + @include media-breakpoint-down (md) { + @include o-position-absolute(0, auto, 0, 0); + + &.o_wslides_fs_sidebar_hidden { + display: none; + } + } + + @include media-breakpoint-up (md) { + width: $o-wslides-fs-side-width; + + &.o_wslides_fs_sidebar_hidden { + width: 0; + + .o_wslides_fs_sidebar_content { + transform: translateX(-100%); + } + } + } + + a { + text-decoration: none !important; + @include o-hover-text-color(rgba(white, 0.8), white); + } + + .o_wslides_fs_sidebar_section { + background-color: rgba($o-wslides-color-dark3, 0.3); + } + + .o_wslides_fs_sidebar_section_slides li { + color: rgba(white, 0.8); + line-height: 1.3; + + &.active { + box-shadow: inset 2px 0 0 theme-color('primary'); + background-color: rgba($o-wslides-color-dark3, 0.5); + + &, a { + color: white; + } + } + + i.o_wslides_slide_completed{ + @include size(13px); + box-shadow: inset 0 0 0 1px theme-color('success'); + } + + .o_wslides_fs_slide_name { + line-height: 1; + } + } } // quizz .o_wslides_fs_quiz_container { background-color: $gray-200; + height: 100%; overflow: scroll; overflow-x: hidden; + width: 100%; .o_wslides_js_lesson_quiz_question { li { @@ -100,9 +147,4 @@ $slides-text: #8A8F93; } } } - - // Tools - .bg-brand { - background-color: $o-enterprise-color; - } } diff --git a/addons/website_slides/static/src/scss/website_slides.scss b/addons/website_slides/static/src/scss/website_slides.scss index bbe635a89fa..1a4814fd4ac 100644 --- a/addons/website_slides/static/src/scss/website_slides.scss +++ b/addons/website_slides/static/src/scss/website_slides.scss @@ -5,6 +5,10 @@ $MAX-Z-INDEX : 2147483647 !default; $gray-50: #f4f4f4 !default; $o-enterprise-radient-color: #62495B !default; +.o_wslides_gradient { + background-image: linear-gradient(120deg, #875A7B, darken(#875A7B, 10%)); +} + // Common to new slides pages // ************************************************** @@ -442,4 +446,4 @@ div.embed-responsive { // Upload Modal .o_wslides_select_type { cursor: pointer; -} \ No newline at end of file +} diff --git a/addons/website_slides/static/src/xml/slide_quiz.xml b/addons/website_slides/static/src/xml/slide_quiz.xml index 0af500914c5..c8b4bc66186 100644 --- a/addons/website_slides/static/src/xml/slide_quiz.xml +++ b/addons/website_slides/static/src/xml/slide_quiz.xml @@ -64,7 +64,7 @@