PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.8.1
GiveWP – Donation Plugin and Fundraising Platform v4.8.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 / Views / Components / ListTable / ListTableRows / index.tsx
give / src / Views / Components / ListTable / ListTableRows Last commit date
ListTableRows.module.scss 11 months ago index.tsx 11 months ago
index.tsx
104 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, includeBulkActionsCheckbox = false}) {
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 {includeBulkActionsCheckbox && (
65 <TableCell>
66 <BulkActionCheckbox
67 id={item.id}
68 name={item?.donor ?? item?.title ?? item?.donorInformation}
69 singleName={singleName}
70 />
71 </TableCell>
72 )}
73 <>
74 {columns?.map((column) => {
75 const columnFilter = columnGetFilter(column.id);
76
77 return (
78 <TableCell key={column.id} heading={columns[0].id === column.id}>
79 {columnFilter.length > 0 ? (
80 columnFilter[0].filter(item, column, data)
81 ) : (
82 <InterweaveSSR column={column} item={item} />
83 )}
84
85 {columns[0].id === column.id && !isLoading && rowActions && (
86 <div role="group" aria-label={__('Actions', 'give')} className={styles.tableRowActions}>
87 {rowActions({
88 data,
89 item,
90 removeRow,
91 addRow,
92 setUpdateErrors,
93 parameters,
94 })}
95 </div>
96 )}
97 </TableCell>
98 );
99 })}
100 </>
101 </tr>
102 ));
103 }
104