diff --git a/addons/web/static/src/views/relational_model.js b/addons/web/static/src/views/relational_model.js index 7c77789bcf3..a3cf7746cd2 100644 --- a/addons/web/static/src/views/relational_model.js +++ b/addons/web/static/src/views/relational_model.js @@ -1805,7 +1805,7 @@ export class DynamicRecordList extends DynamicList { /** @type {Record[]} */ this.records = []; this.data = params.data; - this.countLimit = this.constructor.WEB_SEARCH_READ_COUNT_LIMIT; + this.countLimit = params.countLimit || this.constructor.WEB_SEARCH_READ_COUNT_LIMIT; this.hasLimitedCount = false; } @@ -2569,6 +2569,7 @@ export class Group extends DataPoint { activeFields: params.activeFields, fields: params.fields, limit: params.limit, + countLimit: params.count, groupByInfo: params.groupByInfo, onCreateRecord: params.onCreateRecord, onRecordWillSwitchMode: params.onRecordWillSwitchMode, diff --git a/addons/web/static/tests/views/list_view_tests.js b/addons/web/static/tests/views/list_view_tests.js index 179c2f3962b..3889b169606 100644 --- a/addons/web/static/tests/views/list_view_tests.js +++ b/addons/web/static/tests/views/list_view_tests.js @@ -5203,6 +5203,35 @@ QUnit.module("Views", (hooks) => { ); }); + QUnit.test( + "pager, grouped, pager limit should be based on the group's count", + async function (assert) { + patchWithCleanup(DynamicRecordList, { WEB_SEARCH_READ_COUNT_LIMIT: 3 }); + serverData.models.foo.records = [ + { id: 121, foo: "blip" }, + { id: 122, foo: "blip" }, + { id: 123, foo: "blip" }, + { id: 124, foo: "blip" }, + { id: 125, foo: "blip" }, + { id: 126, foo: "blip" }, + ]; + await makeView({ + type: "list", + resModel: "foo", + serverData, + arch: '', + groupBy: ["foo"], + }); + + // unfold + await click(target.querySelector(".o_group_header:first-of-type")); + assert.strictEqual( + target.querySelector(".o_group_header:first-of-type .o_pager_limit").innerText, + "6" + ); + } + ); + QUnit.test("list keeps offset on switchView", async (assert) => { assert.expect(3); serverData.views = {