diff --git a/addons/web/static/src/views/view_dialogs/select_create_dialog.js b/addons/web/static/src/views/view_dialogs/select_create_dialog.js index 5642bc6679b..54c7c73bcc5 100644 --- a/addons/web/static/src/views/view_dialogs/select_create_dialog.js +++ b/addons/web/static/src/views/view_dialogs/select_create_dialog.js @@ -45,6 +45,8 @@ export class SelectCreateDialog extends Component { }; if (type === "list") { props.allowSelectors = this.props.multiSelect; + } else if (type === "kanban") { + props.forceGlobalClick = true; } return props; } diff --git a/addons/web/static/tests/mobile/views/view_dialog/select_create_dialog_tests.js b/addons/web/static/tests/mobile/views/view_dialog/select_create_dialog_tests.js index 6d972f07934..58c0798e1c3 100644 --- a/addons/web/static/tests/mobile/views/view_dialog/select_create_dialog_tests.js +++ b/addons/web/static/tests/mobile/views/view_dialog/select_create_dialog_tests.js @@ -102,4 +102,50 @@ QUnit.module("ViewDialogs", (hooks) => { await click(target, ".o_form_button_save"); }); + + QUnit.test("SelectCreateDialog: selection_mode should be true", async function (assert) { + assert.expect(3); + + serverData.views["product,false,kanban"] = ` + + + +
+ + + +
+
+ +
+
+
+
`; + + await makeView({ + type: "form", + resModel: "sale_order_line", + serverData, + arch: ` +
+ + + `, + async mockRPC(route, args) { + if (args.method === "create" && args.model === "sale_order_line") { + const { product_id: selectedId } = args.args[0]; + assert.strictEqual(selectedId, 111, `the product should be selected`); + } + if (args.method === "some_action") { + assert.step("action should not be called"); + } + }, + }); + + await click(target, '.o_field_widget[name="product_id"] input'); + await click(target, ".modal-dialog.modal-lg .o_kanban_record:nth-child(1) .o_primary span"); + assert.containsNone(target, ".modal-dialog.modal-lg"); + await click(target, ".o_form_button_save"); + assert.verifySteps([]); + }); });