PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.24.0
GiveWP – Donation Plugin and Fundraising Platform v2.24.0
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 / Subscriptions / resources / components / SubscriptionsListTable.tsx
give / src / Subscriptions / resources / components Last commit date
SubscriptionsListTable.tsx 3 years ago SubscriptionsRowActions.tsx 3 years ago
SubscriptionsListTable.tsx
138 lines
1 import {__, sprintf} from '@wordpress/i18n';
2 import {ListTablePage} from '@givewp/components';
3 import ListTableApi from '@givewp/components/ListTable/api';
4 import tableStyles from '@givewp/components/ListTable/ListTablePage/ListTablePage.module.scss';
5 import {BulkActionsConfig, FilterConfig} from '@givewp/components/ListTable/ListTablePage';
6 import {SubscriptionsRowActions} from './SubscriptionsRowActions';
7 import {IdBadge} from '@givewp/components/ListTable/TableCell';
8 import {Interweave} from 'interweave';
9
10 declare global {
11 interface Window {
12 GiveSubscriptions: {
13 apiNonce: string;
14 apiRoot: string;
15 table: {columns: Array<object>};
16 forms: Array<{value: string; text: string}>;
17 paymentMode: boolean;
18 };
19 }
20 }
21
22 const API = new ListTableApi(window.GiveSubscriptions);
23
24 const filters: Array<FilterConfig> = [
25 {
26 name: 'search',
27 type: 'search',
28 inlineSize: '14rem',
29 text: __('Name, Email, or ID', 'give'),
30 ariaLabel: __('search donations', 'give'),
31 },
32 {
33 name: 'form',
34 type: 'formselect',
35 text: __('Select Form', 'give'),
36 ariaLabel: __('filter donation forms by status', 'give'),
37 options: window.GiveSubscriptions.forms,
38 },
39 {
40 name: 'toggle',
41 type: 'checkbox',
42 text: __('Test', 'give'),
43 ariaLabel: __('View Test Subscriptions', 'give'),
44 },
45 ];
46
47 const bulkActions: Array<BulkActionsConfig> = [
48 {
49 label: __('Delete', 'give'),
50 value: 'delete',
51 type: 'danger',
52 action: async (selected) => {
53 const response = await API.fetchWithArgs('/delete', {ids: selected.join(',')}, 'DELETE');
54 return response;
55 },
56 confirm: (selected, names) => (
57 <>
58 <p>{__('Really delete the following subscriptions?', 'give')}</p>
59 <ul role="document" tabIndex={0}>
60 {selected.map((donationId, index) => (
61 <li key={donationId}>
62 <IdBadge id={donationId} />{' '}
63 <span>
64 {__('from ', 'give')} <Interweave content={names[index]} />
65 </span>
66 </li>
67 ))}
68 </ul>
69 </>
70 ),
71 },
72 ...(() => {
73 const subscriptionStatuses = {
74 active: __('Set To Active', 'give'),
75 expired: __('Set To Expired', 'give'),
76 completed: __('Set To Completed', 'give'),
77 cancelled: __('Set To Cancelled', 'give'),
78 pending: __('Set To Pending', 'give'),
79 failing: __('Set To Failing', 'give'),
80 suspended: __('Set To Suspended', 'give'),
81 abandoned: __('Set To Abandoned', 'give'),
82 };
83
84 return Object.entries(subscriptionStatuses).map(([value, label]) => {
85 return {
86 label,
87 value,
88 action: async (selected) =>
89 await API.fetchWithArgs(
90 '/setStatus',
91 {
92 ids: selected.join(','),
93 status: value,
94 },
95 'POST'
96 ),
97 confirm: (selected, names) => (
98 <>
99 <p>{__('Set status for the following donations?', 'give')}</p>
100 <ul role="document" tabIndex={0}>
101 {selected.map((donationId, index) => (
102 <li key={donationId}>
103 <IdBadge id={donationId} /> <span>{__('from', 'give')}</span>
104 <Interweave content={names[index]} />
105 </li>
106 ))}
107 </ul>
108 </>
109 ),
110 };
111 });
112 })(),
113 ];
114
115 export default function SubscriptionsListTable() {
116 return (
117 <ListTablePage
118 title={__('Subscriptions', 'give')}
119 singleName={__('subscription', 'give')}
120 pluralName={__('subscriptions', 'give')}
121 rowActions={SubscriptionsRowActions}
122 bulkActions={bulkActions}
123 apiSettings={window.GiveSubscriptions}
124 filterSettings={filters}
125 paymentMode={!!window.GiveSubscriptions.paymentMode}
126 >
127 <button className={tableStyles.addFormButton} onClick={showLegacyDonations}>
128 {__('Switch to Legacy View')}
129 </button>
130 </ListTablePage>
131 );
132 }
133
134 const showLegacyDonations = async (event) => {
135 await API.fetchWithArgs('/view', {isLegacy: 1});
136 window.location.reload();
137 };
138