From 0aa71d6b518ed44f40fba228115c3091e43677de Mon Sep 17 00:00:00 2001 From: Gauthier Roebroeck Date: Tue, 24 Mar 2026 10:45:32 +0800 Subject: [PATCH] pagerequest fixes --- next-ui/src/types/PageRequest.test.ts | 10 ++++++++++ next-ui/src/types/PageRequest.ts | 14 ++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/next-ui/src/types/PageRequest.test.ts b/next-ui/src/types/PageRequest.test.ts index a2f051f2..ce3d3eb8 100644 --- a/next-ui/src/types/PageRequest.test.ts +++ b/next-ui/src/types/PageRequest.test.ts @@ -2,6 +2,16 @@ import { describe, expect, test } from 'vitest' import { PageRequest } from '@/types/PageRequest' describe('PageRequest destructuring', () => { + test('spread', () => { + const input = new PageRequest(5, 10, [{ key: 'title', order: 'asc' }], false) + const p = { ...input } + + expect(p.page).toStrictEqual(5) + expect(p.size).toStrictEqual(10) + expect(p.sort).toStrictEqual(['title,asc']) + expect(p.unpaged).toStrictEqual(false) + }) + test('default constructor', () => { const input = new PageRequest(5, 10, [{ key: 'title', order: 'asc' }], false) const { page, size, sort, unpaged } = input diff --git a/next-ui/src/types/PageRequest.ts b/next-ui/src/types/PageRequest.ts index 08e89527..98841256 100644 --- a/next-ui/src/types/PageRequest.ts +++ b/next-ui/src/types/PageRequest.ts @@ -15,7 +15,9 @@ function vSortItemToSort(sortItem: VSortItem): Sort { } } -function sortToString(sortItem: Sort): string { +function sortToString(sortItem: Sort | string): string { + if (typeof sortItem === 'string') return sortItem + let sort = sortItem.key if (sortItem.order) sort += `,${sortItem.order}` return sort @@ -25,11 +27,7 @@ export class PageRequest { readonly unpaged?: boolean readonly page?: number readonly size?: number - private readonly _sort?: Sort[] - - get sort(): string[] | undefined { - return this._sort?.map((it) => sortToString(it)) - } + readonly sort?: string[] static FromPageSize(pageSize: PageSize, page?: number, sort?: Sort[]) { return new PageRequest( @@ -71,13 +69,13 @@ export class PageRequest { ) } - constructor(page?: number, size?: number, sort?: Sort[], unpaged?: boolean) { + constructor(page?: number, size?: number, sort?: Sort[] | string[], unpaged?: boolean) { if (page && page < 0) throw new Error('page cannot be negative') if (size && size < 0) throw new Error('size cannot be negative') this.page = page this.size = size - this._sort = sort + this.sort = sort?.map((it) => sortToString(it)) this.unpaged = unpaged } }