PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.13.1
GiveWP – Donation Plugin and Fundraising Platform v4.13.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 / shared / components / CampaignSelector / Selector.tsx
give / src / Campaigns / Blocks / shared / components / CampaignSelector Last commit date
images 1 year ago Inspector.tsx 1 year ago Selector.tsx 1 year ago index.tsx 1 year ago reactSelectStyles.ts 1 year ago styles.scss 1 year ago
Selector.tsx
78 lines
1 import {useState} from 'react';
2 import {__} from '@wordpress/i18n';
3 import {Campaign} from '@givewp/campaigns/admin/components/types';
4 import ReactSelect from 'react-select';
5 import {reactSelectStyles, reactSelectThemeStyles} from './reactSelectStyles';
6 import logo from './images/givewp-logo.svg';
7
8 import './styles.scss';
9
10 type CampaignSelectorProps = {
11 hasResolved: boolean;
12 campaigns: Campaign[];
13 handleSelect: (id: number) => void;
14 }
15
16 /**
17 * @since 4.0.0
18 */
19 export default ({campaigns, hasResolved, handleSelect}: CampaignSelectorProps) => {
20 const [selectedCampaign, setSelectedCampaign] = useState<number>(null);
21
22 const campaignOptions = (() => {
23 if (!hasResolved) {
24 return [{label: __('Loading...', 'give'), value: ''}];
25 }
26
27 if (campaigns.length) {
28 const campaignOptions = campaigns.map((campaign) => ({
29 label: `${campaign.title} ${campaign.status === 'draft' ? `(${__('Draft', 'give')})` : ''}`.trim(),
30 value: campaign.id,
31 }));
32
33 return [{label: __('Select a campaign', 'give'), value: ''}, ...campaignOptions];
34 }
35
36 return [{label: __('No campaigns found.', 'give'), value: ''}];
37 })();
38
39 const campaign = campaignOptions.find(option => option.value === selectedCampaign);
40
41 return (
42 <div className="givewp-campaign-selector">
43 <img className="givewp-campaign-selector__logo" src={logo} alt="givewp-logo" />
44 <div className="givewp-campaign-selector__select">
45 <label htmlFor="campaignId" className="givewp-campaign-selector__label">
46 {__('Choose a campaign', 'give')}
47 </label>
48
49 <ReactSelect
50 name="campaignId"
51 inputId="campaignId"
52 value={campaign}
53 //@ts-ignore
54 onChange={(option) => setSelectedCampaign(option?.value)}
55 noOptionsMessage={() => <p>{__('No campaigns were found.', 'give')}</p>}
56 //@ts-ignore
57 options={campaignOptions}
58 loadingMessage={() => <>{__('Loading Campaigns...', 'give')}</>}
59 isLoading={!hasResolved}
60 theme={reactSelectThemeStyles}
61 styles={reactSelectStyles}
62 />
63 </div>
64
65 <button
66 className="givewp-campaign-selector__submit"
67 type="button"
68 disabled={!selectedCampaign}
69 onClick={() => {
70 handleSelect(selectedCampaign);
71 }}
72 >
73 {__('Confirm', 'give')}
74 </button>
75 </div>
76 );
77 }
78