mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-24 20:19:49 +02:00
feat: better page turner
This commit is contained in:
1 parent
ca00f18a6a
commit
8d2679c458
1 file changed
+52
-60
@@ -179,34 +179,56 @@ export default function Page() {
|
|||||||
}, [page]);
|
}, [page]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TextField.Root className={noArrows}>
|
<Flex justify="center" wrap="wrap" gap="2">
|
||||||
<TextField.Slot>Page</TextField.Slot>
|
<Button variant="soft" onClick={previousPage}>
|
||||||
<TextField.Input
|
<CaretLeftIcon />
|
||||||
className={noArrows}
|
</Button>
|
||||||
type="number"
|
<TextField.Root className={noArrows}>
|
||||||
ref={pageInput}
|
<TextField.Slot>Page</TextField.Slot>
|
||||||
style={{ width: 64, textAlign: 'center' }}
|
<TextField.Input
|
||||||
onBlur={(event) => {
|
className={noArrows}
|
||||||
setPage(
|
type="number"
|
||||||
Math.max(
|
ref={pageInput}
|
||||||
0,
|
style={{ width: 64, textAlign: 'center' }}
|
||||||
Math.min(
|
onBlur={(event) => {
|
||||||
Math.floor((players.data?.length ?? 0) / rowsPerPage),
|
setPage(
|
||||||
event.target.valueAsNumber - 1,
|
Math.max(
|
||||||
|
0,
|
||||||
|
Math.min(
|
||||||
|
Math.floor((players.data?.length ?? 0) / rowsPerPage),
|
||||||
|
event.target.valueAsNumber - 1,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
);
|
||||||
);
|
}}
|
||||||
}}
|
onKeyDown={(event) => {
|
||||||
onKeyDown={(event) => {
|
if (event.key === 'Enter') {
|
||||||
if (event.key === 'Enter') {
|
(event.target as HTMLInputElement).blur();
|
||||||
(event.target as HTMLInputElement).blur();
|
}
|
||||||
}
|
}}
|
||||||
}}
|
/>
|
||||||
/>
|
<TextField.Slot>
|
||||||
<TextField.Slot>
|
out of {Math.ceil((players.data?.length ?? 0) / rowsPerPage)}
|
||||||
out of {Math.ceil((players.data?.length ?? 0) / rowsPerPage)}
|
</TextField.Slot>
|
||||||
</TextField.Slot>
|
</TextField.Root>
|
||||||
</TextField.Root>
|
<Select.Root
|
||||||
|
onValueChange={(value) => setRowsPerPage(parseInt(value))}
|
||||||
|
defaultValue={`${rowsPerPage}`}
|
||||||
|
>
|
||||||
|
<Select.Trigger />
|
||||||
|
|
||||||
|
<Select.Content>
|
||||||
|
{ROWS_OPTIONS.map((size) => (
|
||||||
|
<Select.Item value={`${size}`} key={size}>
|
||||||
|
{size} per page
|
||||||
|
</Select.Item>
|
||||||
|
))}
|
||||||
|
</Select.Content>
|
||||||
|
</Select.Root>
|
||||||
|
<Button variant="soft" onClick={nextPage}>
|
||||||
|
<CaretRightIcon />
|
||||||
|
</Button>
|
||||||
|
</Flex>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -260,30 +282,6 @@ export default function Page() {
|
|||||||
</Select.Root>
|
</Select.Root>
|
||||||
</Flex>
|
</Flex>
|
||||||
|
|
||||||
<Flex justify="center" wrap="wrap" gap="2">
|
|
||||||
<Button variant="soft" onClick={previousPage}>
|
|
||||||
<CaretLeftIcon />
|
|
||||||
</Button>
|
|
||||||
<PageTurner />
|
|
||||||
<Select.Root
|
|
||||||
onValueChange={(value) => setRowsPerPage(parseInt(value))}
|
|
||||||
defaultValue={`${rowsPerPage}`}
|
|
||||||
>
|
|
||||||
<Select.Trigger />
|
|
||||||
|
|
||||||
<Select.Content>
|
|
||||||
{ROWS_OPTIONS.map((size) => (
|
|
||||||
<Select.Item value={`${size}`} key={size}>
|
|
||||||
{size} per page
|
|
||||||
</Select.Item>
|
|
||||||
))}
|
|
||||||
</Select.Content>
|
|
||||||
</Select.Root>
|
|
||||||
<Button variant="soft" onClick={nextPage}>
|
|
||||||
<CaretRightIcon />
|
|
||||||
</Button>
|
|
||||||
</Flex>
|
|
||||||
|
|
||||||
<Flex gap="2" justify="center">
|
<Flex gap="2" justify="center">
|
||||||
<Dialog.Root
|
<Dialog.Root
|
||||||
open={jumpToPositionOpen}
|
open={jumpToPositionOpen}
|
||||||
@@ -410,6 +408,8 @@ export default function Page() {
|
|||||||
</Dialog.Root>
|
</Dialog.Root>
|
||||||
</Flex>
|
</Flex>
|
||||||
|
|
||||||
|
<PageTurner />
|
||||||
|
|
||||||
<Leaderboard.Root>
|
<Leaderboard.Root>
|
||||||
{players.isLoading ? (
|
{players.isLoading ? (
|
||||||
<Leaderboard.Gap message="Loading players..." />
|
<Leaderboard.Gap message="Loading players..." />
|
||||||
@@ -430,15 +430,7 @@ export default function Page() {
|
|||||||
)}
|
)}
|
||||||
</Leaderboard.Root>
|
</Leaderboard.Root>
|
||||||
|
|
||||||
<Flex justify="center" gap="2">
|
<PageTurner />
|
||||||
<Button variant="soft" onClick={previousPage}>
|
|
||||||
<CaretLeftIcon />
|
|
||||||
</Button>
|
|
||||||
<PageTurner />
|
|
||||||
<Button variant="soft" onClick={nextPage}>
|
|
||||||
<CaretRightIcon />
|
|
||||||
</Button>
|
|
||||||
</Flex>
|
|
||||||
</PageWrapper>
|
</PageWrapper>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user