diff --git a/addons/web/static/src/views/fields/relational_utils.js b/addons/web/static/src/views/fields/relational_utils.js index fdac9aa429a..9e6d855dc9a 100644 --- a/addons/web/static/src/views/fields/relational_utils.js +++ b/addons/web/static/src/views/fields/relational_utils.js @@ -608,6 +608,7 @@ X2ManyFieldDialog.props = { save: Function, title: String, delete: { optional: true }, + deleteButtonLabel: {optional: true}, config: Object, }; X2ManyFieldDialog.template = "web.X2ManyFieldDialog"; @@ -683,6 +684,7 @@ export function useOpenX2ManyRecord({ const form = await getFormViewInfo({ list, activeField, viewService, userService, env }); let deleteRecord; + let deleteButtonLabel = undefined; const isDuplicate = !!record; if (record) { @@ -694,7 +696,8 @@ export function useOpenX2ManyRecord({ views: { form }, }); const { delete: canDelete, onDelete } = activeActions; - deleteRecord = viewMode === "kanban" && canDelete ? () => onDelete(_record) : null; + deleteRecord = viewMode === "kanban" && canDelete ? () => onDelete(_record) : null; + deleteButtonLabel = activeActions.type === 'one2many' ? env._t('Delete') : env._t('Remove'); } else { const recordParams = { context: makeContext([list.context, context]), @@ -738,6 +741,7 @@ export function useOpenX2ManyRecord({ }, title, delete: deleteRecord, + deleteButtonLabel: deleteButtonLabel, }, { onClose } ); diff --git a/addons/web/static/src/views/fields/relational_utils.xml b/addons/web/static/src/views/fields/relational_utils.xml index 20e70b41870..cf205c161c8 100644 --- a/addons/web/static/src/views/fields/relational_utils.xml +++ b/addons/web/static/src/views/fields/relational_utils.xml @@ -20,7 +20,10 @@ - + diff --git a/addons/web/static/tests/views/fields/one2many_field_tests.js b/addons/web/static/tests/views/fields/one2many_field_tests.js index 32a05b5be07..6fa48613b16 100644 --- a/addons/web/static/tests/views/fields/one2many_field_tests.js +++ b/addons/web/static/tests/views/fields/one2many_field_tests.js @@ -2518,6 +2518,42 @@ QUnit.module("Fields", (hooks) => { await clickSave(target); }); + QUnit.test("When viewing one2many records in an embedded kanban, the delete button should say 'Delete' and not 'Remove'", async function (assert) { + assert.expect(1); + serverData.views = { + "turtle,false,form": ` +
+

Data

+
`, + }; + await makeView({ + type: "form", + resModel: "partner", + serverData, + arch: ` +
+ + + + + +
+

Record 1

+
+
+
+
+
+
`, + resId: 1, + }); + + // Opening the record to see the footer buttons + await click(target.querySelector(".o_kanban_record")); + + assert.strictEqual(target.querySelector('.o_btn_remove').textContent, 'Delete'); + }); + QUnit.test("open a record in a one2many kanban (mode 'readonly')", async function (assert) { serverData.views = { "turtle,false,form": `