now capturing data-state on slides and lifting it to document element classList when slide is open

This commit is contained in:
Hakim El Hattab
2012-03-30 00:13:45 -04:00
parent 0cd3b8d430
commit 831236890c
4 changed files with 58 additions and 3 deletions

View File

@ -58,6 +58,11 @@ var Reveal = (function(){
rollingLinks: true
},
// Slides may hold a data-state attribute which we pick up and apply
// as a class to the body. This list contains the combined state of
// all current slides.
state = [],
// Cached references to DOM elements
dom = {},
@ -462,6 +467,13 @@ var Reveal = (function(){
// Mark the current slide as present
slides[index].classList.add( 'present' );
// If this slide has a state associated with it, add it
// onto the current state of the deck
var slideState = slides[index].dataset.state;
if( slideState ) {
state = state.concat( slideState.split( ' ' ) );
}
}
else {
// Since there are no slides we can't be anywhere beyond the
@ -478,9 +490,19 @@ var Reveal = (function(){
* set indices.
*/
function slide() {
// Clean up the current state
while( state.length ) {
document.documentElement.classList.remove( state.pop() );
}
indexh = updateSlides( HORIZONTAL_SLIDES_SELECTOR, indexh );
indexv = updateSlides( VERTICAL_SLIDES_SELECTOR, indexv );
// Apply the new state
for( var i = 0, len = state.length; i < len; i++ ) {
document.documentElement.classList.add( state[i] );
}
// Update progress if enabled
if( config.progress ) {
dom.progressbar.style.width = ( indexh / ( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ).length - 1 ) ) * window.innerWidth + 'px';