PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.15.3
GiveWP – Donation Plugin and Fundraising Platform v4.15.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 / 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 8 months ago types.ts 1 year ago
index.tsx
157 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
55 const filters: Array<FilterConfig> = [
56 {
57 name: 'status',
58 type: 'select',
59 text: __('status', 'give'),
60 ariaLabel: __('Filter campaign by status', 'give'),
61 options: campaignStatus,
62 },
63 {
64 name: 'search',
65 type: 'search',
66 text: __('Search by name or ID', 'give'),
67 ariaLabel: __('Search donation forms', 'give'),
68 },
69 ];
70
71 const bulkActions: Array<BulkActionsConfig> = [
72 {
73 label: __('Merge', 'give'),
74 value: 'merge',
75 type: 'custom',
76 confirm: (selected, names, isOpen, setOpen) => {
77 return (
78 <MergeCampaignModal
79 isOpen={isOpen}
80 setOpen={setOpen}
81 campaigns={{
82 selected: selected,
83 names: names,
84 }}
85 />
86 );
87 },
88 },
89 ];
90
91 export default function CampaignsListTable() {
92 const [isCreateCampaignModalOpen, setCreateCampaignModalOpen] = useState<boolean>(autoOpenCreateCampaignModal());
93 const [isExistingUserIntroModalOpen, setExistingUserIntroModalOpen] = useState<boolean>(
94 shouldShowExistingUserIntroModal
95 );
96 const [showTooltip, dismissTooltip] = useCampaignNoticeHook('givewp_campaign_listtable_notice');
97
98 /**
99 * Displays a blank slate for the Campaigns table.
100 *
101 * @since 4.0.0
102 */
103 const ListTableBlankSlate = () => {
104 const imagePath = `${
105 getGiveCampaignsListTableWindowData().pluginUrl
106 }build/assets/dist/images/list-table/blank-slate-campaigns-icon.svg`;
107 return (
108 <div className={styles.container}>
109 <img src={imagePath} alt={__('No campaign created yet', 'give')} />
110 <h3>{__('No campaign created yet', 'give')}</h3>
111 <p className={styles.helpMessage}>
112 {__('Don’t worry, let’s help you set up your first campaign.', 'give')}
113 </p>
114 <p>
115 <a
116 onClick={() => setCreateCampaignModalOpen(true)}
117 className={`button button-primary ${styles.button}`}
118 >
119 {__('Create campaign', 'give')}
120 </a>
121 </p>
122 </div>
123 );
124 };
125
126 return (
127 <>
128 <ListTablePage
129 title={__('Campaigns', 'give')}
130 singleName={__('campaign', 'give')}
131 pluralName={__('campaigns', 'give')}
132 apiSettings={getGiveCampaignsListTableWindowData()}
133 filterSettings={filters}
134 bulkActions={bulkActions}
135 rowActions={CampaignsRowActions}
136 listTableBlankSlate={ListTableBlankSlate()}
137 >
138 <CreateCampaignModal isOpen={isCreateCampaignModalOpen} setOpen={setCreateCampaignModalOpen} />
139 <ExistingUserIntroModal isOpen={isExistingUserIntroModalOpen} setOpen={setExistingUserIntroModalOpen} />
140 {!isExistingUserIntroModalOpen && showTooltip && (
141 <CampaignNotice
142 title={__('Campaign List', 'give')}
143 description={__(
144 "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.",
145 'give'
146 )}
147 linkText={__('Read documentation on what we changed', 'give')}
148 linkHref="https://docs.givewp.com/campaigns-docs"
149 handleDismiss={dismissTooltip}
150 type={'campaignList'}
151 />
152 )}
153 </ListTablePage>
154 </>
155 );
156 }
157