70 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*****************************************************************
 | |
| ** Author: Asvin Goel, goel@telematique.eu
 | |
| **
 | |
| ** A plugin replacing the default controls by custom controls.
 | |
| **
 | |
| ** Version: 2.0.0
 | |
| ** 
 | |
| ** License: MIT license (see LICENSE.md)
 | |
| **
 | |
| ******************************************************************/
 | |
| window.RevealCustomControls = window.RevealCustomControls || {
 | |
|     id: 'RevealCustomControls',
 | |
|     init: function(deck) {
 | |
|         initCustomControls(deck);
 | |
|     }
 | |
| };
 | |
| 
 | |
| const initCustomControls = function(Reveal){
 | |
| 	var config = Reveal.getConfig().customcontrols || {};
 | |
| 
 | |
| 	var collapseIcon = config.collapseIcon || '<i class="fa fa-chevron-down"></i>';
 | |
| 	var expandIcon = config.expandIcon || '<i class="fa fa-chevron-up"></i>';
 | |
| 	var tooltip = config.tooltip || 'Show/hide controls';
 | |
| 
 | |
| 	var div = document.createElement( 'div' );
 | |
| 	div.id = 'customcontrols';
 | |
| 
 | |
| 	var toggleButton = document.createElement( 'button' );
 | |
| 	toggleButton.title = tooltip;
 | |
| 	toggleButton.innerHTML = '<span id="collapse-customcontrols">' + collapseIcon + '</span>' + '<span id="expand-customcontrols">' + expandIcon + '</span>';
 | |
| 
 | |
| 	toggleButton.addEventListener('click', function( event ) {
 | |
| 		var div = document.querySelector("div#customcontrols");
 | |
| 		if ( div.classList.contains('collapsed') ) {
 | |
| 			div.classList.remove('collapsed');
 | |
| 		}
 | |
| 		else {
 | |
| 			div.classList.add('collapsed');
 | |
| 		}
 | |
| 	});
 | |
| 
 | |
| 	div.appendChild(toggleButton);
 | |
| 
 | |
| 	var controls = document.createElement( 'ul' );
 | |
| 	for (var i = 0; i < config.controls.length; i++ ) {
 | |
| 		var control = document.createElement( 'li' );
 | |
| 		if ( config.controls[i].id ) {
 | |
| 			control.id = config.controls[i].id;
 | |
| 		}
 | |
| 		control.innerHTML = '<button ' + ( config.controls[i].title ? 'title="' + config.controls[i].title + '" ': '' ) + 'onclick="' + config.controls[i].action + '">' + config.controls[i].icon + '</button>';
 | |
| 		controls.appendChild( control );
 | |
| 	}
 | |
| 	div.appendChild( controls );
 | |
| 
 | |
| 
 | |
| 	document.querySelector(".reveal").appendChild( div );
 | |
| 
 | |
| 	document.addEventListener( 'resize', function( event ) {
 | |
| 		// expand controls to make sure they are visible
 | |
| 		var div = document.querySelector("div#customcontrols.collapsed");
 | |
| 		if ( div ) {
 | |
| 			div.classList.remove('collapsed');
 | |
| 		}
 | |
| 	} );
 | |
| 
 | |
| 	return this;
 | |
| 
 | |
| };
 | |
| 
 |