PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.1.6
JetFormBuilder — Dynamic Blocks Form Builder v3.1.6
3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.1.0 2.1.1 2.1.10 2.1.11 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.0 3.0.0.1 3.0.0.2 3.0.0.3 3.0.1 3.0.1.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.0.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.3.1 3.3.4 3.3.4.1 3.3.4.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.5.1 3.4.5.2 3.4.6 3.4.7 3.4.7.1 3.5.0 3.5.1 3.5.1.1 3.5.1.2 3.5.2 3.5.2.1 3.5.3 3.5.4 3.5.5 3.5.6 3.5.6.1 3.5.6.2 3.5.6.3 3.6.0
jetformbuilder / assets / src / editor / form-actions / getresponse / render.js
jetformbuilder / assets / src / editor / form-actions / getresponse Last commit date
index.js 2 years ago render.js 2 years ago
render.js
200 lines
1 import IntegrationComponent from '../integration-component';
2
3 const {
4 addAction,
5 globalTab,
6 } = JetFBActions;
7
8 const {
9 WrapperRequiredControl,
10 } = JetFBComponents;
11
12 /**
13 * Internal dependencies
14 */
15 const {
16 TextControl,
17 ToggleControl,
18 SelectControl,
19 BaseControl,
20 Button,
21 __experimentalNumberControl,
22 } = wp.components;
23
24 let { NumberControl } = wp.components;
25
26 if ( typeof NumberControl === 'undefined' ) {
27 NumberControl = __experimentalNumberControl;
28 }
29
30 const { __ } = wp.i18n;
31
32 const { withRequestFields } = JetFBHooks;
33 const { withSelect } = wp.data;
34
35 class GetResponseAction extends IntegrationComponent {
36 constructor( props ) {
37 super( props );
38
39 this.formFieldsList = [
40 ...this.formFieldsList,
41 ...this.props.requestFields,
42 ];
43 }
44
45 getFields() {
46 const settings = this.props.settings;
47
48 if ( settings.data && settings.data.fields ) {
49 return Object.entries( settings.data.fields );
50 }
51 return [];
52 }
53
54 getLists() {
55 const settings = this.props.settings;
56
57 if ( settings.data && settings.data.lists ) {
58 return this.formatEntriesArray( settings.data.lists );
59 }
60 return [];
61 }
62
63 formatEntriesArray( entries = [], isNeedPlaceholder = true ) {
64 const placeholder = {
65 label: '--',
66 };
67 if ( !entries ) {
68 return [];
69 }
70
71 const options = Object.entries( entries ).map( ( [ value, label ] ) => {
72 return { value, label };
73 } );
74
75 return isNeedPlaceholder ? [ placeholder, ...options ] : options;
76 }
77
78 render() {
79 const { settings, onChange, source, label, help } = this.props;
80 const fields = this.getFields();
81 const currentTab = globalTab(
82 { slug: 'get-response-tab' } );
83
84 /* eslint-disable jsx-a11y/no-onchange */
85 return (
86 <React.Fragment key="getresponse">
87 <ToggleControl
88 key={ 'use_global' }
89 label={ label( 'use_global' ) }
90 checked={ settings.use_global }
91 onChange={ use_global => {
92 this.onChangeSetting( Boolean( use_global ),
93 'use_global' );
94 } }
95 />
96 <BaseControl
97 label={ label( 'api_key' ) }
98 >
99 <div className="jet-control-clear-full jet-d-flex-between">
100 <TextControl
101 disabled={ settings.use_global }
102 value={ settings.use_global
103 ? currentTab.api_key
104 : settings.api_key
105 }
106 onChange={ newVal => this.onChangeSetting( newVal,
107 'api_key' ) }
108 />
109 <Button
110 isPrimary
111 onClick={ () => {
112 settings.use_global
113 ? this.validateAPIKey( currentTab.api_key )
114 : this.validateAPIKey();
115 } }
116 className={ this.state.className.join( ' ' ) +
117 ' jet-form-validate-button' }
118 >
119 <i className="dashicons"/>
120 { label( 'validate_api_key' ) }
121 </Button>
122 </div>
123 </BaseControl>
124 <div className="jfb-margin-bottom--small">{ help(
125 'api_key_link_prefix' ) } <a
126 href={ help( 'api_key_link' ) }>{ help(
127 'api_key_link_suffix' ) }</a>
128 </div>
129 { settings.isValidAPI && <React.Fragment>
130 <BaseControl
131 label={ label( 'list_id' ) }
132 >
133 <div
134 className="jet-control-clear-full jet-d-flex-between">
135 <SelectControl
136 key="list_id"
137 className="full-width"
138 value={ settings.list_id }
139 onChange={ newVal => this.onChangeSetting(
140 newVal,
141 'list_id' ) }
142 options={ this.getLists() }
143 />
144 <Button
145 key={ 'update_list_ids' }
146 isPrimary
147 onClick={ () => {
148 settings.use_global
149 ? this.getApiData( settings.api_key )
150 : this.getApiData( currentTab.api_key );
151 } }
152 >
153 { label( 'update_list_ids' ) }
154 </Button>
155 </div>
156 </BaseControl>
157 <BaseControl
158 label={ label( 'day_of_cycle' ) }
159 >
160 <NumberControl
161 className="full-width jet-control-clear-full"
162 value={ settings.day_of_cycle }
163 onChange={ newVal => this.onChangeSetting(
164 Number( newVal ), 'day_of_cycle' ) }
165 />
166 </BaseControl>
167 <BaseControl
168 label={ label( 'fields_map' ) }
169 key="getresponse_fields_map"
170 >
171 <div className="jet-user-fields-map__list">
172 { fields.map(
173 ( [ fieldName, fieldData ], index ) => {
174
175 return <WrapperRequiredControl
176 field={ [ fieldName, fieldData ] }
177 >
178 <SelectControl
179 className="full-width"
180 key={ fieldName + index }
181 value={ this.getFieldDefault(
182 fieldName ) }
183 onChange={ value => this.onChangeFieldMap(
184 value, fieldName ) }
185 options={ this.formFieldsList }
186 />
187 </WrapperRequiredControl>;
188 } ) }
189 </div>
190 </BaseControl>
191 </React.Fragment> }
192 </React.Fragment>
193 );
194 /* eslint-enable jsx-a11y/no-onchange */
195 }
196
197 }
198
199 export default withSelect( withRequestFields )( GetResponseAction );
200