PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.15.0
GiveWP – Donation Plugin and Fundraising Platform v4.15.0
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 / ProductRecommendations / index.tsx
give / src / Views / Components / ListTable / ProductRecommendations Last commit date
index.tsx 9 months ago style.module.scss 9 months ago
index.tsx
80 lines
1 import React, {useState} from 'react';
2 import styles from './style.module.scss';
3 import {__} from '@wordpress/i18n';
4 import {RecommendedProductData, useRecommendations} from '@givewp/promotions/hooks/useRecommendations';
5
6 interface ProductRecommendationsProps {
7 apiSettings: {table; pluginUrl};
8 options: any;
9 }
10
11 /**
12 * @since 2.27.1
13 */
14 export default function ProductRecommendations({apiSettings, options}: ProductRecommendationsProps) {
15 const {getRandomRecommendation, getRecommendation, removeRecommendation} = useRecommendations(apiSettings, options);
16 const selectedOption = apiSettings === window.GiveDonors ? getRecommendation() : getRandomRecommendation();
17 const [showRecommendation, setShowRecommendation] = useState<boolean>(!!selectedOption);
18
19 const closeMessage = async (async) => {
20 setShowRecommendation(false);
21
22 await removeRecommendation({
23 option: selectedOption.enum,
24 });
25 };
26
27 if (!showRecommendation) {
28 return null;
29 }
30
31 return (
32 <RotatingMessage
33 columns={apiSettings.table.columns}
34 pluginUrl={apiSettings.pluginUrl}
35 selectedOption={selectedOption}
36 closeMessage={closeMessage}
37 />
38 );
39 }
40
41 interface RotatingMessageProps {
42 selectedOption: RecommendedProductData;
43 closeMessage: (async: any) => Promise<void>;
44 pluginUrl: string;
45 columns: Array<{visible: boolean}>;
46 }
47
48 /**
49 * @since 4.10.0 Refactor html structure to use a single p tag with a span and a link.
50 * @since 2.27.1
51 */
52 function RotatingMessage({selectedOption, closeMessage, pluginUrl, columns}: RotatingMessageProps) {
53 const {message = '', documentationPage = '', innerHtml = ''} = selectedOption;
54
55 const visibleColumns = columns?.filter((column) => column.visible || column.visible === undefined);
56
57 return (
58 <tr className={styles.productRecommendationRow}>
59 <td colSpan={visibleColumns.length + 1}>
60 <div className={styles.productRecommendation}>
61 <img src={`${pluginUrl}build/assets/dist/images/list-table/light-bulb-icon.svg`} />
62
63 <p className={styles.message}>
64 <strong>{__('PRO TIP: ', 'give')}</strong>
65 <span>{message}</span>
66 <a target="_blank" href={documentationPage}>
67 {innerHtml}
68 <img src={`${pluginUrl}build/assets/dist/images/list-table/external-link-icon.svg`} />
69 </a>
70 </p>
71
72 <button onClick={closeMessage}>
73 <img src={`${pluginUrl}build/assets/dist/images/list-table/circular-exit-icon.svg`} />
74 </button>
75 </div>
76 </td>
77 </tr>
78 );
79 }
80