PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.4.1
GiveWP – Donation Plugin and Fundraising Platform v3.4.1
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 / Promotions / InPluginUpsells / resources / js / components / FreeAddOnTab.js
give / src / Promotions / InPluginUpsells / resources / js / components Last commit date
AdditionalAddonCard.js 4 years ago AdditionalAddonCard.module.css 4 years ago AdditionalAddons.js 4 years ago AdditionalAddons.module.css 4 years ago AddonsAdminPage.js 2 years ago AddonsAdminPage.module.css 2 years ago Button.js 4 years ago Button.module.css 4 years ago Card.js 4 years ago Card.module.css 4 years ago FreeAddOnTab.js 4 years ago FreeAddOnTab.module.css 4 years ago Hero.js 4 years ago Hero.module.css 4 years ago MustHaveAddonCard.js 4 years ago MustHaveAddonCard.module.css 4 years ago MustHaveAddons.js 4 years ago MustHaveAddons.module.css 4 years ago PricingPlanCard.js 4 years ago PricingPlanCard.module.css 4 years ago PricingPlans.js 2 years ago PricingPlans.module.css 4 years ago
FreeAddOnTab.js
88 lines
1 import {useRef} from 'react';
2 import cx from 'classnames';
3
4 import GreenButton from '@givewp/promotions/components/GreenButton';
5 import useFreeAddonSubscription from '@givewp/promotions/hooks/useFreeAddonSubscription';
6
7 import styles from './FreeAddOnTab.module.css';
8 import {Hero} from './Hero';
9 import {Card} from './Card';
10 import {transformStrong} from '../utils';
11
12 const {heading, description, reports, form} = window.GiveAddons.freeAddon;
13 const {siteUrl, siteName} = window.GiveAddons;
14
15 export const FreeAddOnTab = () => {
16 const {userSubscribed, hasSubscriptionError, subscribeUser} = useFreeAddonSubscription();
17 const firstNameInput = useRef();
18 const emailInput = useRef();
19
20 const handleSubscribe = async (event) => {
21 event.preventDefault();
22
23 await subscribeUser(firstNameInput.current.value, emailInput.current.value, siteUrl, siteName);
24 };
25
26 return (
27 <article className={styles.freeAddonSection}>
28 <Hero heading={heading} description={description} />
29 <Card as="article" className={cx(styles.card, styles.emailReports)}>
30 <div>
31 <div className={styles.nameAndFlag}>
32 <h3 className={styles.title}>
33 <img className={styles.icon} src={reports.icon} alt={reports.heading} />
34 {reports.heading}
35 </h3>
36 </div>
37 <div className={styles.description}>
38 {reports.description.map((text, index) => (
39 <p dangerouslySetInnerHTML={{__html: transformStrong(text)}} key={index}></p>
40 ))}
41 </div>
42 </div>
43 <aside className={styles.includes}>
44 <h4>{reports.highlights.heading}</h4>
45 {reports.highlights.items.map(({icon, text}, index) => (
46 <div className={styles.nameAndFlag} key={index}>
47 <img className={styles.icon} src={icon} alt="Icon" />
48 <strong>{text}</strong>
49 </div>
50 ))}
51 </aside>
52 </Card>
53 <Hero heading={form.heading} className={styles.informationHero} />
54 <Card className={cx(styles.card, styles.formCard)}>
55 {userSubscribed ? (
56 <span className={styles.formCard__thankYou}>{form.submissionConfirmation}</span>
57 ) : (
58 <>
59 {hasSubscriptionError && (
60 <div className={styles.submissionError}>
61 There was an issue submitting your information. Please try again. If the problem
62 persists, try refreshing the page. If it still doesn't work, please{' '}
63 <a href="https://givewp.com/support" target="_blank">
64 contact support.
65 </a>
66 </div>
67 )}
68 <form onSubmit={handleSubscribe}>
69 <div className={styles.formCard__inputs}>
70 <label>
71 <span>First Name</span>
72 <input type="text" name="firstName" required ref={firstNameInput} />
73 </label>
74 <label>
75 <span>Email Address</span>
76 <input type="email" name="email" required ref={emailInput} />
77 </label>
78 </div>
79 <GreenButton as="input" text={form.submitButton} shadow />
80 </form>
81 <em className={styles.disclosure}>{form.disclaimer}</em>
82 </>
83 )}
84 </Card>
85 </article>
86 );
87 };
88