diff --git a/addons/web/static/src/views/kanban/kanban_renderer.js b/addons/web/static/src/views/kanban/kanban_renderer.js index e6c13fb9147..9afe5a36df2 100644 --- a/addons/web/static/src/views/kanban/kanban_renderer.js +++ b/addons/web/static/src/views/kanban/kanban_renderer.js @@ -71,15 +71,21 @@ export class KanbanRenderer extends Component { }, onDrop: async ({ element, previous, parent }) => { element.classList.remove("o_record_draggable"); - parent && parent.classList && parent.classList.remove("o_kanban_hover"); - const refId = previous ? previous.dataset.id : null; - const targetGroupId = parent && parent.dataset.id; - await this.props.list.moveRecord( - dataRecordId, - dataGroupId, - refId, - targetGroupId - ); + if ( + !this.props.list.isGrouped || + parent.classList.contains("o_kanban_hover") || + parent.dataset.id === element.parentElement.dataset.id + ) { + parent && parent.classList && parent.classList.remove("o_kanban_hover"); + const refId = previous ? previous.dataset.id : null; + const targetGroupId = parent && parent.dataset.id; + await this.props.list.moveRecord( + dataRecordId, + dataGroupId, + refId, + targetGroupId + ); + } element.classList.add("o_record_draggable"); }, }); diff --git a/addons/web/static/tests/views/kanban_view_tests.js b/addons/web/static/tests/views/kanban_view_tests.js index 0ffcb597e52..614c0598648 100644 --- a/addons/web/static/tests/views/kanban_view_tests.js +++ b/addons/web/static/tests/views/kanban_view_tests.js @@ -4070,6 +4070,29 @@ QUnit.module("Views", (hooks) => { assert.containsNone(target, ".o_kanban_group:nth-child(2).o_kanban_hover"); }); + QUnit.test("drag and drop outside of a column", async (assert) => { + await makeView({ + type: "kanban", + resModel: "partner", + serverData, + arch: ` + + + +
+
+
+
`, + groupBy: ["product_id"], + }); + assert.containsN(target, ".o_kanban_group:first-child .o_kanban_record", 2); + assert.containsN(target, ".o_kanban_group:nth-child(2) .o_kanban_record", 2); + + // first record of first column moved to the right of a column + await dragAndDrop(".o_kanban_group:first-child .o_kanban_record", ".o_column_quick_create"); + assert.containsN(target, ".o_kanban_group:first-child .o_kanban_record", 2); + }); + QUnit.test("drag and drop a record, grouped by selection", async (assert) => { assert.expect(7);