diff --git a/addons/web/static/src/views/fields/x2many/x2many_field.js b/addons/web/static/src/views/fields/x2many/x2many_field.js index 3a9291c9f7f..41f6048751a 100644 --- a/addons/web/static/src/views/fields/x2many/x2many_field.js +++ b/addons/web/static/src/views/fields/x2many/x2many_field.js @@ -3,6 +3,7 @@ import { makeContext } from "@web/core/context"; import { registry } from "@web/core/registry"; import { Pager } from "@web/core/pager/pager"; +import { sprintf } from "@web/core/utils/strings"; import { useActiveActions, useAddInlineRecord, @@ -217,7 +218,9 @@ export class X2ManyField extends Component { const domain = record.getFieldDomain(this.props.name).toList(); context = makeContext([record.getFieldContext(this.props.name), context]); if (this.isMany2Many) { - return this.selectCreate({ domain, context }); + const { string } = this.props.record.activeFields[this.props.name]; + const title = sprintf(this.env._t("Add: %s"), string); + return this.selectCreate({ domain, context, title }); } if (editable) { if (this.list.editedRecord) { diff --git a/addons/web/static/tests/views/fields/many2many_field_tests.js b/addons/web/static/tests/views/fields/many2many_field_tests.js index 37319823395..6e1de164f77 100644 --- a/addons/web/static/tests/views/fields/many2many_field_tests.js +++ b/addons/web/static/tests/views/fields/many2many_field_tests.js @@ -479,6 +479,44 @@ QUnit.module("Fields", (hooks) => { } ); + QUnit.test("field string is used in the SelectCreateDialog", async function (assert) { + serverData.views = { + "partner_type,false,list": '', + "partner_type,false,search": '', + "turtle,false,list": '', + "turtle,false,search": '', + }; + await makeView({ + type: "form", + resModel: "partner", + serverData, + arch: ` +
+ + + + + + + + + + +
`, + }); + + await click(target.querySelectorAll(".o_field_x2many_list_row_add a")[0]); + assert.containsOnce(target, ".modal"); + assert.strictEqual(target.querySelector(".modal .modal-title").innerText, "Add: pokemon"); + + await click(target.querySelector(".modal .o_form_button_cancel")); + assert.containsNone(target, ".modal"); + + await click(target.querySelectorAll(".o_field_x2many_list_row_add a")[1]); + assert.containsOnce(target, ".modal"); + assert.strictEqual(target.querySelector(".modal .modal-title").innerText, "Add: Abcde"); + }); + QUnit.test("many2many kanban: create action disabled", async function (assert) { serverData.models.partner.records[0].timmy = [12, 14];