diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index f5f59235a0c..bf225d7ea99 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -773,7 +773,7 @@ var FieldDate = InputField.extend({ */ activate: function () { if (this.isFocusable() && this.datewidget) { - this.datewidget.focus(); + this.datewidget.$input.select(); return true; } return false; diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index 77df0909de4..3427244881b 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -4472,6 +4472,52 @@ QUnit.module('Views', { form.destroy(); }); + QUnit.test('navigation with tab key selects a value in form view', async function (assert) { + assert.expect(5); + + const form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: ` +
+ + + + + + + `, + res_id: 1, + viewOptions: { + mode: 'edit', + }, + }); + + await testUtils.dom.click(form.el.querySelector('input[name="display_name"]')); + await testUtils.fields.triggerKeydown(document.activeElement, 'tab'); + assert.strictEqual(document.getSelection().toString(), "10", + "int_field value should be selected"); + + await testUtils.fields.triggerKeydown(document.activeElement, 'tab'); + assert.strictEqual(document.getSelection().toString(), "0.4", + "qux field value should be selected"); + + await testUtils.fields.triggerKeydown(document.activeElement, 'tab'); + assert.strictEqual(document.getSelection().toString(), "aaa", + "trululu field value should be selected"); + + await testUtils.fields.triggerKeydown(document.activeElement, 'tab'); + assert.strictEqual(document.getSelection().toString(), "01/25/2017", + "date field value should be selected"); + + await testUtils.fields.triggerKeydown(document.activeElement, 'tab'); + assert.strictEqual(document.getSelection().toString(), "12/12/2016 10:55:05", + "datetime field value should be selected"); + + form.destroy(); + }); + QUnit.test('clicking on a stat button with a context', async function (assert) { assert.expect(1);