summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Mougenot <jum@odoo.com>2019-12-04 10:44:27 +0000
committerVincent Schippefilt <vsc@odoo.com>2019-12-09 11:09:10 +0000
commit2cfa68b57158f6f4ac49549e79a5eb7f90cefb5f (patch)
tree5b050ef714040b29d2db2b55629a159e4868d664
parentb0941d19a07b08fabc64a284b58e57edc46203dd (diff)
[IMP] web_tour: tour utils
Changed the triggering of some events to dispatch native events instead of jQuery ones and extended the api of the keydown helper to support text keys.
-rw-r--r--addons/web_tour/static/src/js/running_tour_action_helper.js40
1 files changed, 29 insertions, 11 deletions
diff --git a/addons/web_tour/static/src/js/running_tour_action_helper.js b/addons/web_tour/static/src/js/running_tour_action_helper.js
index f41c837fee4..0872adf70eb 100644
--- a/addons/web_tour/static/src/js/running_tour_action_helper.js
+++ b/addons/web_tour/static/src/js/running_tour_action_helper.js
@@ -81,7 +81,11 @@ var RunningTourActionHelper = core.Class.extend({
text = text || "Test";
if (values.consume_event === "input") {
- values.$element.trigger("keydown").val(text).trigger("keyup").trigger("input");
+ values.$element
+ .trigger({ type: 'keydown', key: text[text.length - 1] })
+ .val(text)
+ .trigger({ type: 'keyup', key: text[text.length - 1] });
+ values.$element[0].dispatchEvent(new InputEvent('input'));
} else if (values.$element.is("select")) {
var $options = values.$element.children("option");
$options.prop("selected", false).removeProp("selected");
@@ -128,17 +132,31 @@ var RunningTourActionHelper = core.Class.extend({
},
_keydown: function (values, keyCodes) {
while (keyCodes.length) {
- var keyCode = +keyCodes.shift();
- values.$element.trigger({type: "keydown", keyCode: keyCode});
- if ((keyCode > 47 && keyCode < 58) // number keys
- || keyCode === 32 // spacebar
- || (keyCode > 64 && keyCode < 91) // letter keys
- || (keyCode > 95 && keyCode < 112) // numpad keys
- || (keyCode > 185 && keyCode < 193) // ;=,-./` (in order)
- || (keyCode > 218 && keyCode < 223)) { // [\]' (in order))
- document.execCommand("insertText", 0, String.fromCharCode(keyCode));
+ const eventOptions = {};
+ const keyCode = keyCodes.shift();
+ let insertedText = null;
+ if (isNaN(keyCode)) {
+ eventOptions.key = keyCode;
+ } else {
+ const code = parseInt(keyCode, 10);
+ eventOptions.keyCode = code;
+ eventOptions.which = code;
+ if (
+ code === 32 || // spacebar
+ (code > 47 && code < 58) || // number keys
+ (code > 64 && code < 91) || // letter keys
+ (code > 95 && code < 112) || // numpad keys
+ (code > 185 && code < 193) || // ;=,-./` (in order)
+ (code > 218 && code < 223) // [\]' (in order))
+ ) {
+ insertedText = String.fromCharCode(code);
+ }
}
- values.$element.trigger({type: "keyup", keyCode: keyCode});
+ values.$element.trigger(Object.assign({ type: "keydown" }, eventOptions));
+ if (insertedText) {
+ document.execCommand("insertText", 0, insertedText);
+ }
+ values.$element.trigger(Object.assign({ type: "keyup" }, eventOptions));
}
},
});