PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.3
GiveWP – Donation Plugin and Fundraising Platform v4.16.3
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 / edit.tsx
give / src / Campaigns / Blocks / CampaignGrid Last commit date
app 1 year ago app.tsx 1 year ago block.json 7 months ago edit.tsx 1 year ago index.tsx 1 year ago render.php 1 year ago types.ts 10 months ago
edit.tsx
141 lines
1 import {__} from '@wordpress/i18n';
2 import {InspectorControls, useBlockProps} from '@wordpress/block-editor';
3 import {BlockEditProps} from '@wordpress/blocks';
4 import {FormTokenField, PanelBody, SelectControl, TextControl, ToggleControl} from '@wordpress/components';
5 import {TokenItem} from '@wordpress/components/build-types/form-token-field/types'
6 import GridControl from '../shared/components/GridControl';
7 import useCampaigns from '../shared/hooks/useCampaigns';
8 import {CampaignGridType} from './types';
9 import CampaignGridApp from './app/index'
10
11 export default function Edit({attributes, setAttributes}: BlockEditProps<CampaignGridType>) {
12 const blockProps = useBlockProps();
13 const {campaigns, hasResolved} = useCampaigns();
14 const suggestions = campaigns?.map((campaign) => campaign.title);
15
16 return (
17 <div {...blockProps}>
18 {hasResolved && (
19 <>
20 <CampaignGridApp attributes={attributes} />
21 <InspectorControls>
22 <PanelBody title={__('Layout', 'give')} initialOpen={true}>
23 <GridControl
24 label={__('Grid', 'give')}
25 value={attributes.layout}
26 onChange={(layout) => setAttributes({layout})}
27 options={[
28 {
29 value: 'full',
30 label: __('Full Width', 'give'),
31 },
32 {
33 value: 'double',
34 label: __('Double', 'give'),
35 },
36 {
37 value: 'triple',
38 label: __('Triple', 'give'),
39 }
40 ]}
41 />
42 </PanelBody>
43
44 <PanelBody title={__('Display Elements', 'give')} initialOpen={true}>
45 <ToggleControl
46 label={__('Show campaign image', 'give')}
47 checked={attributes.showImage}
48 onChange={(showImage) => setAttributes({showImage})}
49 />
50 <ToggleControl
51 label={__('Show description', 'give')}
52 checked={attributes.showDescription}
53 onChange={(showDescription) => setAttributes({showDescription})}
54 />
55 <ToggleControl
56 label={__('Show goal', 'give')}
57 checked={attributes.showGoal}
58 onChange={(showGoal) => setAttributes({showGoal})}
59 />
60 </PanelBody>
61
62 <PanelBody title={__('Grid Settings', 'give')} initialOpen={true}>
63 <SelectControl
64 label={__('Order By', 'give')}
65 onChange={(sortBy: string) => setAttributes({sortBy})}
66 value={attributes.sortBy}
67 help={__('The order campaigns are displayed in.', 'give')}
68 options={[
69 {
70 value: 'date',
71 label: __('Date Created', 'give'),
72 },
73 {
74 value: 'amount',
75 label: __('Total Amount Raised', 'give'),
76 },
77 {
78 value: 'donations',
79 label: __('Number of Donations', 'give'),
80 },
81 {
82 value: 'donors',
83 label: __('Number of Donors', 'give'),
84 }
85 ]}
86 />
87 <SelectControl
88 label={__('Order', 'give')}
89 onChange={(orderBy: string) => setAttributes({orderBy})}
90 value={attributes.orderBy}
91 help={__('Choose whether the campaign order ascends or descends.', 'give')}
92 options={[
93 {
94 value: 'desc',
95 label: __('Descending', 'give'),
96 },
97 {
98 value: 'asc',
99 label: __('Ascending', 'give'),
100 }
101 ]}
102 />
103 <FormTokenField
104 value={attributes.filterBy?.map((item: TokenItem) => item.title)}
105 label={__('Filter by Campaign', 'give')}
106 onChange={(values) => {
107 const filterBy = campaigns
108 .filter((campaign) => values.includes(campaign.title))
109 .map((campaign) => {
110 return {
111 value: String(campaign.id),
112 title: campaign.title
113 }
114 });
115
116 setAttributes({filterBy})
117 }}
118 suggestions={suggestions}
119 />
120 <TextControl
121 type="number"
122 min="1"
123 label={__('Campaigns per page', 'give')}
124 value={attributes.perPage}
125 onChange={(perPage: string) => setAttributes({perPage: Number(perPage)})}
126 help={__('Set the number of campaigns to be displayed on the first page load.', 'give')}
127 />
128 <ToggleControl
129 label={__('Show pagination', 'give')}
130 checked={attributes.showPagination}
131 onChange={(showPagination) => setAttributes({showPagination})}
132 help={__('All campaigns will be spread across multiple pages.', 'give')}
133 />
134 </PanelBody>
135 </InspectorControls>
136 </>
137 )}
138 </div>
139 )
140 }
141