PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.6.1
GiveWP – Donation Plugin and Fundraising Platform v4.16.6.1
4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 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 / admin / components / DonorDetailsPage / index.tsx
give / src / Donors / resources / admin / components / DonorDetailsPage Last commit date
Tabs 6 months ago DonorDetailsPage.module.scss 1 year ago index.tsx 10 months ago slots.ts 10 months ago
index.tsx
122 lines
1 /**
2 * External Dependencies
3 */
4 import { useState } from 'react';
5 import cx from 'classnames';
6
7 /**
8 * WordPress Dependencies
9 */
10 import { __ } from '@wordpress/i18n';
11
12 /**
13 * Internal Dependencies
14 */
15 import { TrashIcon, ViewIcon } from '@givewp/components/AdminDetailsPage/Icons';
16 import AdminDetailsPage from '@givewp/components/AdminDetailsPage';
17 import ConfirmationDialog from '@givewp/components/AdminDetailsPage/ConfirmationDialog';
18 import { getDonorOptionsWindowData, useDonorEntityRecord } from '@givewp/donors/utils';
19 import styles from './DonorDetailsPage.module.scss';
20 import tabDefinitions from './Tabs/definitions';
21
22 /**
23 * @since 4.4.0
24 */
25 const StatusBadge = ({ status }: { status: string }) => {
26 const statusMap = {
27 current: __('Current', 'give'),
28 prospective: __('Prospective', 'give'),
29 retained: __('Retained', 'give'),
30 lapsed: __('Lapsed', 'give'),
31 new: __('New', 'give'),
32 recaptured: __('Recaptured', 'give'),
33 recurring: __('Recurring', 'give'),
34 };
35
36 if (!statusMap[status]) {
37 return null;
38 }
39
40 return (
41 <div className={`${styles.statusBadge} ${styles[`statusBadge--${status}`]}`}>
42 <span className={styles.statusBadgeIcon}>{statusMap[status].substring(0, 1)}</span>
43 <span className={styles.statusBadgeText}>{statusMap[status]}</span>
44 </div>
45 );
46 };
47
48 /**
49 * @since 4.4.0
50 */
51 export default function DonorDetailsPage() {
52 const { adminUrl } = getDonorOptionsWindowData();
53 const [showConfirmationDialog, setShowConfirmationDialog] = useState<boolean>(false);
54
55 const { record: donor } = useDonorEntityRecord();
56
57 const SendEmailButton = ({ className }: { className: string }) => {
58 if (!donor?.email) {
59 return null;
60 }
61
62 return (
63 <a
64 href={`mailto:${donor.email}`}
65 className={className}
66 aria-label={__('Send email to donor', 'give')}
67 >
68 {__('Send Email', 'give')}
69 </a>
70 );
71 };
72
73 const ContextMenuItems = ({ className }: { className: string }) => {
74 return (
75 <>
76 {donor?.wpUserPermalink && (
77 <a
78 href={donor.wpUserPermalink}
79 target="_blank"
80 aria-label={__('View WordPress profile', 'give')}
81 className={className}
82 >
83 <ViewIcon /> {__('View WordPress profile', 'give')}
84 </a>
85 )}
86
87 {/* <a
88 href="#"
89 className={cx(className, styles.archive)}
90 onClick={() => setShowConfirmationDialog(true)}
91 >
92 <TrashIcon /> {__('Delete Donor', 'give')}
93 </a> */}
94 </>
95 );
96 };
97
98 return (
99 <AdminDetailsPage
100 objectId={donor?.id}
101 objectType="donor"
102 objectTypePlural="donors"
103 useObjectEntityRecord={useDonorEntityRecord}
104 tabDefinitions={tabDefinitions}
105 breadcrumbUrl={`${adminUrl}edit.php?post_type=give_forms&page=give-donors`}
106 StatusBadge={() => <StatusBadge status={donor?.status} />}
107 SecondaryActionButton={SendEmailButton}
108 ContextMenuItems={donor?.wpUserPermalink ? ContextMenuItems : null} // TODO: Remove this once we have items always being shown in the context menu
109 >
110 <ConfirmationDialog
111 title={__('Delete Donor', 'give')}
112 actionLabel={__('Delete Donor', 'give')}
113 isOpen={showConfirmationDialog}
114 handleClose={() => setShowConfirmationDialog(false)}
115 handleConfirm={() => { }}
116 >
117 {__('Are you sure you want to delete this donor?', 'give')}
118 </ConfirmationDialog>
119 </AdminDetailsPage>
120 );
121 }
122