PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.5
GiveWP – Donation Plugin and Fundraising Platform v4.16.5
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 / ProductRecommendations / index.tsx
give / src / Views / Components / ListTable / ProductRecommendations Last commit date
index.tsx 10 months ago style.module.scss 10 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