PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.6
GiveWP – Donation Plugin and Fundraising Platform v4.16.6
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 / PaymentGateways / Gateways / Offline / resources / formBuilder / withOfflineInspectorControls.tsx
give / src / PaymentGateways / Gateways / Offline / resources / formBuilder Last commit date
addOfflineAttributes.ts 2 years ago index.tsx 2 years ago useSetDefaultAttributes.ts 2 years ago withOfflineInspectorControls.tsx 2 years ago
withOfflineInspectorControls.tsx
126 lines
1 import {createHigherOrderComponent} from '@wordpress/compose';
2 import {InspectorControls} from '@wordpress/block-editor';
3 import {__} from '@wordpress/i18n';
4 import {PanelBody, PanelRow, ToggleControl} from '@wordpress/components';
5 import {createInterpolateElement} from '@wordpress/element';
6 import ControlForPopover from '@givewp/form-builder/components/settings/ControlForPopover';
7 import PopoverContentWithTemplateTags from '@givewp/form-builder/components/settings/PopoverContentWithTemplateTags';
8
9 import useSetDefaultAttributes from './useSetDefaultAttributes';
10 import {offlineAttributes} from './addOfflineAttributes';
11 import usePopoverState from '@givewp/form-builder/hooks/usePopoverState';
12
13 declare const window: {
14 giveOfflineGatewaySettings: {
15 offlineSettingsUrl: string;
16 };
17 } & Window;
18
19 type OfflineAttributes = {
20 offlineEnabled?: boolean;
21 offlineUseGlobalInstructions?: boolean;
22 offlineDonationInstructions?: string;
23 };
24
25 type OfflineSetAttributes = (attributes: OfflineAttributes) => void;
26
27 const offlineInstructionTags = [
28 {
29 id: 'offline_mailing_address',
30 description: __('The mailing address provided to the donor to send their payment to.', 'give'),
31 },
32 {
33 id: 'sitename',
34 description: __('The name of this website.', 'give'),
35 },
36 ];
37
38 function OfflineInspectorControls({
39 attributes,
40 setAttributes,
41 }: {
42 setAttributes: OfflineSetAttributes;
43 attributes: OfflineAttributes;
44 }) {
45 const {isOpen: isInstructionsOpen, toggle: toggleInstructions, close: closeInstructions} = usePopoverState();
46 useSetDefaultAttributes(attributes, setAttributes, offlineAttributes);
47
48 const windowSettings = window.giveOfflineGatewaySettings;
49 const textWithLinkToOfflineSettings = (textTemplate: string) =>
50 createInterpolateElement(textTemplate, {
51 a: <a href={windowSettings.offlineSettingsUrl} target="_blank" />,
52 });
53
54 const globalDefaultHelper = textWithLinkToOfflineSettings(
55 __(
56 'Global instructions are defined in the <a>Global Settings</a>. When disabled, custom instructions can be written for this form',
57 'give'
58 )
59 );
60
61 return (
62 <InspectorControls>
63 <PanelBody title={__('Offline Donations', 'give')}>
64 <PanelRow>
65 <ToggleControl
66 label={__('Enable offline donations', 'give')}
67 checked={attributes.offlineEnabled}
68 onChange={(value) => setAttributes({offlineEnabled: value})}
69 />
70 </PanelRow>
71 {attributes.offlineEnabled && (
72 <PanelRow>
73 <ToggleControl
74 label={__('Use global instructions', 'give')}
75 checked={attributes.offlineUseGlobalInstructions}
76 onChange={(value) => setAttributes({offlineUseGlobalInstructions: value})}
77 help={globalDefaultHelper}
78 />
79 </PanelRow>
80 )}
81 {attributes.offlineEnabled && !attributes.offlineUseGlobalInstructions && (
82 <PanelRow>
83 <ControlForPopover
84 id="offline-donation-instructions"
85 help={__(
86 'Enter the instructions you want to display to the donor during the donation process. Most likely this would include important information like mailing address and who to make the check out to',
87 'give'
88 )}
89 heading={__('Donation Instructions', 'give')}
90 onButtonClick={toggleInstructions}
91 isButtonActive={isInstructionsOpen}
92 >
93 {isInstructionsOpen && (
94 <PopoverContentWithTemplateTags
95 onContentChange={(content) => setAttributes({offlineDonationInstructions: content})}
96 heading={__('Donation Instructions', 'give')}
97 content={attributes.offlineDonationInstructions}
98 templateTags={offlineInstructionTags}
99 onClose={closeInstructions}
100 richText
101 />
102 )}
103 </ControlForPopover>
104 </PanelRow>
105 )}
106 </PanelBody>
107 </InspectorControls>
108 );
109 }
110
111 const withInspectorControls = createHigherOrderComponent((BlockEdit) => {
112 return (props) => {
113 if (props.name === 'givewp/payment-gateways') {
114 return (
115 <>
116 <BlockEdit {...props} />
117 <OfflineInspectorControls {...props} />
118 </>
119 );
120 }
121 return <BlockEdit {...props} />;
122 };
123 }, 'withInspectorControl');
124
125 export default withInspectorControls;
126