diff --git a/addons/web/static/src/views/kanban/kanban_model.js b/addons/web/static/src/views/kanban/kanban_model.js index d934301cec2..fd65f8e43af 100644 --- a/addons/web/static/src/views/kanban/kanban_model.js +++ b/addons/web/static/src/views/kanban/kanban_model.js @@ -69,6 +69,7 @@ class KanbanGroup extends Group { /** @type {ProgressBar[]} */ this.progressBars = this._generateProgressBars(); this.progressValue = markRaw(state.progressValue || { active: null }); + this.list.domain = this.getProgressBarDomain(); this.tooltip = []; this.model.transaction.register({ diff --git a/addons/web/static/tests/views/kanban_view_tests.js b/addons/web/static/tests/views/kanban_view_tests.js index 3da02ceb159..4e0d9d74194 100644 --- a/addons/web/static/tests/views/kanban_view_tests.js +++ b/addons/web/static/tests/views/kanban_view_tests.js @@ -10668,6 +10668,69 @@ QUnit.module("Views", (hooks) => { assert.containsN(target, ".o_kanban_record", 2); }); + QUnit.test("filter groups are kept when leaving and coming back", async (assert) => { + serverData.models.partner.records[1].state = "abc"; + serverData.views = { + "partner,false,kanban": ` + + + + +
+ +
+
+
+
`, + "partner,false,search": "", + "partner,false,form": ` +
+ + `, + }; + const webClient = await createWebClient({ serverData }); + await doAction(webClient, { + name: "Partners", + res_model: "partner", + type: "ir.actions.act_window", + views: [ + [false, "kanban"], + [false, "form"], + ], + context: { + group_by: ["bar"], + }, + }); + + // Filter on state "abc" => matches 2 records + await click(getProgressBars(1)[0]); + + assert.deepEqual(getCardTexts(0), ["4"]); + assert.deepEqual(getCardTexts(1), ["1", "2"]); + + // open a record + await click(target.querySelectorAll(".o_kanban_record")[1]); + assert.containsOnce(target, ".o_form_view"); + + // go back to kanban view + await click(target.querySelector(".breadcrumb-item a")); + + assert.deepEqual(getCardTexts(0), ["4"]); + assert.deepEqual(getCardTexts(1), ["1", "2"]); + + // open a record + await click(target.querySelectorAll(".o_kanban_record")[1]); + assert.containsOnce(target, ".o_form_view"); + + // select another state + await click(target.querySelectorAll("input.o_radio_input")[1]); + // go back to kanban view + await click(target.querySelector(".breadcrumb-item a")); + + assert.deepEqual(getCardTexts(0), ["4"]); + assert.deepEqual(getCardTexts(1), ["2"]); + }); + QUnit.test( "folded groups are kept when leaving and coming back (grouped by date)", async (assert) => {