PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.33.4
GiveWP – Donation Plugin and Fundraising Platform v2.33.4
4.16.4 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 / Donors / resources / components / DonorsListTable.tsx
give / src / Donors / resources / components Last commit date
DonorsListTable.tsx 3 years ago DonorsRowActions.module.scss 3 years ago DonorsRowActions.tsx 3 years ago style.scss 3 years ago
DonorsListTable.tsx
131 lines
1 import {__} from '@wordpress/i18n';
2 import {ListTableApi, ListTablePage} from '@givewp/components';
3 import {DonorsRowActions} from './DonorsRowActions';
4 import {BulkActionsConfig, FilterConfig} from '@givewp/components/ListTable/ListTablePage';
5 import styles from '@givewp/components/ListTable/ListTablePage/ListTablePage.module.scss';
6 import {Interweave} from 'interweave';
7 import './style.scss';
8 import BlankSlate from '@givewp/components/ListTable/BlankSlate';
9 import ProductRecommendations from '@givewp/components/ListTable/ProductRecommendations';
10
11 declare global {
12 interface Window {
13 GiveDonors: {
14 apiNonce: string;
15 apiRoot: string;
16 forms: Array<{value: string; text: string}>;
17 table: {columns: Array<object>};
18 pluginUrl: string;
19 dissedRecommendations: Array<string>;
20 };
21 }
22 }
23
24 const API = new ListTableApi(window.GiveDonors);
25
26 const donorsFilters: Array<FilterConfig> = [
27 {
28 name: 'search',
29 type: 'search',
30 inlineSize: '14rem',
31 text: __('Name, Email, or Donor ID', 'give'),
32 ariaLabel: __('Search donors', 'give'),
33 },
34 {
35 name: 'form',
36 type: 'formselect',
37 text: __('All Donation Forms', 'give'),
38 ariaLabel: __('Filter donation forms by status', 'give'),
39 options: window.GiveDonors.forms,
40 },
41 ];
42
43 const donorsBulkActions: Array<BulkActionsConfig> = [
44 {
45 label: __('Delete', 'give'),
46 value: 'delete',
47 type: 'danger',
48 action: async (selected) => {
49 const deleteDonations = document.querySelector('#giveDonorsTableDeleteDonations') as HTMLInputElement;
50 const args = {ids: selected.join(','), deleteDonationsAndRecords: deleteDonations.checked};
51 const response = await API.fetchWithArgs('/delete', args, 'DELETE');
52 return response;
53 },
54 confirm: (selected, names) => (
55 <>
56 <p>{__('Really delete the following donors?', 'give')}</p>
57 <ul role="document" tabIndex={0}>
58 {selected.map((id, index) => (
59 <li key={id}>
60 <Interweave attributes={{className: 'donorBulkModalContent'}} content={names[index]} />
61 </li>
62 ))}
63 </ul>
64 <div>
65 <input id="giveDonorsTableDeleteDonations" type="checkbox" defaultChecked={true} />
66 <label htmlFor="giveDonorsTableDeleteDonations">
67 {__('Delete all associated donations and records', 'give')}
68 </label>
69 </div>
70 </>
71 ),
72 },
73 ];
74
75 /**
76 * Displays a blank slate for the Donors table.
77 * @since 2.27.0
78 */
79 const ListTableBlankSlate = (
80 <BlankSlate
81 imagePath={`${window.GiveDonors.pluginUrl}assets/dist/images/list-table/blank-slate-donor-icon.svg`}
82 description={__('No donors found', 'give')}
83 href={'https://docs.givewp.com/donors'}
84 linkText={__('GiveWP Donors.', 'give')}
85 />
86 );
87
88 /**
89 * @since 2.27.1
90 */
91 const RecommendationConfig: any = {
92 feeRecovery: {
93 enum: 'givewp_donors_fee_recovery_recommendation_dismissed',
94 documentationPage: 'https://docs.givewp.com/feerecovery-donors-list',
95 message: __(
96 ' 90% of donors opt to give more to help cover transaction fees when given the opportunity. Give donors that opportunity.',
97 'give'
98 ),
99 innerHtml: __('Get the Fee Recovery add-on today', 'give'),
100 },
101 };
102
103 const recommendation = (
104 <ProductRecommendations options={[RecommendationConfig.feeRecovery]} apiSettings={window.GiveDonors} />
105 );
106
107 export default function DonorsListTable() {
108 return (
109 <ListTablePage
110 title={__('Donors', 'give')}
111 singleName={__('donors', 'give')}
112 pluralName={__('donors', 'give')}
113 rowActions={DonorsRowActions}
114 bulkActions={donorsBulkActions}
115 apiSettings={window.GiveDonors}
116 filterSettings={donorsFilters}
117 listTableBlankSlate={ListTableBlankSlate}
118 productRecommendation={recommendation}
119 >
120 <button className={styles.addFormButton} onClick={showLegacyDonors}>
121 {__('Switch to Legacy View', 'give')}
122 </button>
123 </ListTablePage>
124 );
125 }
126
127 const showLegacyDonors = async (event) => {
128 await API.fetchWithArgs('/view', {isLegacy: 1});
129 window.location.reload();
130 };
131