diff --git a/addons/website_slides/static/src/js/slides_embed.js b/addons/website_slides/static/src/js/slides_embed.js index c3e6dedad27..cbe7e400a33 100644 --- a/addons/website_slides/static/src/js/slides_embed.js +++ b/addons/website_slides/static/src/js/slides_embed.js @@ -29,6 +29,7 @@ $(function () { this.canvas = $viewer.find('canvas')[0]; this.pdf_viewer = new PDFSlidesViewer(this.slide_url, this.canvas); + this.hasSuggestions = !!this.$(".oe_slides_suggestion_media").length; this.pdf_viewer.loadDocument().then(function () { self.on_loaded_file(); }); @@ -43,9 +44,6 @@ $(function () { this.$('canvas').show(); this.$('#page_count').text(this.pdf_viewer.pdf_page_total); this.$('#PDFViewerLoader').hide(); - if (this.pdf_viewer.pdf_page_total > 1) { - this.$('.o_slide_navigation_buttons').removeClass('hide'); - } // init first page to display var initpage = this.defaultpage; var pageNum = (initpage > 0 && initpage <= this.pdf_viewer.pdf_page_total) ? initpage : 1; @@ -76,6 +74,13 @@ $(function () { } }, next: function () { + if ( + this.pdf_viewer.pdf_page_current >= + this.pdf_viewer.pdf_page_total + this.hasSuggestions + ) { + return; + } + var self = this; this.pdf_viewer.nextPage().then(function (pageNum) { if (pageNum) { @@ -92,7 +97,10 @@ $(function () { if (!slideSuggestOverlay.hasClass('d-none')) { // Hide suggested slide overlay before changing page nb. slideSuggestOverlay.addClass('d-none'); - this.$('#next, #last').removeClass('disabled'); + this.$("#next").removeClass("disabled"); + if (this.pdf_viewer.pdf_page_total <= 1) { + this.$("#previous, #first").addClass("disabled"); + } return; } var self = this; @@ -130,11 +138,16 @@ $(function () { } }, navUpdate: function (pageNum) { - this.$('#first').toggleClass('disabled', pageNum < 3 ); - this.$('#previous').toggleClass('disabled', pageNum < 2 ); - this.$('#next, #last').removeClass('disabled'); - this.$('#zoomout').toggleClass('disabled', this.pdf_viewer.pdf_zoom <= MIN_ZOOM); - this.$('#zoomin').toggleClass('disabled', this.pdf_viewer.pdf_zoom >= MAX_ZOOM); + const pagesCount = this.pdf_viewer.pdf_page_total + this.hasSuggestions; + this.$("#first").toggleClass("disabled", pagesCount < 2 || pageNum < 2); + this.$("#last").toggleClass( + "disabled", + pagesCount < 2 || pageNum >= this.pdf_viewer.pdf_page_total + ); + this.$("#next").toggleClass("disabled", pageNum >= pagesCount); + this.$("#previous").toggleClass("disabled", pageNum <= 1); + this.$("#zoomout").toggleClass("disabled", this.pdf_viewer.pdf_zoom <= MIN_ZOOM); + this.$("#zoomin").toggleClass("disabled", this.pdf_viewer.pdf_zoom >= MAX_ZOOM); }, // full screen mode fullscreen: function () { @@ -147,8 +160,9 @@ $(function () { }, // display suggestion displayed after last slide display_suggested_slides: function () { - this.$("#slide_suggest").removeClass('d-none'); - this.$('#next, #last').addClass('disabled'); + this.$("#slide_suggest").removeClass("d-none"); + this.$("#next, #last").addClass("disabled"); + this.$("#previous, #first").removeClass("disabled"); }, }; diff --git a/addons/website_slides/static/src/scss/website_slides.scss b/addons/website_slides/static/src/scss/website_slides.scss index cbc2c97cac3..fcddae6f31d 100644 --- a/addons/website_slides/static/src/scss/website_slides.scss +++ b/addons/website_slides/static/src/scss/website_slides.scss @@ -753,6 +753,15 @@ li.o_wslides_fs_sidebar_list_item.active { .oe_slide_embed_option { @include o-position-absolute(0,0,0,0); } + + .disabled { + // remove JS events for disabled elements + pointer-events: none; + } + + .o_slide_navigation_buttons { + user-select: none; + } } .oe_slides_share_bar{ diff --git a/addons/website_slides/views/website_slides_templates_lesson_embed.xml b/addons/website_slides/views/website_slides_templates_lesson_embed.xml index 5e1ae8f6fd2..753c62c9e69 100644 --- a/addons/website_slides/views/website_slides_templates_lesson_embed.xml +++ b/addons/website_slides/views/website_slides_templates_lesson_embed.xml @@ -102,7 +102,7 @@ -