From 4f280f77b06418812aed7e8cae60396b04fce733 Mon Sep 17 00:00:00 2001 From: Hakim El Hattab Date: Thu, 12 Mar 2020 19:11:19 +0100 Subject: [PATCH] update logic for disabling fragments via config option --- js/controllers/fragments.js | 19 ++++++++++++++++--- js/reveal.js | 11 +++++++---- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/js/controllers/fragments.js b/js/controllers/fragments.js index 01db85f..ff5b677 100644 --- a/js/controllers/fragments.js +++ b/js/controllers/fragments.js @@ -14,10 +14,10 @@ export default class Fragments { } /** - * Shows all fragments in the presentation. Used when - * fragments are disabled presentation-wide. + * If fragments are disabled in the deck, they should all be + * visible rather than stepped through. */ - showAll() { + disable() { toArray( this.Reveal.getSlidesElement().querySelectorAll( '.fragment' ) ).forEach( element => { element.classList.add( 'visible' ); @@ -26,6 +26,19 @@ export default class Fragments { } + /** + * Reverse of #disable(). Only called if fragments have + * previously been disabled. + */ + enable() { + + toArray( this.Reveal.getSlidesElement().querySelectorAll( '.fragment' ) ).forEach( element => { + element.classList.remove( 'visible' ); + element.classList.remove( 'current-fragment' ); + } ); + + } + /** * Returns an object describing the available fragment * directions. diff --git a/js/reveal.js b/js/reveal.js index 2ece961..1768521 100644 --- a/js/reveal.js +++ b/js/reveal.js @@ -787,7 +787,7 @@ export default function( revealElement, options ) { */ function configure( options ) { - const oldTransition = config.transition; + const oldConfig = { ...config } // New config options may be passed when this method // is invoked through the API after initialization @@ -800,7 +800,7 @@ export default function( revealElement, options ) { const numberOfSlides = dom.wrapper.querySelectorAll( SLIDES_SELECTOR ).length; // The transition is added as a class on the .reveal element - dom.wrapper.classList.remove( oldTransition ); + dom.wrapper.classList.remove( oldConfig.transition ); dom.wrapper.classList.add( config.transition ); dom.wrapper.setAttribute( 'data-transition-speed', config.transitionSpeed ); @@ -889,9 +889,12 @@ export default function( revealElement, options ) { autoSlidePaused = false; } - // When fragments are turned off they should be visible + // Update the state of our fragments if( config.fragments === false ) { - fragments.showAll(); + fragments.disable(); + } + else if( oldConfig.fragments === false ) { + fragments.enable(); } // Add the navigation mode to the DOM so we can adjust styling