PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.6.1
GiveWP – Donation Plugin and Fundraising Platform v4.6.1
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 1 year ago index.tsx 1 year ago
index.tsx
102 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, columnFilters}) {
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 function columnGetFilter(columnId) {
49 return columnFilters.filter(definition => definition.column === columnId)
50 }
51
52 if (!data) {
53 return null;
54 }
55
56 return data?.items.map((item) => (
57 <tr
58 key={item.id}
59 className={cx(styles.tableRow, {
60 [styles.deleted]: removed.indexOf(item.id) > -1,
61 [styles.duplicated]: added.indexOf(parseInt(item.id)) > -1,
62 })}
63 >
64 <TableCell>
65 <BulkActionCheckbox
66 id={item.id}
67 name={item?.donor ?? item?.title ?? item?.donorInformation}
68 singleName={singleName}
69 />
70 </TableCell>
71 <>
72 {columns?.map((column) => {
73 const columnFilter = columnGetFilter(column.id);
74
75 return (
76 <TableCell key={column.id} heading={columns[0].id === column.id}>
77 {columnFilter.length > 0 ? (
78 columnFilter[0].filter(item, column, data)
79 ) : (
80 <InterweaveSSR column={column} item={item} />
81 )}
82
83 {columns[0].id === column.id && !isLoading && rowActions && (
84 <div role="group" aria-label={__('Actions', 'give')} className={styles.tableRowActions}>
85 {rowActions({
86 data,
87 item,
88 removeRow,
89 addRow,
90 setUpdateErrors,
91 parameters,
92 })}
93 </div>
94 )}
95 </TableCell>
96 );
97 })}
98 </>
99 </tr>
100 ));
101 }
102