1
0
mirror of https://github.com/webslides/WebSlides.git synced 2025-08-20 03:41:38 +02:00

Shift + Space should go backwards

#96
This commit is contained in:
Antonio Laguna
2017-09-16 19:37:24 +02:00
parent 8b19bd28f6
commit 8912d05d70
2 changed files with 32 additions and 8 deletions

View File

@@ -35,9 +35,15 @@ export default class Keyboard {
switch (event.which) { switch (event.which) {
case Keys.AV_PAGE: case Keys.AV_PAGE:
case Keys.SPACE:
method = this.ws_.goNext; method = this.ws_.goNext;
break; break;
case Keys.SPACE:
if (event.shiftKey) {
method = this.ws_.goPrev;
} else {
method = this.ws_.goNext;
}
break;
case Keys.RE_PAGE: case Keys.RE_PAGE:
method = this.ws_.goPrev; method = this.ws_.goPrev;
break; break;

View File

@@ -2,12 +2,12 @@ import Keyboard from '../../src/js/plugins/keyboard';
import Keys from '../../src/js/utils/keys'; import Keys from '../../src/js/utils/keys';
// @TODO: Check to do this with simulant // @TODO: Check to do this with simulant
const simulateKeyEvent = (el, code) => { const simulateKeyEvent = (el, code, useShift = false) => {
const evt = new KeyboardEvent('keydown', { const evt = new KeyboardEvent('keydown', {
bubbles: true, bubbles: true,
cancelableCode: true, cancelableCode: true,
which: code, which: code,
shiftKey: true}); shiftKey: useShift});
el.dispatchEvent(evt); el.dispatchEvent(evt);
}; };
@@ -37,7 +37,7 @@ test('Keyboard plugin', () => {
el: ws el: ws
}; };
new Keyboard(webslides); const key = new Keyboard(webslides);
expect(goto).not.toBeCalled(); expect(goto).not.toBeCalled();
expect(next).not.toBeCalled(); expect(next).not.toBeCalled();
@@ -51,18 +51,36 @@ test('Keyboard plugin', () => {
expect(next.mock.calls.length).toBe(1); expect(next.mock.calls.length).toBe(1);
simulateKeyEvent(document, Keys.SPACE); simulateKeyEvent(document, Keys.SPACE);
expect(next.mock.calls.length).toBe(2); expect(next.mock.calls.length).toBe(2);
simulateKeyEvent(document, Keys.RE_PAGE); // Shift + Space
simulateKeyEvent(document, Keys.SPACE, true);
expect(next.mock.calls.length).toBe(2);
expect(prev.mock.calls.length).toBe(1); expect(prev.mock.calls.length).toBe(1);
simulateKeyEvent(document, Keys.RE_PAGE);
expect(prev.mock.calls.length).toBe(2);
// Home - End
simulateKeyEvent(document, Keys.HOME); simulateKeyEvent(document, Keys.HOME);
expect(goto.mock.calls.length).toBe(1); expect(goto.mock.calls.length).toBe(1);
simulateKeyEvent(document, Keys.END);
expect(goto.mock.calls.length).toBe(2);
// Arrow keys, only left right should increase
simulateKeyEvent(document, Keys.DOWN); simulateKeyEvent(document, Keys.DOWN);
expect(next.mock.calls.length).toBe(2);
simulateKeyEvent(document, Keys.UP); simulateKeyEvent(document, Keys.UP);
expect(prev.mock.calls.length).toBe(1);
simulateKeyEvent(document, Keys.LEFT); simulateKeyEvent(document, Keys.LEFT);
expect(prev.mock.calls.length).toBe(2);
simulateKeyEvent(document, Keys.RIGHT); simulateKeyEvent(document, Keys.RIGHT);
expect(prev.mock.calls.length).toBe(3);
expect(next.mock.calls.length).toBe(3); expect(next.mock.calls.length).toBe(3);
// Arrow keys, only up down should increase
key.ws_.isVertical = true;
simulateKeyEvent(document, Keys.DOWN);
simulateKeyEvent(document, Keys.UP);
simulateKeyEvent(document, Keys.LEFT);
simulateKeyEvent(document, Keys.RIGHT);
expect(prev.mock.calls.length).toBe(4);
expect(next.mock.calls.length).toBe(4);
simulateKeyEvent(document, Keys.F); simulateKeyEvent(document, Keys.F);
expect(fullscreen.mock.calls.length).toBe(1); expect(fullscreen.mock.calls.length).toBe(1);
}); });