PluginProbe
Contact Forms by Cimatti / 2.3.5
Contact Forms by Cimatti v2.3.5
2.3.6 2.3.5 2.3.0 2.2.32 2.2.4 2.2.0 2.1.2 2.1.1 trunk 1.0 1.1 1.2 1.2.1 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 All 62 releases
contact-forms / block-editor / index.js

index.js in Contact Forms by Cimatti 2.3.5, at block-editor/index.js

93 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 ( function () {
2 var el = wp.element.createElement;
3 var __ = wp.i18n.__;
4 var registerBlockType = wp.blocks.registerBlockType;
5 var useBlockProps = wp.blockEditor.useBlockProps;
6 var InspectorControls = wp.blockEditor.InspectorControls;
7 var PanelBody = wp.components.PanelBody;
8 var SelectControl = wp.components.SelectControl;
9 var Placeholder = wp.components.Placeholder;
10 var ServerSideRender = wp.serverSideRender;
11
12 var forms = ( window.accua_forms_block_data || {} ).forms || [];
13
14 var options = [
15 { label: __( 'Select a form', 'contact-forms' ), value: 0 }
16 ];
17 for ( var i = 0; i < forms.length; i++ ) {
18 options.push( {
19 label: forms[ i ].text + ' (ID ' + forms[ i ].value + ')',
20 value: parseInt( forms[ i ].value, 10 )
21 } );
22 }
23
24 function getFormLabel( formId ) {
25 for ( var i = 0; i < forms.length; i++ ) {
26 if ( parseInt( forms[ i ].value, 10 ) === formId ) {
27 return forms[ i ].text;
28 }
29 }
30 return '';
31 }
32
33 registerBlockType( 'contact-forms/form-selector', {
34 edit: function ( props ) {
35 var blockProps = useBlockProps();
36 var formId = props.attributes.formId;
37
38 var selector = el( SelectControl, {
39 label: __( 'Contact Form', 'contact-forms' ),
40 value: formId,
41 options: options,
42 onChange: function ( val ) {
43 props.setAttributes( { formId: parseInt( val, 10 ) } );
44 },
45 __nextHasNoMarginBottom: true
46 } );
47
48 var inspectorPanel = el(
49 InspectorControls,
50 null,
51 el( PanelBody, { title: __( 'Form Settings', 'contact-forms' ) }, selector )
52 );
53
54 if ( ! formId ) {
55 return el(
56 'div',
57 blockProps,
58 inspectorPanel,
59 el(
60 Placeholder,
61 {
62 icon: 'email-alt',
63 label: __( 'Contact Form', 'contact-forms' ),
64 instructions: __( 'Select a form to display.', 'contact-forms' )
65 },
66 selector
67 )
68 );
69 }
70
71 return el(
72 'div',
73 blockProps,
74 inspectorPanel,
75 el( ServerSideRender, {
76 block: 'contact-forms/form-selector',
77 attributes: props.attributes,
78 EmptyResponsePlaceholder: function () {
79 return el(
80 Placeholder,
81 {
82 icon: 'email-alt',
83 label: __( 'Contact Form', 'contact-forms' )
84 },
85 el( 'p', null, __( 'Form not found.', 'contact-forms' ) )
86 );
87 }
88 } )
89 );
90 }
91 } );
92 } )();
93