PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.13.0
GiveWP – Donation Plugin and Fundraising Platform v4.13.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 9 months ago index.tsx 8 months ago
index.tsx
106 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 import ListTableApi from '@givewp/components/ListTable/api';
9
10 export default function ListTableRows({columns, data, isLoading, rowActions, setUpdateErrors, parameters, singleName, columnFilters, includeBulkActionsCheckbox = false, tableId, apiSettings}) {
11 const [removed, setRemoved] = useState([]);
12 const [added, setAdded] = useState([]);
13
14 useEffect(() => {
15 if (added.length && !isLoading) {
16 const timeouts = [];
17 timeouts[0] = setTimeout(() => {
18 const addedItem = document.getElementsByClassName(styles.duplicated);
19 if (addedItem.length == 1) {
20 addedItem[0].scrollIntoView({behavior: 'smooth', block: 'center'});
21 }
22 }, 100);
23 timeouts[1] = setTimeout(() => {
24 setAdded([]);
25 }, 600);
26 return () => {
27 timeouts.forEach((timeout) => clearTimeout(timeout));
28 };
29 }
30 }, [added, isLoading]);
31
32 function removeRow(removeCallback) {
33 return async (event) => {
34 const id = event.target.dataset.actionid;
35 setRemoved([id]);
36 await removeCallback(id);
37 setRemoved([]);
38 };
39 }
40
41 function addRow(addCallback) {
42 return async (event) => {
43 const id = event.target.dataset.actionid;
44 const addedItem = await addCallback(id);
45 setAdded([...addedItem.successes]);
46 };
47 }
48
49 function columnGetFilter(columnId) {
50 return columnFilters.filter(definition => definition.column === columnId)
51 }
52
53 if (!data) {
54 return null;
55 }
56
57 return data?.items.map((item) => (
58 <tr
59 key={item.id}
60 className={cx(styles.tableRow, {
61 [styles.deleted]: removed.indexOf(item.id) > -1,
62 [styles.duplicated]: added.indexOf(parseInt(item.id)) > -1,
63 })}
64 >
65 {includeBulkActionsCheckbox && (
66 <TableCell>
67 <BulkActionCheckbox
68 id={item.id}
69 name={item?.donor ?? item?.title ?? item?.donorInformation}
70 singleName={singleName}
71 />
72 </TableCell>
73 )}
74 <>
75 {columns?.map((column) => {
76 const columnFilter = columnGetFilter(column.id);
77
78 return (
79 <TableCell key={column.id} heading={columns[0].id === column.id} columnId={`${tableId}-${column.id}`}>
80 {columnFilter.length > 0 ? (
81 columnFilter[0].filter(item, column, data)
82 ) : (
83 <InterweaveSSR column={column} item={item} />
84 )}
85
86 {columns[0].id === column.id && !isLoading && rowActions && (
87 <div role="group" aria-label={__('Actions', 'give')} className={styles.tableRowActions}>
88 {rowActions({
89 data,
90 item,
91 removeRow,
92 addRow,
93 setUpdateErrors,
94 parameters,
95 listTableApi: new ListTableApi(apiSettings),
96 })}
97 </div>
98 )}
99 </TableCell>
100 );
101 })}
102 </>
103 </tr>
104 ));
105 }
106