feat: better page turner

This commit is contained in:
TrèsAbhi committed 2023-11-07 10:50:41 -06:00
1 parent ca00f18a6a
commit 8d2679c458
1 file changed
+52 -60
+52 -60
View File
@@ -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>
); );
} }