fix(grid): use table-open page size for documents

Closes #6903
This commit is contained in:
t8y2 committed 2026-08-21 17:32:32 +00:00
1 parent f57cd3960b
commit 3bec5091df
5 files changed
+85 -13

No files matched your search

@@ -0,0 +1,30 @@
import { describe, expect, it } from "vitest";
import { dataGridPageSizeSettingsPatch, preferredDataGridPageSize, resolveDataGridPageSizePreference } from "@/lib/dataGrid/dataGridPageSizePreference";
describe("DataGrid page-size preference", () => {
it("keeps the context-derived defaults for regular result and table-data grids", () => {
expect(resolveDataGridPageSizePreference("results")).toBe("results");
expect(resolveDataGridPageSizePreference(undefined)).toBe("results");
expect(resolveDataGridPageSizePreference("table-data")).toBe("table-open");
});
it("allows a result-context grid to explicitly use the table-open preference", () => {
expect(resolveDataGridPageSizePreference("results", "table-open")).toBe("table-open");
});
it("reads the selected preference and preserves an explicit table-data page limit", () => {
const settings = { pageSize: 25, tableOpenPageSize: 500 };
expect(preferredDataGridPageSize(settings, "results")).toBe(25);
expect(preferredDataGridPageSize(settings, "table-open")).toBe(500);
expect(preferredDataGridPageSize(settings, "table-open", 75)).toBe(75);
expect(preferredDataGridPageSize({ pageSize: 0, tableOpenPageSize: Number.NaN }, "results")).toBe(100);
expect(preferredDataGridPageSize({ pageSize: 0, tableOpenPageSize: Number.NaN }, "table-open")).toBe(100);
});
it("writes only the selected normalized setting", () => {
expect(dataGridPageSizeSettingsPatch("results", 250.9)).toEqual({ pageSize: 250 });
expect(dataGridPageSizeSettingsPatch("table-open", 750.9)).toEqual({ tableOpenPageSize: 750 });
expect(dataGridPageSizeSettingsPatch("table-open", 0)).toEqual({ tableOpenPageSize: 100 });
});
});
@@ -0,0 +1,23 @@
import { normalizeResultPageSize } from "@/lib/dataGrid/paginationPageSize";
import { tableOpenPageLimit } from "@/lib/table/tableOpenPageLimit";
export type DataGridPageSizePreference = "results" | "table-open";
type DataGridContext = "results" | "table-data" | undefined;
type DataGridPageSizeSettings = {
pageSize: unknown;
tableOpenPageSize: unknown;
};
export function resolveDataGridPageSizePreference(context: DataGridContext, preference?: DataGridPageSizePreference): DataGridPageSizePreference {
return preference ?? (context === "table-data" ? "table-open" : "results");
}
export function preferredDataGridPageSize(settings: DataGridPageSizeSettings, preference: DataGridPageSizePreference, pageLimit?: number): number {
return preference === "table-open" ? normalizeResultPageSize(pageLimit ?? tableOpenPageLimit(settings.tableOpenPageSize)) : normalizeResultPageSize(settings.pageSize);
}
export function dataGridPageSizeSettingsPatch(preference: DataGridPageSizePreference, value: unknown): { pageSize: number } | { tableOpenPageSize: number } {
const normalized = normalizeResultPageSize(value);
return preference === "table-open" ? { tableOpenPageSize: normalized } : { pageSize: normalized };
}