diff --git a/addons/web/static/src/views/relational_model.js b/addons/web/static/src/views/relational_model.js index 15b29506aad..28f0eab2b43 100644 --- a/addons/web/static/src/views/relational_model.js +++ b/addons/web/static/src/views/relational_model.js @@ -2399,6 +2399,7 @@ export class DynamicGroupList extends DynamicList { lazy: true, expand: this.expand, expand_orderby: this.expand ? orderByToString(this.orderBy) : null, + expand_limit: this.expand ? this.limitByGroup : null, offset: this.offset, limit: this.limit, context: this.context, diff --git a/addons/web/static/tests/views/list_view_tests.js b/addons/web/static/tests/views/list_view_tests.js index 56b60cf52c6..6ebc8b7acfc 100644 --- a/addons/web/static/tests/views/list_view_tests.js +++ b/addons/web/static/tests/views/list_view_tests.js @@ -12,7 +12,7 @@ import { session } from "@web/session"; import { FloatField } from "@web/views/fields/float/float_field"; import { TextField } from "@web/views/fields/text/text_field"; import { ListController } from "@web/views/list/list_controller"; -import { DynamicRecordList } from "@web/views/relational_model"; +import { DynamicRecordList, DynamicGroupList } from "@web/views/relational_model"; import { actionService } from "@web/webclient/actions/action_service"; import { makeFakeLocalizationService, makeFakeUserService } from "../helpers/mock_services"; import { Many2XAutocomplete } from "@web/views/fields/relational_utils"; @@ -5377,6 +5377,35 @@ QUnit.module("Views", (hooks) => { } ); + QUnit.test( + "grouped, show only limited records when the list view is initially expanded", + async function (assert) { + const forcedDefaultLimit = 3; + patchWithCleanup(DynamicGroupList, { DEFAULT_LIMIT: forcedDefaultLimit }); + + 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: /*xml*/ ` + + + `, + groupBy: ["foo"], + }); + + assert.containsN(target, ".o_data_row", forcedDefaultLimit); + } + ); + QUnit.test("list keeps offset on switchView", async (assert) => { assert.expect(3); serverData.views = { diff --git a/addons/web/static/tests/views/view_dialogs/select_create_dialog_tests.js b/addons/web/static/tests/views/view_dialogs/select_create_dialog_tests.js index d93456c91b7..f287bda4e5c 100644 --- a/addons/web/static/tests/views/view_dialogs/select_create_dialog_tests.js +++ b/addons/web/static/tests/views/view_dialogs/select_create_dialog_tests.js @@ -127,6 +127,7 @@ QUnit.module("ViewDialogs", (hooks) => { orderby: "", expand: false, expand_orderby: null, + expand_limit: null, lazy: true, limit: 80, offset: 0,