PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.4.1
GiveWP – Donation Plugin and Fundraising Platform v3.4.1
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 / editor / Edit.tsx
give / src / DonationForms / Blocks / DonationFormBlock / resources / editor Last commit date
components 2 years ago hooks 2 years ago images 2 years ago styles 2 years ago types 2 years ago Edit.tsx 2 years ago
Edit.tsx
101 lines
1 import {useEffect, useState} from 'react';
2 import {useBlockProps} from '@wordpress/block-editor';
3 import {BlockEditProps} from '@wordpress/blocks';
4 import ServerSideRender from '@wordpress/server-side-render';
5 import DonationFormSelector from './components/DonationFormSelector';
6 import useFormOptions from './hooks/useFormOptions';
7 import DonationFormBlockControls from './components/DonationFormBlockControls';
8 import DonationFormBlockPreview from './components/DonationFormBlockPreview';
9 import type {BlockPreviewProps} from './components/DonationFormBlockPreview';
10
11 import './styles/index.scss';
12 import { __ } from '@wordpress/i18n';
13
14 /**
15 * @since 3.2.1
16 *
17 * @see 'class-give-block-donation-form.php'
18 */
19 type DonationFormBlockAttributes = {
20 id: number;
21 prevId: number;
22 blockId: string;
23 displayStyle: BlockPreviewProps['formFormat'];
24 continueButtonTitle: string;
25 showTitle: boolean;
26 showGoal: boolean;
27 showContent: boolean;
28 contentDisplay: string;
29 }
30
31 /**
32 * @since 3.2.1 added isResolving loading state to prevent forms from prematurely being rendered.
33 * @since 3.2.0 updated to handle v2 forms.
34 * @since 3.0.0
35 */
36 export default function Edit({attributes, isSelected, setAttributes, className, clientId}: BlockEditProps<any>) {
37 const {id, blockId, displayStyle, continueButtonTitle} = attributes as DonationFormBlockAttributes;
38 const {formOptions, isResolving} = useFormOptions();
39 const [showPreview, setShowPreview] = useState<boolean>(!!id);
40
41 const handleSelect = (id) => {
42 setAttributes({id});
43 setShowPreview(true);
44 };
45
46 useEffect(() => {
47 if (!blockId) {
48 setAttributes({blockId: clientId});
49 }
50
51 if (!isLegacyForm && displayStyle === 'reveal') {
52 setAttributes({displayStyle: 'modal'});
53 }
54 }, []);
55
56 const [isLegacyForm, isLegacyTemplate, link] = (() => {
57 const form = formOptions.find((form) => form.value === id);
58
59 return [form?.isLegacyForm, form?.isLegacyTemplate, form?.link];
60 })();
61
62 if (isResolving !== false) {
63 return <div {...useBlockProps()}>
64 <p>{__('Loading...', 'give')}</p>
65 </div>
66 }
67
68 return (
69 <div {...useBlockProps()}>
70 {id && showPreview ? (
71 <>
72 <DonationFormBlockControls
73 attributes={attributes}
74 setAttributes={setAttributes}
75 formOptions={formOptions}
76 isResolving={isResolving}
77 isLegacyTemplate={isLegacyTemplate}
78 isLegacyForm={isLegacyForm}
79 />
80
81 {isLegacyForm ? (
82 <div className={!!isSelected ? `${className} isSelected` : className}>
83 <ServerSideRender block="give/donation-form" attributes={attributes} />
84 </div>
85 ) : (
86 <DonationFormBlockPreview
87 clientId={clientId}
88 formId={id}
89 formFormat={displayStyle}
90 openFormButton={continueButtonTitle}
91 link={link}
92 />
93 )}
94 </>
95 ) : (
96 <DonationFormSelector formOptions={formOptions} isResolving={isResolving} handleSelect={handleSelect} />
97 )}
98 </div>
99 );
100 }
101