From 87d75f78d6015d084057f1570df4ee1ffada657e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Theys?= Date: Mon, 17 Dec 2018 12:45:13 +0000 Subject: [PATCH] [IMP] web_tour: allow simulating click without leave This is important if the mouse must stay on the element after it has been clicked. This is the case for the product image zoom, which will be tested in the following commit. --- .../static/src/js/running_tour_action_helper.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 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 de4e49e40df..1c4df6c27db 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 @@ -1,3 +1,4 @@ + odoo.define('web_tour.RunningTourActionHelper', function (require) { "use strict"; @@ -21,6 +22,9 @@ var RunningTourActionHelper = core.Class.extend({ tripleclick: function (element) { this._click(this._get_action_values(element), 3); }, + clicknoleave: function (element) { + this._click(this._get_action_values(element), 1, false); + }, text: function (text, element) { this._text(this._get_action_values(element), text); }, @@ -50,7 +54,7 @@ var RunningTourActionHelper = core.Class.extend({ consume_event: consume_event, }; }, - _click: function (values, nb) { + _click: function (values, nb, leave) { trigger_mouse_event(values.$element, "mouseover"); values.$element.trigger("mouseenter"); for (var i = 1 ; i <= (nb || 1) ; i++) { @@ -61,8 +65,10 @@ var RunningTourActionHelper = core.Class.extend({ trigger_mouse_event(values.$element, "dblclick"); } } - trigger_mouse_event(values.$element, "mouseout"); - values.$element.trigger("mouseleave"); + if (leave !== false) { + trigger_mouse_event(values.$element, "mouseout"); + values.$element.trigger("mouseleave"); + } function trigger_mouse_event($element, type, count) { var e = document.createEvent("MouseEvents");