From 8582350774dd537c07e9c63e8c1e9939ea0c6138 Mon Sep 17 00:00:00 2001 From: Francisco Hodge Date: Mon, 11 Mar 2019 18:25:51 -0400 Subject: [PATCH 1/3] Added stopMouseDownPropagation option --- src/lib/components/Keyboard.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/lib/components/Keyboard.js b/src/lib/components/Keyboard.js index ca4bda38..791d91af 100644 --- a/src/lib/components/Keyboard.js +++ b/src/lib/components/Keyboard.js @@ -226,6 +226,12 @@ class SimpleKeyboard { */ /* istanbul ignore next */ handleButtonMouseDown(button, e) { + /** + * Handle event options + */ + if (this.options.preventMouseDownDefault) e.preventDefault(); + if (this.options.stopMouseDownPropagation) e.stopPropagation(); + /** * @type {boolean} Whether the mouse is being held onKeyPress */ @@ -1039,15 +1045,13 @@ class SimpleKeyboard { !useMouseEvents ) { /** - * PointerEvents support + * Handle PointerEvents */ buttonDOM.onpointerdown = e => { - if (this.options.preventMouseDownDefault) e.preventDefault(); this.handleButtonClicked(button); this.handleButtonMouseDown(button, e); }; buttonDOM.onpointerup = e => { - if (this.options.preventMouseDownDefault) e.preventDefault(); this.handleButtonMouseUp(); }; buttonDOM.onpointercancel = e => this.handleButtonMouseUp(); @@ -1056,6 +1060,9 @@ class SimpleKeyboard { * Fallback for browsers not supporting PointerEvents */ if (useTouchEvents) { + /** + * Handle touch events + */ buttonDOM.ontouchstart = e => { this.handleButtonClicked(button); this.handleButtonMouseDown(button, e); @@ -1063,12 +1070,14 @@ class SimpleKeyboard { buttonDOM.ontouchend = e => this.handleButtonMouseUp(); buttonDOM.ontouchcancel = e => this.handleButtonMouseUp(); } else { + /** + * Handle mouse events + */ buttonDOM.onclick = () => { this.isMouseHold = false; this.handleButtonClicked(button); }; buttonDOM.onmousedown = e => { - if (this.options.preventMouseDownDefault) e.preventDefault(); this.handleButtonMouseDown(button, e); }; } From dadad31fdd0177b3de69910d76741b4d19b14eec Mon Sep 17 00:00:00 2001 From: Francisco Hodge Date: Mon, 11 Mar 2019 18:26:00 -0400 Subject: [PATCH 2/3] Tests update --- src/lib/components/tests/Keyboard.test.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lib/components/tests/Keyboard.test.js b/src/lib/components/tests/Keyboard.test.js index c9bba71a..74dbe77e 100644 --- a/src/lib/components/tests/Keyboard.test.js +++ b/src/lib/components/tests/Keyboard.test.js @@ -900,7 +900,9 @@ it('Keyboard handleButtonMouseDown will work', () => { let keyboard = new Keyboard(); keyboard.handleButtonMouseDown("q", { - target: keyboard.getButtonElement("q") + target: keyboard.getButtonElement("q"), + preventDefault: () => {}, + stopPropagation: () => {} }); var clickEvent = document.createEvent('MouseEvents'); @@ -918,7 +920,9 @@ it('Keyboard handleButtonMouseDown will work with preventMouseDownDefault', () = keyboard.options.preventMouseDownDefault = true; keyboard.handleButtonMouseDown("q", { - target: keyboard.getButtonElement("q") + target: keyboard.getButtonElement("q"), + preventDefault: () => {}, + stopPropagation: () => {} }); var clickEvent = document.createEvent('MouseEvents'); From aadb84b8f70593066e0623ad46d7fba5abb9dc81 Mon Sep 17 00:00:00 2001 From: Francisco Hodge Date: Mon, 11 Mar 2019 18:26:13 -0400 Subject: [PATCH 3/3] npm update --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1d433dfe..78d08eb1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "simple-keyboard", - "version": "2.19.1", + "version": "2.20.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2905,7 +2905,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true } @@ -8452,7 +8452,7 @@ }, "hoek": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "resolved": "http://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", "dev": true }, @@ -16404,7 +16404,7 @@ }, "topo": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", + "resolved": "http://registry.npmjs.org/topo/-/topo-2.0.2.tgz", "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", "dev": true, "requires": { diff --git a/package.json b/package.json index a5cc15d4..e45efad1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "simple-keyboard", - "version": "2.19.1", + "version": "2.20.0", "description": "On-screen Javascript Virtual Keyboard", "main": "build/index.js", "types": "build/index.d.ts",