diff --git a/addons/web/static/src/views/kanban/kanban_compiler.js b/addons/web/static/src/views/kanban/kanban_compiler.js index 7a2fd7e6794..113f02a413c 100644 --- a/addons/web/static/src/views/kanban/kanban_compiler.js +++ b/addons/web/static/src/views/kanban/kanban_compiler.js @@ -88,7 +88,7 @@ export class KanbanCompiler extends ViewCompiler { return this.renderDropdown(part); } dropdown.parts.push(part); - if (part !== "menu") { + if (part !== "menu" || dropdown.parts.includes("dropdown")) { dropdown.shouldInsert = !dropdown.inserted; dropdown.inserted = true; } diff --git a/addons/web/static/tests/views/kanban_view_tests.js b/addons/web/static/tests/views/kanban_view_tests.js index d88ff80e6f3..05e619260ac 100644 --- a/addons/web/static/tests/views/kanban_view_tests.js +++ b/addons/web/static/tests/views/kanban_view_tests.js @@ -380,6 +380,34 @@ QUnit.module("Views", (hooks) => { assert.strictEqual(target.querySelector("span.o_text_block").textContent, "yop"); }); + QUnit.test("dropdown without toggler are correctly rendered", async (assert) => { + serverData.models.partner.records = [serverData.models.partner.records[0]]; + await makeView({ + type: "kanban", + resModel: "partner", + serverData, + arch: ` + + +
+ +
+
+
`, + }); + + assert.containsOnce(target, ".o-dropdown.dropdown.o_dropdown_kanban"); + await click(target, ".o_kanban_record .o-dropdown button.dropdown-toggle"); + assert.containsOnce( + target, + ".o_kanban_record .o-dropdown .o-dropdown--menu > div > a.someItem" + ); + }); + QUnit.test("basic grouped rendering", async (assert) => { assert.expect(13);