diff options
| author | Julien Mougenot <jum@odoo.com> | 2019-12-04 10:44:27 +0000 |
|---|---|---|
| committer | Vincent Schippefilt <vsc@odoo.com> | 2019-12-09 11:09:10 +0000 |
| commit | 2cfa68b57158f6f4ac49549e79a5eb7f90cefb5f (patch) | |
| tree | 5b050ef714040b29d2db2b55629a159e4868d664 /addons/web_tour/static | |
| parent | b0941d19a07b08fabc64a284b58e57edc46203dd (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.
Diffstat (limited to 'addons/web_tour/static')
| -rw-r--r-- | addons/web_tour/static/src/js/running_tour_action_helper.js | 40 |
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)); } }, }); |
