Added isTouchDevice and touch device helper methods

This commit is contained in:
Francisco Hodge 2019-03-06 19:32:03 -05:00
parent 00f8daff3c
commit 1a53fae5d6
2 changed files with 34 additions and 3 deletions

View File

@ -646,6 +646,32 @@ class SimpleKeyboard {
return buttonThemesParsed; return buttonThemesParsed;
} }
onTouchDeviceDetected(){
/**
* Processing autoTouchEvents
*/
this.processAutoTouchEvents();
/**
* Disabling contextual window on touch devices
*/
this.disableContextualWindow();
}
/**
* Disabling contextual window for hg-button
*/
/* istanbul ignore next */
disableContextualWindow(){
window.oncontextmenu = (event) => {
if(event.target.classList.contains("hg-button")){
event.preventDefault();
event.stopPropagation();
return false;
}
};
}
/** /**
* Process autoTouchEvents option * Process autoTouchEvents option
*/ */
@ -755,6 +781,7 @@ class SimpleKeyboard {
let layoutClass = `hg-layout-${this.options.layoutName}`; let layoutClass = `hg-layout-${this.options.layoutName}`;
let layout = this.options.layout || KeyboardLayout.getDefaultLayout(); let layout = this.options.layout || KeyboardLayout.getDefaultLayout();
let useTouchEvents = this.options.useTouchEvents || false; let useTouchEvents = this.options.useTouchEvents || false;
let useTouchEventsClass = useTouchEvents ? "hg-touch-events" : "";
/** /**
* Account for buttonTheme, if set * Account for buttonTheme, if set
@ -764,9 +791,7 @@ class SimpleKeyboard {
/** /**
* Adding themeClass, layoutClass to keyboardDOM * Adding themeClass, layoutClass to keyboardDOM
*/ */
this.keyboardDOM.className += ` ${this.options.theme} ${layoutClass} ${ this.keyboardDOM.className += ` ${this.options.theme} ${layoutClass} ${this.keyboardPluginClasses} ${useTouchEventsClass}`;
this.keyboardPluginClasses
}`;
/** /**
* Iterating through each row * Iterating through each row

View File

@ -365,6 +365,12 @@ class Utilities {
return Boolean(this.maxLengthReached); return Boolean(this.maxLengthReached);
} }
/**
* Determines whether a touch device is being used
*/
isTouchDevice(){
return 'ontouchstart' in window || navigator.maxTouchPoints;
}
/** /**
* Bind all methods in a given class * Bind all methods in a given class