PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.19.8
GiveWP – Donation Plugin and Fundraising Platform v2.19.8
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / DonationForms / resources / components / Pagination.js
give / src / DonationForms / resources / components Last commit date
AdminDonationFormsPage.module.scss 4 years ago AdminDonationFormsPage.tsx 4 years ago DonationFormsTable.module.scss 4 years ago DonationFormsTable.tsx 4 years ago DonationFormsTableRows.module.scss 4 years ago DonationFormsTableRows.tsx 4 years ago Pagination.js 4 years ago Pagination.module.scss 4 years ago
Pagination.js
117 lines
1 import PropTypes from 'prop-types';
2 import {useState, useEffect} from 'react';
3 import styles from './Pagination.module.scss';
4 import cx from 'classnames';
5 import {__, _n} from '@wordpress/i18n';
6
7 const Pagination = ({currentPage, totalPages, totalItems = -1, disabled, setPage}) => {
8 const [pageInput, setPageInput] = useState(1);
9
10 useEffect(() => {
11 setPageInput(currentPage);
12 }, [currentPage]);
13
14 const nextPage = parseInt(currentPage) + 1;
15 const previousPage = parseInt(currentPage) - 1;
16
17 return (
18 <nav aria-label={__('donation forms table', 'give')} className={styles.container}>
19 {totalItems >= 1 &&
20 <span className={styles.totalItems}>
21 {totalItems.toString() + " " + _n('form', 'forms', totalItems, 'give')}
22 </span>
23 }
24 {1 < totalPages &&
25 <>
26 <button
27 className={cx(styles.navDirection, styles.navElement)}
28 disabled={previousPage <= 1}
29 onClick={(e) => {
30 if (!disabled) {
31 setPage(1);
32 }
33 }}
34 >
35 «
36 </button>
37 <button
38 className={cx(styles.navDirection, styles.navElement)}
39 disabled={previousPage <= 0}
40 onClick={(e) => {
41 if (!disabled) {
42 setPage(parseInt(currentPage) - 1);
43 }
44 }}
45 >
46
47 </button>
48 <span>
49 <label htmlFor={styles.currentPage} className={styles.visuallyHidden}>
50 {__('Current Page', 'give')}
51 </label>
52 <input className={styles.navElement} id={styles.currentPage} name={'currentPageSelector'}
53 type="number" min={1} max={totalPages} value={pageInput}
54 onChange={(e) => {
55 const cleanValue = e.target.value.replace(/[^0-9]/, '');
56 const page = Number(cleanValue);
57 setPageInput(cleanValue);
58 if (totalPages >= page && page > 0) {
59 setPage(page);
60 }
61 }}
62 />
63 <span>
64 {' '}
65 {__('of', 'give')} <span>{totalPages}</span>{' '}
66 </span>
67 </span>
68 <button
69 className={cx(styles.navDirection, styles.navElement)}
70 disabled={nextPage > totalPages}
71 onClick={(e) => {
72 if (!disabled) {
73 setPage(parseInt(currentPage) + 1);
74 }
75 }}
76 >
77
78 </button>
79 <button
80 className={cx(styles.navDirection, styles.navElement)}
81 disabled={nextPage > totalPages - 1}
82 onClick={(e) => {
83 if (!disabled) {
84 setPage(totalPages);
85 }
86 }}
87 >
88 »
89 </button>
90 </>
91 }
92 </nav>
93 );
94 };
95
96 Pagination.propTypes = {
97 // Current page
98 currentPage: PropTypes.number.isRequired,
99 // Total number of pages
100 totalPages: PropTypes.number.isRequired,
101 // Total number of items
102 totalItems: PropTypes.number,
103 // Function to set the next/previous page
104 setPage: PropTypes.func.isRequired,
105 // Is pagination disabled
106 disabled: PropTypes.bool.isRequired,
107 };
108
109 Pagination.defaultProps = {
110 currentPage: 1,
111 totalPages: 0,
112 setPage: () => {},
113 disabled: false,
114 };
115
116 export default Pagination;
117