From 8912d05d7009361777e5a15175b628ece748d57f Mon Sep 17 00:00:00 2001 From: Antonio Laguna Date: Sat, 16 Sep 2017 19:37:24 +0200 Subject: [PATCH] Shift + Space should go backwards #96 --- src/js/plugins/keyboard.js | 8 +++++++- test/plugins/keyboard.test.js | 32 +++++++++++++++++++++++++------- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/js/plugins/keyboard.js b/src/js/plugins/keyboard.js index e4bae28..874c9e1 100644 --- a/src/js/plugins/keyboard.js +++ b/src/js/plugins/keyboard.js @@ -35,9 +35,15 @@ export default class Keyboard { switch (event.which) { case Keys.AV_PAGE: - case Keys.SPACE: method = this.ws_.goNext; break; + case Keys.SPACE: + if (event.shiftKey) { + method = this.ws_.goPrev; + } else { + method = this.ws_.goNext; + } + break; case Keys.RE_PAGE: method = this.ws_.goPrev; break; diff --git a/test/plugins/keyboard.test.js b/test/plugins/keyboard.test.js index e5bcb41..7df3838 100644 --- a/test/plugins/keyboard.test.js +++ b/test/plugins/keyboard.test.js @@ -2,12 +2,12 @@ import Keyboard from '../../src/js/plugins/keyboard'; import Keys from '../../src/js/utils/keys'; // @TODO: Check to do this with simulant -const simulateKeyEvent = (el, code) => { +const simulateKeyEvent = (el, code, useShift = false) => { const evt = new KeyboardEvent('keydown', { bubbles: true, cancelableCode: true, which: code, - shiftKey: true}); + shiftKey: useShift}); el.dispatchEvent(evt); }; @@ -37,7 +37,7 @@ test('Keyboard plugin', () => { el: ws }; - new Keyboard(webslides); + const key = new Keyboard(webslides); expect(goto).not.toBeCalled(); expect(next).not.toBeCalled(); @@ -51,18 +51,36 @@ test('Keyboard plugin', () => { expect(next.mock.calls.length).toBe(1); simulateKeyEvent(document, Keys.SPACE); 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); + simulateKeyEvent(document, Keys.RE_PAGE); + expect(prev.mock.calls.length).toBe(2); + + // Home - End simulateKeyEvent(document, Keys.HOME); 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); - expect(next.mock.calls.length).toBe(2); simulateKeyEvent(document, Keys.UP); - expect(prev.mock.calls.length).toBe(1); simulateKeyEvent(document, Keys.LEFT); - expect(prev.mock.calls.length).toBe(2); simulateKeyEvent(document, Keys.RIGHT); + expect(prev.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); expect(fullscreen.mock.calls.length).toBe(1); });