PluginProbe ʕ •ᴥ•ʔ
Presto Player / 2.2.2
Presto Player v2.2.2
4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / src / admin / ui / Pagination.js
presto-player / src / admin / ui Last commit date
Menu.js 2 years ago Pagination.js 5 years ago StatCard.js 4 years ago Table.js 4 years ago
Pagination.js
69 lines
1 const { __ } = wp.i18n;
2 const { Card, CardBody, Flex, FlexBlock, Button, ButtonGroup } = wp.components;
3 const { useState, useEffect } = wp.element;
4
5 export default ({ page, setPage, perPage, total, totalPages }) => {
6 // do we have prev/next
7 const [hasPrevious, setHasPrevious] = useState(false);
8 const [hasNext, setHasNext] = useState(false);
9
10 // end and start cursors
11 const [end, setEnd] = useState(0);
12 const [start, setStart] = useState(0);
13
14 // set end and start
15 useEffect(() => {
16 setEnd(Math.min(perPage * page, total));
17 setStart(perPage * (page - 1) + 1);
18 }, [perPage, page, total]);
19
20 // update page when pagination is clicked
21 const nextPage = () => {
22 setPage(Math.min(totalPages, page + 1));
23 };
24 const prevPage = () => {
25 setPage(Math.max(page - 1, 0));
26 };
27
28 // set prev/next
29 useEffect(() => {
30 setHasPrevious(page - 1 > 0);
31 setHasNext(totalPages >= page + 1);
32 }, [page, totalPages]);
33
34 return (
35 <Card size="large" className="presto-card pagination">
36 <CardBody className="presto-flow">
37 <Flex>
38 <FlexBlock>
39 {sprintf(
40 __("Showing %1s to %2s of %3s", "presto-player"),
41 start,
42 end,
43 total
44 )}
45 </FlexBlock>
46 <FlexBlock>
47 <Flex justify="flex-end">
48 {
49 <ButtonGroup>
50 <Button
51 isSecondary
52 disabled={!hasPrevious}
53 onClick={prevPage}
54 >
55 {__("Previous", "presto-player")}
56 </Button>
57 <Button isSecondary disabled={!hasNext} onClick={nextPage}>
58 {__("Next", "presto-player")}
59 </Button>
60 </ButtonGroup>
61 }
62 </Flex>
63 </FlexBlock>
64 </Flex>
65 </CardBody>
66 </Card>
67 );
68 };
69