PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.23.2
GiveWP – Donation Plugin and Fundraising Platform v2.23.2
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 / Views / Components / ListTable / ListTableRows.tsx
give / src / Views / Components / ListTable Last commit date
hooks 4 years ago images 4 years ago BulkActionCheckbox.tsx 4 years ago BulkActionSelect.module.scss 4 years ago BulkActionSelect.tsx 4 years ago Filters.tsx 4 years ago FormSelect.module.scss 4 years ago FormSelect.tsx 4 years ago Input.module.scss 4 years ago Input.tsx 4 years ago ListTable.module.scss 4 years ago ListTable.tsx 4 years ago ListTablePage.module.scss 3 years ago ListTableRows.module.scss 3 years ago ListTableRows.tsx 4 years ago Pagination.module.scss 4 years ago Pagination.tsx 4 years ago README.MD 4 years ago RowAction.module.scss 4 years ago RowAction.tsx 4 years ago Select.module.scss 4 years ago Select.tsx 4 years ago TableCell.module.scss 4 years ago TableCell.tsx 4 years ago TestLabel.module.scss 4 years ago TestLabel.tsx 4 years ago TypeBadge.module.scss 4 years ago TypeBadge.tsx 4 years ago api.ts 4 years ago index.tsx 4 years ago
ListTableRows.tsx
149 lines
1 import styles from './ListTableRows.module.scss';
2 import {__} from '@wordpress/i18n';
3 import cx from 'classnames';
4 import {useEffect, useState} from 'react';
5 import TableCell, {IdBadge, StatusBadge} from "./TableCell";
6 import TestLabel from "@givewp/components/ListTable/TestLabel";
7 import {BulkActionCheckbox} from "@givewp/components/ListTable/BulkActionCheckbox";
8
9 const postStatusMap = {
10 publish: __('published', 'give'),
11 future: __('future', 'give'),
12 draft: __('draft', 'give'),
13 pending: __('pending', 'give'),
14 trash: __('trash', 'give'),
15 inherit: __('inherit', 'give'),
16 private: __('private', 'give'),
17 }
18
19 const donationStatusMap = {
20 publish: __('complete', 'give'),
21 pending: __('pending', 'give'),
22 refunded: __('refunded', 'give'),
23 failed: __('failed', 'give'),
24 cancelled: __('cancelled', 'give'),
25 abandoned: __('abandoned', 'give'),
26 preapproval: __('pre-approved', 'give'),
27 processing: __('processing', 'give'),
28 revoked: __('revoked', 'give'),
29 give_subscription: __('renewal', 'give'),
30 }
31
32 const RenderRow = ({ column, item }) => {
33 let value = item?.[column.name];
34 if(value === undefined){
35 value = null;
36 }
37 switch(column?.preset){
38 case 'idBadge':
39 return (
40 <IdBadge key={column.name} id={value}/>
41 );
42 case 'statusBadge':
43 return (
44 <StatusBadge key={column.name} className={styles[value]}
45 text={value}
46 />
47 );
48 case 'postStatus':
49 return (
50 <StatusBadge key={column.name} className={styles[value]}
51 text={postStatusMap[value]}
52 />
53 );
54 case 'donationStatus':
55 return (
56 <div className={styles.donationStatus}>
57 <StatusBadge key={column.name} className={styles[value]}
58 text={donationStatusMap[value]}
59 />
60 {(item.paymentMode === 'test') && <TestLabel/>}
61 </div>
62 );
63 case 'monetary':
64 return (
65 <strong className={styles.monetary}>{value}</strong>
66 );
67 default:
68 if(column?.render instanceof Function) return column.render(item);
69 if(value === '' || value === null) return '-';
70 return value;
71 }
72 }
73
74 export default function ListTableRows({columns, data, isLoading, rowActions, setUpdateErrors, parameters, singleName, align}) {
75 const [removed, setRemoved] = useState([]);
76 const [added, setAdded] = useState([]);
77
78 useEffect(() => {
79 if (added.length && !isLoading) {
80 const timeouts = [];
81 timeouts[0] = setTimeout(() => {
82 const addedItem = document.getElementsByClassName(styles.duplicated);
83 if (addedItem.length == 1) {
84 addedItem[0].scrollIntoView({behavior: 'smooth', block: 'center'});
85 }
86 }, 100);
87 timeouts[1] = setTimeout(() => {
88 setAdded([]);
89 }, 600);
90 return () => {
91 timeouts.forEach((timeout) => clearTimeout(timeout));
92 };
93 }
94 }, [added, isLoading]);
95
96 function removeRow(removeCallback) {
97 return async (event) => {
98 const id = event.target.dataset.actionid;
99 setRemoved([id]);
100 await removeCallback(id);
101 setRemoved([]);
102 }
103 }
104
105 function addRow(addCallback) {
106 return async (event) => {
107 const id = event.target.dataset.actionid;
108 const addedItem = await addCallback(id);
109 setAdded([...addedItem.successes]);
110 }
111 }
112
113 if(!data?.items) {
114 return null;
115 }
116
117 return data.items.map((item) => (
118 <tr
119 key={item.id}
120 className={cx(styles.tableRow, {
121 [styles.deleted]: removed.indexOf(item.id) > -1,
122 [styles.duplicated]: added.indexOf(parseInt(item.id)) > -1,
123 })}
124 >
125 <TableCell>
126 <BulkActionCheckbox id={item.id} name={item?.name} singleName={singleName}/>
127 </TableCell>
128 <>
129 {columns.map((column) => (
130 <TableCell key={column.name} className={cx(column?.addClass,
131 {
132 [styles[align]]: !(column?.alignColumn),
133 [styles.center]: column?.alignColumn === 'center',
134 [styles.start]: column?.alignColumn === 'start',
135 }
136 )} heading={column?.heading}>
137 <RenderRow column={column} item={item}/>
138 {!isLoading && rowActions &&
139 <div role="group" aria-label={__('Actions', 'give')} className={styles.tableRowActions}>
140 {column?.heading && rowActions({data, item, removeRow, addRow, setUpdateErrors, parameters})}
141 </div>
142 }
143 </TableCell>
144 ))}
145 </>
146 </tr>
147 ));
148 }
149