summaryrefslogtreecommitdiff
path: root/addons/web/static
diff options
context:
space:
mode:
authorMartin Geubelle <mge@odoo.com>2017-06-20 10:26:18 +0200
committerMartin Geubelle <mge@odoo.com>2017-06-20 11:17:35 +0200
commit28b67ee7dcc29cf85722d18d971fd2a9cc439093 (patch)
treecf928572dc519c9a1ef32aa8048407d2a8206beb /addons/web/static
parent98100b85dc2ac7957b84ed1a8eec956478c27d20 (diff)
[FIX] web: properly handle tab navigation with widgets in edit
Rev. https://github.com/odoo/odoo/commit/c5f8f35747b4ca9633c664d6be74614c5ce22fcd introduced a regression: the input of widgets 'email' and 'url' was not correctly focused anymore with tab navigation. The method `getFocusableElement` on their common parent (`InputField`) has not been correctly overriden because `_super``was not called in edit mode.
Diffstat (limited to 'addons/web/static')
-rw-r--r--addons/web/static/src/js/fields/basic_fields.js4
-rw-r--r--addons/web/static/tests/views/form_tests.js11
2 files changed, 11 insertions, 4 deletions
diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js
index 79654cc3095..103509a7b53 100644
--- a/addons/web/static/src/js/fields/basic_fields.js
+++ b/addons/web/static/src/js/fields/basic_fields.js
@@ -828,7 +828,7 @@ var FieldEmail = InputField.extend({
* @override
*/
getFocusableElement: function () {
- return this.mode === 'readonly' && this.$el || $();
+ return this.mode === 'readonly' ? this.$el : this._super.apply(this, arguments);
},
//--------------------------------------------------------------------------
@@ -940,7 +940,7 @@ var UrlWidget = InputField.extend({
* @override
*/
getFocusableElement: function () {
- return this.mode === 'readonly' && this.$el || $();
+ return this.mode === 'readonly' ? this.$el : this._super.apply(this, arguments);
},
//--------------------------------------------------------------------------
diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js
index c898618e315..9824c913960 100644
--- a/addons/web/static/tests/views/form_tests.js
+++ b/addons/web/static/tests/views/form_tests.js
@@ -3244,7 +3244,7 @@ QUnit.module('Views', {
});
QUnit.test('navigation with tab key in form view', function (assert) {
- assert.expect(2);
+ assert.expect(3);
var form = createView({
View: FormView,
@@ -3253,8 +3253,9 @@ QUnit.module('Views', {
arch: '<form string="Partners">' +
'<sheet>' +
'<group>' +
- '<field name="foo"/>' +
+ '<field name="foo" widget="email"/>' +
'<field name="bar"/>' +
+ '<field name="display_name" widget="url"/>' +
'</group>' +
'</sheet>' +
'</form>',
@@ -3266,12 +3267,18 @@ QUnit.module('Views', {
// focus first input, trigger tab
form.$('input[name="foo"]').focus();
+
form.$('input[name="foo"]').trigger($.Event('keydown', {which: $.ui.keyCode.TAB}));
assert.ok($.contains(form.$('div[name="bar"]')[0], document.activeElement),
"bar checkbox should be focused");
+ form.$('div[name="bar"]').trigger($.Event('keydown', {which: $.ui.keyCode.TAB}));
+ assert.strictEqual(form.$('input[name="display_name"]')[0], document.activeElement,
+ "display_name should be focused");
+
// simulate shift+tab on active element
$(document.activeElement).trigger($.Event('keydown', {which: $.ui.keyCode.TAB, shiftKey: true}));
+ $(document.activeElement).trigger($.Event('keydown', {which: $.ui.keyCode.TAB, shiftKey: true}));
assert.strictEqual(document.activeElement, form.$('input[name="foo"]')[0],
"first input should be focused");