slide data-state is now set at the viewport level, add Reveal.getViewportElement()
This commit is contained in:
parent
9242b25bc9
commit
c4870362d9
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
13
js/reveal.js
13
js/reveal.js
|
@ -146,16 +146,16 @@ export default function( revealElement, options ) {
|
||||||
|
|
||||||
// Embedded decks use the reveal element as their viewport
|
// Embedded decks use the reveal element as their viewport
|
||||||
if( config.embedded === true ) {
|
if( config.embedded === true ) {
|
||||||
if( revealElement.closest( '.reveal-viewport' ) === null ) {
|
dom.viewport = revealElement.closest( '.reveal-viewport' ) || revealElement;
|
||||||
revealElement.classList.add( 'reveal-viewport' );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// Full-page decks use the body as their viewport
|
// Full-page decks use the body as their viewport
|
||||||
else {
|
else {
|
||||||
document.body.classList.add( 'reveal-viewport' );
|
dom.viewport = document.body;
|
||||||
document.documentElement.classList.add( 'reveal-full-page' );
|
document.documentElement.classList.add( 'reveal-full-page' );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dom.viewport.classList.add( 'reveal-viewport' );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1273,7 +1273,7 @@ export default function( revealElement, options ) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
document.documentElement.classList.add( state[i] );
|
dom.viewport.classList.add( state[i] );
|
||||||
|
|
||||||
// Dispatch custom event matching the state's name
|
// Dispatch custom event matching the state's name
|
||||||
dispatchEvent({ type: state[i] });
|
dispatchEvent({ type: state[i] });
|
||||||
|
@ -1281,7 +1281,7 @@ export default function( revealElement, options ) {
|
||||||
|
|
||||||
// Clean up the remains of the previous state
|
// Clean up the remains of the previous state
|
||||||
while( stateBefore.length ) {
|
while( stateBefore.length ) {
|
||||||
document.documentElement.classList.remove( stateBefore.pop() );
|
dom.viewport.classList.remove( stateBefore.pop() );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( slideChanged ) {
|
if( slideChanged ) {
|
||||||
|
@ -2524,6 +2524,7 @@ export default function( revealElement, options ) {
|
||||||
// Returns reveal.js DOM elements
|
// Returns reveal.js DOM elements
|
||||||
getRevealElement: () => revealElement,
|
getRevealElement: () => revealElement,
|
||||||
getSlidesElement: () => dom.slides,
|
getSlidesElement: () => dom.slides,
|
||||||
|
getViewportElement: () => dom.viewport,
|
||||||
getBackgroundsElement: () => backgrounds.element,
|
getBackgroundsElement: () => backgrounds.element,
|
||||||
|
|
||||||
// API for registering and retrieving plugins
|
// API for registering and retrieving plugins
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<div class="reveal" style="display: none;">
|
<div class="reveal" style="display: none;">
|
||||||
<div class="slides">
|
<div class="slides">
|
||||||
<section>1.1</section>
|
<section>1.1</section>
|
||||||
<section>1.2</section>
|
<section data-state="deck1slide2">1.2</section>
|
||||||
<section>1.3</section>
|
<section>1.3</section>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -80,6 +80,18 @@
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
QUnit.test( 'Slide state is set at the viewport level', function( assert ) {
|
||||||
|
|
||||||
|
r1.slide(1);
|
||||||
|
|
||||||
|
assert.ok( r1.getViewportElement().classList.contains( r1.getCurrentSlide().getAttribute( 'data-state' ) ) );
|
||||||
|
|
||||||
|
r1.slide(2);
|
||||||
|
|
||||||
|
assert.ok( !r1.getViewportElement().classList.contains( r1.getCurrentSlide().getAttribute( 'data-state' ) ), 'unset' );
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
QUnit.test( 'Reveal does not leak to window', function( assert ) {
|
QUnit.test( 'Reveal does not leak to window', function( assert ) {
|
||||||
|
|
Loading…
Reference in New Issue