fix and tests for custom key bindings in help overlay

This commit is contained in:
Hakim El Hattab 2020-05-12 13:33:19 +02:00
parent aafb8769f9
commit f04a00672c
6 changed files with 51 additions and 11 deletions

2
dist/reveal.css vendored
View file

@ -1,5 +1,5 @@
/*!
* reveal.js 4.0.0-dev (Mon May 11 2020)
* reveal.js 4.0.0-dev (Tue May 12 2020)
* https://revealjs.com
* MIT licensed
*

4
dist/reveal.esm.js vendored

File diff suppressed because one or more lines are too long

4
dist/reveal.js vendored

File diff suppressed because one or more lines are too long

View file

@ -122,6 +122,18 @@ export default class Keyboard {
}
getShortcuts() {
return this.shortcuts;
}
getBindings() {
return this.bindings;
}
/**
* Handler for the document level 'keypress' event.
*

View file

@ -712,15 +712,18 @@ export default function( revealElement, options ) {
let html = '<p class="title">Keyboard Shortcuts</p><br/>';
let shortcuts = keyboard.getShortcuts(),
bindings = keyboard.getBindings();
html += '<table><th>KEY</th><th>ACTION</th>';
for( let key in keyboard.shortcuts ) {
html += `<tr><td>${key}</td><td>${keyboard.shortcuts[ key ]}</td></tr>`;
for( let key in shortcuts ) {
html += `<tr><td>${key}</td><td>${shortcuts[ key ]}</td></tr>`;
}
// Add custom key bindings that have associated descriptions
for( let binding in keyboard.registeredKeyBindings ) {
if( keyboard.registeredKeyBindings[binding].key && keyboard.registeredKeyBindings[binding].description ) {
html += `<tr><td>${keyboard.registeredKeyBindings[binding].key}</td><td>${keyboard.registeredKeyBindings[binding].description}</td></tr>`;
for( let binding in bindings ) {
if( bindings[binding].key && bindings[binding].description ) {
html += `<tr><td>${bindings[binding].key}</td><td>${bindings[binding].description}</td></tr>`;
}
}
@ -775,7 +778,7 @@ export default function( revealElement, options ) {
// property where 100x adds up to the correct height.
//
// https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
if( Device.isMobile ) {
if( Device.isMobile && !config.embedded ) {
document.documentElement.style.setProperty( '--vh', ( window.innerHeight * 0.01 ) + 'px' );
}

View file

@ -379,6 +379,31 @@
await test( '#/2/0/1', { h: 2, v: 0, f: 1 } ); // fragment
});
// ---------------------------------------------------------------
// KEYBOARD TESTS
QUnit.module( 'Keyboard' );
QUnit.test( 'Add key bindings', function( assert ) {
var done = assert.async( 1 );
Reveal.addKeyBinding({keyCode: 88, key: 'X', description: 'X-SHORTCUT-X'}, function() {
assert.ok( true, 'callback triggered' );
done();
} );
Reveal.toggleHelp( true );
assert.ok( /X\-SHORTCUT\-X/.test( document.body.innerHTML ), 'binding is added to help overlay' );
Reveal.toggleHelp( false );
let event = new KeyboardEvent( 'keydown', { 'keyCode':88 } );
document.dispatchEvent( event );
Reveal.removeKeyBinding( 88 );
// should do nothing
document.dispatchEvent( event );
});
// ---------------------------------------------------------------
// FRAGMENT TESTS