PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.27.1
GiveWP – Donation Plugin and Fundraising Platform v2.27.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 / BulkActions / BulkActionCheckbox.tsx
give / src / Views / Components / ListTable / BulkActions Last commit date
BulkActionCheckbox.tsx 3 years ago BulkActionSelect.module.scss 3 years ago BulkActionSelect.tsx 3 years ago
BulkActionCheckbox.tsx
78 lines
1 import {__, sprintf} from '@wordpress/i18n';
2 import {useCallback, useContext, useEffect, useState} from 'react';
3 import {CheckboxContext} from '@givewp/components/ListTable/ListTablePage';
4
5 export const BulkActionCheckbox = ({id, name, singleName, data}) => {
6 const checkboxRefs = useContext(CheckboxContext);
7 // add this element's ref to the list of checkboxes so we can access them imperatively
8 const updateCheckboxRefs = useCallback(
9 (node) => {
10 if (node !== null && ! checkboxRefs?.current.includes(node)) {
11 checkboxRefs?.current.push(node);
12 }
13 },
14 [data]
15 );
16
17 useEffect(() => {
18 // cleanup function to remove the ref checked value when the component unmounts
19 return () => {
20 checkboxRefs.current.forEach((checkbox) => {
21 checkbox.checked = false;
22 });
23 checkboxRefs.current = checkboxRefs.current.filter((checkbox) => checkbox.dataset.id === id);
24 };
25 }, []);
26 return (
27 <>
28 <label
29 htmlFor={`giveListTableSelect${id}`}
30 id={`giveListTableSelect${id}-Label`}
31 className="give-visually-hidden"
32 >
33 {sprintf(__('Select %1s %2s', 'give'), singleName, id)}
34 </label>
35 <input
36 ref={updateCheckboxRefs}
37 className="giveListTableSelect"
38 data-id={id}
39 data-name={name ? name : null}
40 id={`giveListTableSelect${id}`}
41 aria-labelledby={`giveListTableSelect${id}-Label`}
42 type="checkbox"
43 />
44 </>
45 );
46 };
47
48 export const BulkActionCheckboxAll = ({pluralName, data}) => {
49 const checkboxRefs = useContext(CheckboxContext);
50 const [checked, setChecked] = useState(false);
51 // reset the 'Select all' checkbox when table contents change
52 useEffect(() => {
53 setChecked(false);
54 }, [data]);
55 return (
56 <>
57 <label htmlFor="giveListTableSelectAll" id="giveListTableSelectAll-Label" className="give-visually-hidden">
58 {sprintf(__('Select all %s', 'give'), pluralName)}
59 </label>
60 <input
61 id="giveListTableSelectAll"
62 type="checkbox"
63 className="giveListTableSelect"
64 aria-labelledby="giveListTableSelectAll-Label"
65 onChange={(event) => toggleAllRowCheckboxes(event, checkboxRefs, setChecked, checked)}
66 checked={checked}
67 />
68 </>
69 );
70 };
71
72 const toggleAllRowCheckboxes = (event, checkboxRefs, setChecked, checked) => {
73 checkboxRefs.current.forEach((checkbox) => {
74 checkbox.checked = !checked;
75 });
76 setChecked(!checked);
77 };
78