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