PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.6.1
GiveWP – Donation Plugin and Fundraising Platform v4.6.1
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 / Campaigns / Blocks / CampaignGrid / app / index.tsx
give / src / Campaigns / Blocks / CampaignGrid / app Last commit date
index.tsx 1 year ago styles.scss 1 year ago
index.tsx
63 lines
1 import {useState} from '@wordpress/element';
2 import useCampaigns from '../../shared/hooks/useCampaigns';
3 import Pagination from '../../shared/components/Pagination';
4 import CampaignCard from '../../shared/components/CampaignCard';
5 import {CampaignGridType} from '../types';
6
7 import './styles.scss';
8 import {Spinner as GiveSpinner} from '@givewp/components';
9
10 const getGridSettings = (layout: string) => {
11 switch (layout) {
12 case 'double':
13 return 2;
14 case 'triple':
15 return 3;
16 default:
17 return 1;
18 }
19 }
20
21 export default ({attributes}: { attributes: CampaignGridType }) => {
22 const [page, setPage] = useState(1);
23
24 const {campaigns, hasResolved, totalPages} = useCampaigns({
25 ids: attributes?.filterBy?.map((item: { value: string }) => Number(item.value)),
26 per_page: attributes?.perPage,
27 sortBy: attributes?.sortBy,
28 orderBy: attributes?.orderBy,
29 page,
30 });
31
32 if (!hasResolved) {
33 return <div className="givewp-campaign-grid__loading">
34 <GiveSpinner />
35 </div>;
36 }
37
38 return (
39 <>
40 <div
41 className="givewp-campaign-grid"
42 style={{gridTemplateColumns: `repeat(${getGridSettings(attributes.layout)}, 1fr)`}}
43 >
44 {campaigns?.map((campaign) => (
45 <CampaignCard
46 key={campaign.id}
47 campaign={campaign}
48 showImage={attributes.showImage}
49 showDescription={attributes.showDescription}
50 showGoal={attributes.showGoal}
51 />
52 ))}
53 </div>
54
55 {attributes.showPagination && totalPages >= page && (
56 <div className="givewp-campaign-grid__pagination">
57 <Pagination currentPage={page} totalPages={totalPages} setPage={(number) => setPage(number)} />
58 </div>
59 )}
60 </>
61 )
62 }
63