Skip to content

Commit dd3cf89

Browse files
authored
Fix pagination (#8345)
2 parents 96f5891 + e167d46 commit dd3cf89

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

src/tribler/ui/src/components/ui/simple-table.tsx

+25-9
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,14 @@ function SimpleTable<T extends object>({
140140
onSortingChange: setSorting,
141141
getSubRows: (row: any) => row?.subRows,
142142
getRowId: rowId,
143+
autoResetPageIndex: false,
143144
});
144145

146+
// If we're on an empty page, reset the pageIndex to 0
147+
if (table.getRowModel().rows.length == 0 && table.getExpandedRowModel().rows.length != 0) {
148+
setPagination(p => ({ ...p, pageIndex: 0 }));
149+
}
150+
145151
const { t } = useTranslation();
146152

147153
useEffect(() => {
@@ -248,7 +254,7 @@ function SimpleTable<T extends object>({
248254
function Pagination<T>({ table }: React.PropsWithChildren<{ table: ReactTable<T> }>) {
249255
const pageIndex = table.getState().pagination.pageIndex;
250256
const pageSize = table.getState().pagination.pageSize;
251-
const rowCount = table.getCoreRowModel().rows.length;
257+
const rowCount = table.getExpandedRowModel().rows.length;
252258

253259
const { t } = useTranslation();
254260

@@ -257,21 +263,31 @@ function Pagination<T>({ table }: React.PropsWithChildren<{ table: ReactTable<T>
257263
<div className="flex items-center space-x-4">
258264
<Select defaultValue="0"
259265
value={`${pageSize}`}
260-
onValueChange={(value) => table.setPageSize(Number(value))}>
266+
onValueChange={(value) => {
267+
let size = Number(value);
268+
if (size === 0) {
269+
for (let row of table.getExpandedRowModel().rows) {
270+
size += row.getLeafRows().length;
271+
}
272+
}
273+
table.setPageSize(size);
274+
}}>
261275
<SelectPrimitive.Trigger>
262276
<div className="px-1 py-0 hover:bg-inherit text-muted-foreground text-xs">
263277
{pageIndex * pageSize}&nbsp;-&nbsp;
264278
{Math.min((pageIndex + 1) * pageSize, rowCount)}&nbsp;of&nbsp;
265279
{rowCount}
266280
</div>
267281
</SelectPrimitive.Trigger>
268-
<SelectContent side="top"><SelectGroup>
269-
<SelectLabel>Rows per page</SelectLabel>
270-
{[10, 20, 30, 40, 50].map((pageSize) => (
271-
<SelectItem key={pageSize} value={`${pageSize}`}>
272-
{pageSize}
273-
</SelectItem>
274-
))}</SelectGroup>
282+
<SelectContent side="top">
283+
<SelectGroup>
284+
<SelectLabel>Rows per page</SelectLabel>
285+
{[10, 20, 30, 40, 50, 0].map((pageSize) => (
286+
<SelectItem key={pageSize} value={`${pageSize}`}>
287+
{pageSize > 0 ? pageSize : 'disable pagination'}
288+
</SelectItem>
289+
))}
290+
</SelectGroup>
275291
</SelectContent>
276292
</Select>
277293
<div className="flex items-center space-x-2">

0 commit comments

Comments
 (0)