| 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 |
|