PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.16.4
GiveWP – Donation Plugin and Fundraising Platform v3.16.4
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 1 year ago
index.tsx
106 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 createRoot(root).render(
96 <DonationFormBlockApp
97 openFormButton={openFormButton}
98 formFormat={formFormat}
99 dataSrc={dataSrc}
100 embedId={embedId}
101 formUrl={formUrl}
102 formViewUrl={formViewUrl}
103 />
104 );
105 });
106