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 / DonationForms / Blocks / DonationFormBlock / resources / app / index.tsx
give / src / DonationForms / Blocks / DonationFormBlock / resources / app Last commit date
Components 2 years ago index.tsx 2 years ago
index.tsx
105 lines
1 import {createRoot, render} from '@wordpress/element';
2 import ModalForm from './Components/ModalForm';
3 import IframeResizer from 'iframe-resizer-react';
4
5 import '../editor/styles/index.scss';
6 import isRouteInlineRedirect from '@givewp/forms/app/utilities/isRouteInlineRedirect';
7
8 /**
9 * @since 3.2.1 Revert the display style value of "fullForm" to "onpage".
10 * @since 3.1.2
11 */
12 type DonationFormBlockAppProps = {
13 formFormat: 'onpage' | 'newTab' | 'modal' | string;
14 dataSrc: string;
15 embedId: string;
16 openFormButton: string;
17 formUrl: string;
18 formViewUrl: string;
19 };
20
21 /**
22 * @since 3.4.0
23 */
24 const inlineRedirectRoutes = ['donation-confirmation-receipt-view'];
25
26 /**
27 * @since 3.4.0
28 */
29 const isRedirect = (url: string) => {
30 const redirectUrl = new URL(url);
31 const redirectUrlParams = new URLSearchParams(redirectUrl.search);
32
33 return isRouteInlineRedirect(redirectUrlParams, inlineRedirectRoutes);
34 }
35
36 /**
37 * @since 3.4.0 add logic for inline redirects.
38 * @since 3.2.0 replace form format reveal with new tab.
39 * @since 3.0.0
40 */
41 function DonationFormBlockApp({formFormat, dataSrc, embedId, openFormButton, formUrl, formViewUrl}: DonationFormBlockAppProps) {
42 const isFormRedirect = isRedirect(dataSrc);
43
44 if (formFormat === 'newTab') {
45 return (
46 <a className={'givewp-donation-form-link'} href={formUrl} target={'_blank'} rel={'noopener noreferrer'}>
47 {openFormButton}
48 </a>
49 );
50 }
51
52 if (formFormat === 'modal' || formFormat === 'reveal') {
53 return <ModalForm openFormButton={openFormButton} dataSrc={dataSrc} embedId={embedId} openByDefault={isFormRedirect} isFormRedirect={isFormRedirect} formViewUrl={formViewUrl} />;
54 }
55
56 return (
57 <IframeResizer
58 id={embedId}
59 src={dataSrc}
60 checkOrigin={false}
61 style={{
62 width: '1px',
63 minWidth: '100%',
64 border: '0',
65 }}
66 />
67 );
68 }
69
70 const roots = document.querySelectorAll('.root-data-givewp-embed');
71
72 roots.forEach((root) => {
73 const dataSrc = root.getAttribute('data-src');
74 const embedId = root.getAttribute('data-givewp-embed-id');
75 const formFormat = root.getAttribute('data-form-format');
76 const openFormButton = root.getAttribute('data-open-form-button');
77 const formUrl = root.getAttribute('data-form-url');
78 const formViewUrl = root.getAttribute('data-form-view-url');
79
80 if (createRoot) {
81 createRoot(root).render(
82 <DonationFormBlockApp
83 openFormButton={openFormButton}
84 formFormat={formFormat}
85 dataSrc={dataSrc}
86 embedId={embedId}
87 formUrl={formUrl}
88 formViewUrl={formViewUrl}
89 />
90 );
91 } else {
92 render(
93 <DonationFormBlockApp
94 openFormButton={openFormButton}
95 formFormat={formFormat}
96 dataSrc={dataSrc}
97 embedId={embedId}
98 formUrl={formUrl}
99 formViewUrl={formViewUrl}
100 />,
101 root
102 );
103 }
104 });
105