PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.3.1
GiveWP – Donation Plugin and Fundraising Platform v4.3.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 / resources / admin / components / CampaignsListTable / index.tsx
give / src / Campaigns / resources / admin / components / CampaignsListTable Last commit date
CampaignsListTable.module.scss 1 year ago CampaignsRowActions.tsx 1 year ago index.tsx 1 year ago types.ts 1 year ago
index.tsx
161 lines
1 import {__} from '@wordpress/i18n';
2 import {ListTablePage} from '@givewp/components';
3 import ListTableApi from '@givewp/components/ListTable/api';
4 import {BulkActionsConfig, FilterConfig} from '@givewp/components/ListTable/ListTablePage';
5 import {CampaignsRowActions} from './CampaignsRowActions';
6 import styles from './CampaignsListTable.module.scss';
7 import {GiveCampaignsListTable} from './types';
8 import CreateCampaignModal from '../CreateCampaignModal';
9 import {useState} from 'react';
10 import MergeCampaignModal from '../MergeCampaign/Modal';
11 import ExistingUserIntroModal from '@givewp/campaigns/admin/components/ExistingUserIntroModal';
12 import {getCampaignOptionsWindowData} from '@givewp/campaigns/utils';
13 import {useCampaignNoticeHook} from '@givewp/campaigns/hooks';
14 import CampaignNotice from '@givewp/campaigns/admin/components/CampaignDetailsPage/Components/Notices/CampaignNotice';
15
16 declare const window: {
17 GiveCampaignsListTable: GiveCampaignsListTable;
18 } & Window;
19
20 /**
21 * Auto open modal if the URL has the query parameter id as new
22 *
23 * @since 4.0.0
24 */
25 const autoOpenCreateCampaignModal = () => {
26 const queryParams = new URLSearchParams(window.location.search);
27 const newParam = queryParams.get('new');
28
29 return newParam === 'campaign';
30 };
31
32 const shouldShowExistingUserIntroModal = getCampaignOptionsWindowData().admin.showExistingUserIntroNotice;
33
34 export function getGiveCampaignsListTableWindowData() {
35 return window.GiveCampaignsListTable;
36 }
37
38 const API = new ListTableApi(getGiveCampaignsListTableWindowData());
39
40 const campaignStatus = [
41 {
42 value: 'any',
43 text: __('All Status', 'give'),
44 },
45 {
46 value: 'active',
47 text: __('Active', 'give'),
48 },
49 {
50 value: 'inactive',
51 text: __('Archived', 'give'),
52 },
53 {
54 value: 'draft',
55 text: __('Draft', 'give'),
56 },
57 ];
58
59 const filters: Array<FilterConfig> = [
60 {
61 name: 'status',
62 type: 'select',
63 text: __('status', 'give'),
64 ariaLabel: __('Filter campaign by status', 'give'),
65 options: campaignStatus,
66 },
67 {
68 name: 'search',
69 type: 'search',
70 text: __('Search by name or ID', 'give'),
71 ariaLabel: __('Search donation forms', 'give'),
72 },
73 ];
74
75 const bulkActions: Array<BulkActionsConfig> = [
76 {
77 label: __('Merge', 'give'),
78 value: 'merge',
79 type: 'custom',
80 confirm: (selected, names, isOpen, setOpen) => {
81 return (
82 <MergeCampaignModal
83 isOpen={isOpen}
84 setOpen={setOpen}
85 campaigns={{
86 selected: selected,
87 names: names,
88 }}
89 />
90 );
91 },
92 },
93 ];
94
95 export default function CampaignsListTable() {
96 const [isCreateCampaignModalOpen, setCreateCampaignModalOpen] = useState<boolean>(autoOpenCreateCampaignModal());
97 const [isExistingUserIntroModalOpen, setExistingUserIntroModalOpen] = useState<boolean>(
98 shouldShowExistingUserIntroModal
99 );
100 const [showTooltip, dismissTooltip] = useCampaignNoticeHook('givewp_campaign_listtable_notice');
101
102 /**
103 * Displays a blank slate for the Campaigns table.
104 *
105 * @since 4.0.0
106 */
107 const ListTableBlankSlate = () => {
108 const imagePath = `${
109 getGiveCampaignsListTableWindowData().pluginUrl
110 }build/assets/dist/images/list-table/blank-slate-campaigns-icon.svg`;
111 return (
112 <div className={styles.container}>
113 <img src={imagePath} alt={__('No campaign created yet', 'give')} />
114 <h3>{__('No campaign created yet', 'give')}</h3>
115 <p className={styles.helpMessage}>
116 {__('Don’t worry, let’s help you set up your first campaign.', 'give')}
117 </p>
118 <p>
119 <a
120 onClick={() => setCreateCampaignModalOpen(true)}
121 className={`button button-primary ${styles.button}`}
122 >
123 {__('Create campaign', 'give')}
124 </a>
125 </p>
126 </div>
127 );
128 };
129
130 return (
131 <>
132 <ListTablePage
133 title={__('Campaigns', 'give')}
134 singleName={__('campaign', 'give')}
135 pluralName={__('campaigns', 'give')}
136 apiSettings={getGiveCampaignsListTableWindowData()}
137 filterSettings={filters}
138 bulkActions={bulkActions}
139 rowActions={CampaignsRowActions}
140 listTableBlankSlate={ListTableBlankSlate()}
141 >
142 <CreateCampaignModal isOpen={isCreateCampaignModalOpen} setOpen={setCreateCampaignModalOpen} />
143 <ExistingUserIntroModal isOpen={isExistingUserIntroModalOpen} setOpen={setExistingUserIntroModalOpen} />
144 {!isExistingUserIntroModalOpen && showTooltip && (
145 <CampaignNotice
146 title={__('Campaign List', 'give')}
147 description={__(
148 "We've created a campaign from each of your donation forms. Your forms still work as before, but now with the added power of campaign management! Select a campaign to see how you can seamlessly manage your online fundraising.",
149 'give'
150 )}
151 linkText={__('Read documentation on what we changed', 'give')}
152 linkHref="https://docs.givewp.com/campaigns-docs"
153 handleDismiss={dismissTooltip}
154 type={'campaignList'}
155 />
156 )}
157 </ListTablePage>
158 </>
159 );
160 }
161