PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.15.0
GiveWP – Donation Plugin and Fundraising Platform v3.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 / 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
120 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({
42 formFormat,
43 dataSrc,
44 embedId,
45 openFormButton,
46 formUrl,
47 formViewUrl,
48 }: DonationFormBlockAppProps) {
49 const isFormRedirect = isRedirect(dataSrc);
50
51 if (formFormat === 'newTab') {
52 return (
53 <a className={'givewp-donation-form-link'} href={formUrl} target={'_blank'} rel={'noopener noreferrer'}>
54 {openFormButton}
55 </a>
56 );
57 }
58
59 if (formFormat === 'modal' || formFormat === 'reveal') {
60 return (
61 <ModalForm
62 openFormButton={openFormButton}
63 dataSrc={dataSrc}
64 embedId={embedId}
65 isFormRedirect={isFormRedirect}
66 formViewUrl={formViewUrl}
67 />
68 );
69 }
70
71 return (
72 <IframeResizer
73 id={embedId}
74 src={dataSrc}
75 checkOrigin={false}
76 style={{
77 width: '1px',
78 minWidth: '100%',
79 border: '0',
80 }}
81 />
82 );
83 }
84
85 const roots = document.querySelectorAll('.root-data-givewp-embed');
86
87 roots.forEach((root) => {
88 const dataSrc = root.getAttribute('data-src');
89 const embedId = root.getAttribute('data-givewp-embed-id');
90 const formFormat = root.getAttribute('data-form-format');
91 const openFormButton = root.getAttribute('data-open-form-button');
92 const formUrl = root.getAttribute('data-form-url');
93 const formViewUrl = root.getAttribute('data-form-view-url');
94
95 if (createRoot) {
96 createRoot(root).render(
97 <DonationFormBlockApp
98 openFormButton={openFormButton}
99 formFormat={formFormat}
100 dataSrc={dataSrc}
101 embedId={embedId}
102 formUrl={formUrl}
103 formViewUrl={formViewUrl}
104 />
105 );
106 } else {
107 render(
108 <DonationFormBlockApp
109 openFormButton={openFormButton}
110 formFormat={formFormat}
111 dataSrc={dataSrc}
112 embedId={embedId}
113 formUrl={formUrl}
114 formViewUrl={formViewUrl}
115 />,
116 root
117 );
118 }
119 });
120