From cb5a1cfd16379a46265b64a42b511e4b13d278b8 Mon Sep 17 00:00:00 2001 From: "Hubert Van de Walle (huvw)" Date: Wed, 5 Jul 2023 16:06:14 +0000 Subject: [PATCH] [FIX] web: SelectCreateDialog should set selection_mode for kanban Steps to reproduce ================== - Install purchase_stock - Use a mobile viewport - Go to Purchase - Click on a record - Try to set the "Deliver To" field - Click on a record -> An action is triggered and the record is not selected Cause of the issue ================== [commit] removed the only use of `forceGlobalClick`. When it is set, KanbanRecord.selection_mode evaluates to true. Solution ======== forceGlobalClick should be set when selecting a record from the SelectCreateDialog. [commit]: https://github.com/odoo/odoo/commit/6e18fb3c35281bdba26d9616150141298975bb40 opw-3337018 closes odoo/odoo#127632 X-original-commit: 7a1db9fade48d231a71084624fa0063989afd2b9 Signed-off-by: Julien Mougenot (jum) Signed-off-by: Hubert Van De Walle --- .../view_dialogs/select_create_dialog.js | 2 + .../view_dialog/select_create_dialog_tests.js | 46 +++++++++++++++++++ 2 files changed, 48 insertions(+) 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([]); + }); });