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 / Views / Components / ListTable / ListTableRows / index.tsx
give / src / Views / Components / ListTable / ListTableRows Last commit date
ListTableRows.module.scss 3 years ago index.tsx 3 years ago
index.tsx
92 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 from '../TableCell';
6 import {BulkActionCheckbox} from '@givewp/components/ListTable/BulkActions/BulkActionCheckbox';
7 import InterweaveSSR from '@givewp/components/ListTable/InterweaveSSR';
8
9 export default function ListTableRows({columns, data, isLoading, rowActions, setUpdateErrors, parameters, singleName}) {
10 const [removed, setRemoved] = useState([]);
11 const [added, setAdded] = useState([]);
12
13 useEffect(() => {
14 if (added.length && !isLoading) {
15 const timeouts = [];
16 timeouts[0] = setTimeout(() => {
17 const addedItem = document.getElementsByClassName(styles.duplicated);
18 if (addedItem.length == 1) {
19 addedItem[0].scrollIntoView({behavior: 'smooth', block: 'center'});
20 }
21 }, 100);
22 timeouts[1] = setTimeout(() => {
23 setAdded([]);
24 }, 600);
25 return () => {
26 timeouts.forEach((timeout) => clearTimeout(timeout));
27 };
28 }
29 }, [added, isLoading]);
30
31 function removeRow(removeCallback) {
32 return async (event) => {
33 const id = event.target.dataset.actionid;
34 setRemoved([id]);
35 await removeCallback(id);
36 setRemoved([]);
37 };
38 }
39
40 function addRow(addCallback) {
41 return async (event) => {
42 const id = event.target.dataset.actionid;
43 const addedItem = await addCallback(id);
44 setAdded([...addedItem.successes]);
45 };
46 }
47
48 if (!data) {
49 return null;
50 }
51
52 return data?.items.map((item) => (
53 <tr
54 key={item.id}
55 className={cx(styles.tableRow, {
56 [styles.deleted]: removed.indexOf(item.id) > -1,
57 [styles.duplicated]: added.indexOf(parseInt(item.id)) > -1,
58 })}
59 >
60 <TableCell>
61 <BulkActionCheckbox
62 id={item.id}
63 name={item?.donor ?? item?.title ?? item?.donorInformation}
64 singleName={singleName}
65 data={data}
66 />
67 </TableCell>
68 <>
69 {columns?.map((column) => {
70 return (
71 <TableCell key={column.id} heading={columns[0].id === column.id}>
72 <InterweaveSSR column={column} item={item} />
73 {columns[0].id === column.id && !isLoading && rowActions && (
74 <div role="group" aria-label={__('Actions', 'give')} className={styles.tableRowActions}>
75 {rowActions({
76 data,
77 item,
78 removeRow,
79 addRow,
80 setUpdateErrors,
81 parameters,
82 })}
83 </div>
84 )}
85 </TableCell>
86 );
87 })}
88 </>
89 </tr>
90 ));
91 }
92