From 18780e9e5aac3ed996f7eb4cbc67a78c30c5fca7 Mon Sep 17 00:00:00 2001 From: "Michael Mattiello (mcm)" Date: Tue, 9 Feb 2021 12:22:44 +0000 Subject: [PATCH] [FIX] web: fix click on field label Before this commit, clicking on some field labels threw an error. This was because we were searching for the associated field by its id to get the name. Now, we don't search the associated field anymore, we use `fieldIdsToNames` to get the name from the id. task 2456348 closes odoo/odoo#65838 X-original-commit: ad97c32b236d92afd4a0b6d7b39e137448b0a9a5 Signed-off-by: Aaron Bohy (aab) --- .../static/src/js/views/form/form_renderer.js | 4 +- addons/web/static/tests/views/form_tests.js | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/addons/web/static/src/js/views/form/form_renderer.js b/addons/web/static/src/js/views/form/form_renderer.js index 46adbf5383d..b0da8c5aaf5 100644 --- a/addons/web/static/src/js/views/form/form_renderer.js +++ b/addons/web/static/src/js/views/form/form_renderer.js @@ -1154,10 +1154,8 @@ var FormRenderer = BasicRenderer.extend({ const entry = Object.entries(this.idsForLabels) .find(x => x[1] === idForLabel); if (entry) { - const fieldWidget = this.allFieldWidgets[this.state.id] - .find(field => field[symbol] === entry[0]); this.trigger_up('quick_edit', { - fieldName: fieldWidget.name, + fieldName: this.fieldIdsToNames[entry[0]], target: ev.currentTarget, extraInfo: {}, }); diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index 852ef11dfc7..c521101153a 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -10319,6 +10319,45 @@ QUnit.module('Views', { form.destroy(); }); + QUnit.test('Quick Edition: Label click (duplicated field)', async function (assert) { + assert.expect(8); + + const form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: ` +
+ +
+
+ + +
+
+ +
+
`, + res_id: 1, + }); + + assert.containsOnce(form, '.o_form_view.o_form_readonly'); + assert.containsN(form, '.o_form_label', 2); + assert.containsOnce(form, '.o_invisible_modifier .o_form_label'); + + await testUtils.dom.click(form.$('.o_form_label')[1]); + + assert.containsOnce(form, '.o_form_view.o_form_editable'); + assert.containsN(form, '.o_form_label', 2); + assert.containsOnce(form, '.o_invisible_modifier .o_form_label'); + assert.containsOnce(form, 'input.o_field_widget[name="foo"]'); + assert.strictEqual(document.activeElement, form.$('input.o_field_widget[name="foo"]')[0]); + + form.destroy(); + }); + QUnit.test('Quick Edition: Checkbox click', async function (assert) { assert.expect(11);